Next free-source hunt
We check for new free data every weekday.
Datasets / Agriculture & Food
esmis.nal.usda.gov/

USDA ESMIS WASDE releases

Freeauth: noneCustom#agriculture-food#historical-data#time-series#commodities#risk✓ verified Nov 1, 2026

USDA ESMIS WASDE releases

USDA World Agricultural Supply and Demand Estimates releases indexed by the keyless ESMIS JSON API and downloadable as XML, XLS, text and PDF for recent vintages. Release metadata includes date, title and file URLs, while the machine files contain commodity, country or region, market year, forecast month, supply-and-use attributes, units and values; no key is needed.

Required Attribution:

Requested credit: "National Agricultural Library, Agricultural Research Service, U.S. Department of Agriculture."

Coverage

WASDE covers annual U.S. and world forecasts for wheat, rice, coarse grains, oilseeds and cotton, plus selected U.S. animal products and sugar and Mexico sugar. It is released monthly, and the ESMIS archive filter reaches January 1974, though machine-readable format availability varies by vintage; the releases API returns 25 results per page by default.

Verdict

WASDE supplies a scheduled supply-and-demand forecast signal for major global agricultural commodities. Successive monthly releases revise estimates and projections, so change analysis should retain each vintage instead of overwriting history. Tables mix market-year conventions, units, estimates and forecasts, and the XML mirrors report layout rather than a single tidy schema. The archive is long, but older releases do not consistently offer the same machine-readable formats as current releases.

Get the free weekly email

Free weekly email of newly verified free data. Unsubscribe by emailing us.

Use in your agent

Load the latest WASDE XML cells into pandas and Parquet. Checked against the provider's documentation on Nov 1, 2026.

Raw skill file (/skills/usda-esmis-wasde.md)Also in our MCP server: call get_ingestion_skill with {"slug": "usda-esmis-wasde"}.

Access

  • No account or key is required for the read-only ESMIS API or the linked release files.
  • The release endpoint identifies the latest XML file without hard-coding a release path.

Request

bash
curl 'https://esmis.nal.usda.gov/api/v1/release/findByPubId/1659?page=0'

Format

Paginated JSON release metadata with file URLs. Current WASDE releases link PDF, text, XLS and hierarchical XML files whose Cell elements inherit report, commodity, geography, market-year, forecast-month, attribute and unit context.

Load into pandas and Parquet

Needs Python 3 with requests, pandas and pyarrow.

python
"""Latest ESMIS WASDE XML cells -> pandas -> Parquet. No key."""
import io
import xml.etree.ElementTree as ET
import requests
import pandas as pd

API = "https://esmis.nal.usda.gov/api/v1/release/findByPubId/1659?page=0"
headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64) SignalLabCheck/1.0"}
meta = requests.get(API, headers=headers, timeout=60)
meta.raise_for_status()
release = meta.json()["results"][0]
xml_url = next(url for url in release["files"] if url.endswith(".xml"))
r = requests.get(xml_url, headers=headers, timeout=120)
r.raise_for_status()
root = ET.parse(io.BytesIO(r.content)).getroot()
rows = []
def walk(node, context, path):
    current = dict(context)
    current.update(node.attrib)
    here = f"{path}/{node.tag}"
    if node.tag == "Cell":
        rows.append({"release_datetime": release["release_datetime"], "path": here, **current})
    for child in node:
        walk(child, current, here)
walk(root, {}, "")
df = pd.DataFrame(rows)
df.to_parquet("usda_esmis_wasde_latest.parquet", index=False)
print(len(df), "WASDE XML cells", release["release_datetime"], len(df.columns), "columns")

Run by us on 2026-11-01 (python 3.13.5 | pandas 3.1.0 | pyarrow 26.0.0 | requests 2.34.2). Result: 11551 WASDE XML cells 2026-10-09T12:00:00+0000 106 columns

Limits

  • Rate limit: Not stated.
  • The ESMIS API returns 25 releases per page by default.
  • Machine-readable file availability varies across the archive.

Quirks

  • The XML is a hierarchical rendering of many report tables, not one rectangular dataset; the sample preserves inherited context and XML paths.
  • Attribute names are table-specific, producing sparse columns after flattening.
  • Retain release_datetime because monthly releases revise prior estimates and forecasts.

Terms and attribution

  • NAL says most information on its website is public domain and may be distributed or copied.
  • NAL requests a byline credit and notes that specifically labelled third-party material can have separate restrictions.

Sources

Information and education only. Not financial, investment, legal or tax advice. Listings can be inaccurate, incomplete or out of date and are provided "as is". Free tiers, limits and licenses belong to each provider and can change, so check the provider's own terms before you rely on them. Terms & Disclaimer