Grains production: area, yield and output by country (USDA FAS PSD)
Area harvested (thousand ha), yield (MT/ha) and production (thousand MT) for 9 grain commodities (wheat, rice milled, corn, sorghum, barley, millet, oats, rye, mixed grain) across ~160 countries plus aggregates, marketing years 1960/61 to the present, from USDA FAS PSD Online (https://apps.fas.usda.gov/psdonline/downloads/psd_grains_pulses_csv.zip). Each row is one (commodity, country, marketing year, attribute): area harvested in thousand hectares, yield in metric tons per hectare, production in thousand metric tons (rice also carries rough production and milling rate). Method: USDA's official PSD forecasts, reviewed monthly by an interagency committee chaired by the World Agricultural Outlook Board; historical rows carry the vintage (vintage_year, vintage_month) of the PSD release that last revised them. Units: thousand ha / MT per ha / thousand MT. Caveats: marketing years start in different calendar months per country/commodity — never compare market_year labels across countries as calendar years; EU member states appear only as EU aggregates (EU15 before 1999, EU from 1999); the latest 1-2 marketing years are forecasts subject to revision; country codes are FIPS 10-4 mapped to ISO alpha-3 (see connector docs for historical entities). Coverage: worldwide, 1960/61 to present, yearly (marketing-year) granularity. Provenance: USDA FAS PSD Online keyless bulk CSV, U.S. public domain — please cite the U.S. Department of Agriculture, Foreign Agricultural Service. Primary key: (commodity_code, country_code, market_year, attribute). Join keys: country_code (ISO 3166-1 alpha-3), market_year. Cadence: refreshed monthly (WASDE cycle); new marketing-year data typically appears within days of the monthly release.
- Rows
- 131,539
- Columns
- 10
- Source cadence
- Monthly
- Last refreshed
- Sep 23, 2026
- Theme
- economy
| Column | Type | Description |
|---|---|---|
| commodity_code | string | FAS 7-digit commodity code, zero-padded (e.g. 0410000 = Wheat, 0440000 = Corn). |
| commodity | string | Commodity description as published by FAS. |
| country_code | string | ISO 3166-1 alpha-3 country code, resolved from the provider's FIPS 10-4 code via the country name (FIPS codes collide with ISO alpha-2, so the code itself is never used directly). Historical entities and aggregates keep stable documented codes: EU (European Union), EU15 (EU-15), YUG (former Yugoslavia), YUG_FRY ('Yugoslavia (>05/92)' file label), SUN (USSR), YMD (South Yemen), CSK (Czechoslovakia), SCG (Serbia and Montenegro). |
| country_name | string | Country/aggregate name as published by FAS. |
| market_year | integer | Local marketing year of the observation (e.g. 2026 = the 2026/27 marketing year). Marketing years start in different calendar months per country and commodity, so market_year labels must not be compared across countries as calendar years. |
| vintage_year | integer | Calendar year of the PSD release in which this row's estimate was last revised (provider's Calendar_Year column; observed to track the monthly WASDE release cycle). |
| vintage_month | integer | Calendar month (1-12) of the PSD release in which this row's estimate was last revised (provider's Month column). |
| attribute | string | Canonical PSD attribute (area_harvested, yield, production, rough_production, milling_rate, beginning_stocks, imports, ty_imports, ty_imports_from_us, total_supply, exports, ty_exports, domestic_consumption, feed_consumption, fsi_consumption, ending_stocks, total_distribution). TY- prefixed attributes are on the October-September trade year; the rest follow the local marketing year. |
| unit | string | Canonical unit: 1000_ha = thousand hectares, 1000_mt = thousand metric tons, mt_per_ha = metric tons per hectare. |
| value | float | Attribute value in the stated unit. The latest 1-2 marketing years are forecasts subject to revision. |
First 10 sample rows — a preview, not the complete dataset.
| commodity_code | commodity | country_code | country_name | market_year | vintage_year | vintage_month | attribute | unit | value |
|---|---|---|---|---|---|---|---|---|---|
| 0410000 | Wheat | AFG | Afghanistan | 1,960 | 2,006 | 7 | area_harvested | 1000_ha | 2,230 |
| 0410000 | Wheat | AFG | Afghanistan | 1,960 | 2,006 | 7 | production | 1000_mt | 2,279 |
| 0410000 | Wheat | AFG | Afghanistan | 1,960 | 2,006 | 7 | yield | mt_per_ha | 1.02 |
| 0410000 | Wheat | AFG | Afghanistan | 1,961 | 2,006 | 7 | area_harvested | 1000_ha | 2,230 |
| 0410000 | Wheat | AFG | Afghanistan | 1,961 | 2,006 | 7 | production | 1000_mt | 2,279 |
| 0410000 | Wheat | AFG | Afghanistan | 1,961 | 2,006 | 7 | yield | mt_per_ha | 1.02 |
| 0410000 | Wheat | AFG | Afghanistan | 1,962 | 2,006 | 7 | area_harvested | 1000_ha | 2,341 |
| 0410000 | Wheat | AFG | Afghanistan | 1,962 | 2,006 | 7 | production | 1000_mt | 2,279 |
| 0410000 | Wheat | AFG | Afghanistan | 1,962 | 2,006 | 7 | yield | mt_per_ha | 0.97 |
| 0410000 | Wheat | AFG | Afghanistan | 1,963 | 2,006 | 7 | area_harvested | 1000_ha | 2,341 |
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/usda_fas/usda_fas_grains_production" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/usda_fas/usda_fas_grains_production").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/usda_fas/usda_fas_grains_production
Tip: fetch /llms.txt for the full machine-readable catalog.