Data HubContributeData Hub on GitHub

EcoCrop crop ecological requirements database

Food and Agriculture Organization of the United Nations

Version1
licenseCC-BY-4.0created2026-10-09updated2026-10-14

Overview

Expert-compiled ecological requirements for 2,568 plant species from the FAO EcoCrop database: optimal and absolute ranges of temperature, rainfall, soil pH, latitude and altitude, killing temperatures, crop cycle length in days, plus categorical soil, light, photoperiod, climate zone and life-form attributes. One row per species, keyed by EcoPort code. The table is a cleaned copy of the CSV snapshot published by the OpenCLIM EcoCrop suitability model (UK Centre for Ecology & Hydrology), with the FAO column codes kept so values map directly onto EcoCrop-type suitability models.

Important note

Values are expert estimates of uneven provenance, not measurements. 495 of 2,568 species have no temperature or rainfall thresholds at all; killing temperature is missing for 1,411. A few rows hold obvious errors in the source (latitude limits above 90, an optimal minimum temperature of 160 for Barringtonia racemosa) that are kept as published. EcoCrop records rainfall as an annual total; suitability models usually apply it over the crop cycle (gmin to gmax days).

Quick start

Python
import pandas as pd

url = "https://digital-atlas.s3.amazonaws.com/cdh/data/ecocrop/ecocrop.parquet"
df = pd.read_parquet(url)

Full access details and endpoints

Intended uses

  • parameterising EcoCrop-type climatic suitability models with temperature, rainfall and crop-cycle thresholds
  • screening candidate crops for a location by temperature, rainfall, soil and photoperiod requirements
  • looking up species attributes by scientific name, EcoPort code or use category

Not recommended for

Treating thresholds as validated field or trial results.

Why: Values are expert estimates with no per-species provenance, and some rows hold obvious errors.

Applying the rainfall thresholds as growing-season totals without checking.

Why: EcoCrop records rainfall as an annual total; suitability models reinterpret it over the crop cycle and results differ.

Commodities

Access & use

Files, endpoints, and worked examples for each distribution.

Data

table293 KB

One row per species.

Format: Apache Parquet — best for tabular analysis, with fast filtered reads in pandas, R, or DuckDB

Variables: scientificname, auth, famname, syno, comname, lifo +48 more

Dimensions: ecoportcode

Data dictionary →

Access the dataDownload

https://digital-atlas.s3.amazonaws.com/cdh/data/ecocrop/ecocrop.parquet

Usage examples

Python
import duckdb

url = "https://digital-atlas.s3.amazonaws.com/cdh/data/ecocrop/ecocrop.parquet"

# Fetches only the columns and row groups the query needs
df = duckdb.sql(f"""
    SELECT *            -- or name the columns you need
    FROM read_parquet('{url}')
    -- WHERE <column> = '<value>'
    LIMIT 100
""").df()
Other access methods
S3:s3://digital-atlas/cdh/data/ecocrop/ecocrop.parquet

Additional assets

column lookupmetadatadescribedby2 KB

Source column code to description list from the OpenCLIM repository.

Format: text/csv

Data dictionary

What each file holds. A layout describes how the data is stored in a file: its variables, the dimensions they vary over, and any keys.

File layouts

FilesFormatVariablesDimensions
tableApache Parquetscientificname, auth, famname, syno +50 moreecoportcode

Variables

VariableTypeUnitDescription
scientificnamestring—Accepted scientific name (genus and species).
authstring—Taxonomic authority for the scientific name.
famnamestring—Classification path class:subclass:order:family, colon-separated.
synoarray—Synonyms, split on commas outside parentheses; items are free text as published. List of strings.
comnamearray—Common names in many languages, split on commas outside parentheses. List of strings.
lifoarray—Life form: tree, shrub, herb, grass, vine, or combinations. List of strings.
habiarray—Growth habit: erect, prostrate/procumbent/semi-erect, climber/scrambler/scadent. List of strings.
lispaarray—Life span: annual, biennial, perennial. List of strings.
physarray—Physiology: single stem, multi stem, evergreen, deciduous, C3/C4 and similar. List of strings.
catarray—Use category: cereals & pseudocereals, vegetables, forage/pasture, forest/wood, medicinals & aromatic, and others. List of strings.
platarray—Plant attributes: grown on large scale, grown on small scale, harvested from wild. List of strings.
prosyarray—Production system: large scale/commercial, small scale (manual), home garden, and others. List of strings.
topmnint64degCOptimal minimum temperature.
topmxint64degCOptimal maximum temperature.
tminint64degCAbsolute minimum temperature; growth stops below this.
tmaxint64degCAbsolute maximum temperature; growth stops above this.
ktmpint64degCKilling temperature during early growth. Missing for 1,411 species.
ktmprint64degCKilling temperature during rest (dormancy). Missing for 1,411 species.
ropmnint64mmOptimal minimum rainfall, recorded by EcoCrop as an annual total.
ropmxint64mmOptimal maximum rainfall, annual total.
rminint64mmAbsolute minimum rainfall, annual total.
rmaxint64mmAbsolute maximum rainfall, annual total.
gminint64dMinimum crop cycle, days from sowing or planting to harvest.
gmaxint64dMaximum crop cycle in days. Perennials are commonly recorded as 365.
phopmnfloat64[pH]Optimal minimum soil pH.
phopmxfloat64[pH]Optimal maximum soil pH.
phminfloat64[pH]Absolute minimum soil pH.
phmaxfloat64[pH]Absolute maximum soil pH.
latopmnfloat64degreeOptimal minimum latitude, absolute value in degrees from the equator.
latopmxfloat64degreeOptimal maximum latitude, degrees from the equator.
latmnfloat64degreeAbsolute minimum latitude, degrees from the equator. A few source rows exceed 90 and are errors.
latmxfloat64degreeAbsolute maximum latitude, degrees from the equator. A few source rows exceed 90 and are errors.
altmxint64mAbsolute maximum altitude.
liopmnstring—Optimal minimum light intensity: very bright, clear skies, cloudy skies, light shade, heavy shade.
liopmxstring—Optimal maximum light intensity, same classes as liopmn.
limnstring—Absolute minimum light intensity, same classes as liopmn.
limxstring—Absolute maximum light intensity, same classes as liopmn.
photoarray—Photoperiod sensitivity: short day (<12 hours), neutral day (12-14 hours), long day (>14 hours). List of strings.
clizarray—Climate zones where the species is grown, Köppen-style labels as published, e.g. tropical wet & dry (Aw), subtropical humid (Cf). List of strings.
depstring—Optimal soil depth: very shallow (<20 cm), shallow (20-50 cm), medium (50-150 cm), deep (>>150 cm).
deprstring—Absolute soil depth, same classes as dep.
textarray—Optimal soil texture: heavy, medium, light, organic, wide. List of strings.
textrarray—Absolute soil texture, same classes as text. List of strings.
ferstring—Optimal soil fertility: high, moderate, low.
ferrstring—Absolute soil fertility, same classes as fer.
toxstring—Optimal soil aluminium toxicity as share of cation exchange capacity: none (<5%), low (6-15%), medium (16-25%), high (>25%). Mostly empty.
toxrstring—Absolute soil aluminium toxicity, same classes as tox.
salstring—Optimal soil salinity: none, low (<4 dS/m), medium (4-10 dS/m), high (>10 dS/m).
salrstring—Absolute soil salinity, same classes as sal.
draarray—Optimal soil drainage: well (dry spells), poorly (saturated >50% of year), excessive (dry/moderately dry). List of strings.
drararray—Absolute soil drainage, same classes as dra. List of strings.
abitolarray—Abiotic tolerances: drought, flooding, fire, wind, salinity, frost, and others. List of strings.
abisusarray—Abiotic susceptibilities, same classes as abitol. List of strings.
intriarray—Introduction risk: can become a weed, poisonous to man or animals, susceptible to nematodes, and others. List of strings.

Dimensions

ecoportcodecrop

EcoPort species code, the EcoCrop primary key. One row per species. The FAO datasheet for a code is https://ecocrop.apps.fao.org/ecocrop/srv/en/dataSheet?id=<ecoportcode>.

Type: integer

Coded against: https://ecocrop.apps.fao.org/ecocrop/srv/en/home

Provenance

Ordered processing steps, from source to publication.

  1. source

    FAO EcoCrop database as exported to CSV in the OpenCLIM EcoCrop suitability model repository (2,568 species, 55 columns, Windows-1252 encoded, missing values as "NA" or empty). FAO no longer offers a bulk download, so the copy pinned at commit ea43ecd is the reference source. Checked against the live FAO tool on 2026-10-09: same species set, IDs, names and values.

    Derived from: FAO EcoCrop database ↗, EcoCrop_DB.csv in the OpenCLIM ecocrop repository, pinned at commit ea43ecd (2022-03-01) ↗

  2. clean2026-10-09

    Decoded from Windows-1252 to UTF-8, column names lowercased, "NA" and empty strings set to null, numeric columns typed, multi-valued columns split on commas (outside parentheses for synonyms and common names) into list<string>, values trimmed. No rows dropped or values corrected. Written as one Parquet file sorted by ecoportcode.

    Code: ecocrop.py ↗ @ 5eaee18

How to cite

Please cite the dataset and any associated peer-reviewed publications.

Food and Agriculture Organization of the United Nations (2025) ECOCROP, the crop ecological requirements database. Version 1. https://data.apps.fao.org/catalog/dataset/ecocrop. Accessed through the CGIAR Climate Action Data Hub, https://cgiar-climate-data-hub.github.io/catalog/ecocrop_1/.
BibTeX
BibTeX
@misc{ecocrop_2025,
  title     = {ECOCROP, the crop ecological requirements database},
  author    = {{Food and Agriculture Organization of the United Nations}},
  year      = {2025},
  version   = {1},
  url       = {https://data.apps.fao.org/catalog/dataset/ecocrop},
  note      = {Accessed through the CGIAR Climate Action Data Hub, https://cgiar-climate-data-hub.github.io/catalog/ecocrop_1/}
}

Attribution

Reproduce this credit line wherever you reuse the data.

Source data from the FAO EcoCrop database, Food and Agriculture Organization of the United Nations.

Contacts

Who produced this dataset, and who to reach about it.

Brayden YoungbergMaintainer
Alliance of Bioversity International and CIAT
ProcessorPoint of contact
Food and Agriculture Organization of the United NationsLicensor
Producer
Matt James Brown
UK Centre for Ecology & Hydrology
Processor