Free U.S. food recall API
A normalized, de-duplicated JSON feed of current U.S. food recalls, merged from the FDA (openFDA food enforcement) and USDA (FSIS) and refreshed daily, with a fast path that picks up major recalls within about 15 minutes. Free to use, including commercially, under CC BY 4.0 — all we ask is a visible credit with a link. No key, no signup, no rate limit. Currently 634 recalls, 276 of them Class I.
Endpoints
/api/recalls.jsonfull current feed/api/recalls-latest.json20 most recent
curl -s https://dailyfoodrecalls.com/api/recalls-latest.json | jq '.recalls[0]'
Both are static JSON over a CDN — no authentication, and cheap for us to serve, which is why there is no quota. Please cache rather than polling: the data changes at most every 15 minutes.
Response shape
{
"generated": "2026-10-17",
"source": "FDA openFDA + USDA FSIS",
"license": "CC BY 4.0",
"attribution": "Data from Daily Food Recalls (https://dailyfoodrecalls.com)",
"count": 634,
"recalls": [ … ]
}
Fields
id- Stable identifier. Prefixed by source:
fda-,fda-rss-,fda-page-,usda-. slug / urlslugis the record's stable identifier.urlis the page it lives on: when one announcement covers several products, they share a page andurlpoints at the product's section of it.product / brand / company- Parsed from the agency notice.
brandis the recalling firm's product brand. productItems[]- USDA only: every package FSIS lists for the recall, one string each.
productis the summary line. class- 1, 2 or 3 — the FDA hazard class. Class I means a reasonable probability of serious harm or death. Only openFDA and FSIS records carry an agency-assigned class; for press-release-derived records it is inferred.
agencyFDAorUSDA.hazard / hazardType- Short controlled label (e.g.
Listeria,Undeclared milk) and its category —pathogen,allergen,foreign-material,labeling,chemical. allergens[]- Detected from the recall's authored hazard text only, never from the product description — a label transcript lists correctly-declared allergens and would produce false positives.
reason- The agency's stated reason for the recall.
whatToDo- Plain-language consumer guidance.
affectedStates[]- Parsed from the distribution statement, not the firm's address.
["Nationwide"]when distribution is national. retailers[] / lotCodes[] / upc- Identifying details where the notice provides them. Often empty.
recallInitiated / reportDate- Use
recallInitiatedfor recency.reportDateis the publication date and trails initiation by ~35 days at the median in openFDA. status / recallType / distribution / quantity- As reported by the agency.
officialUrl- The agency's own notice. Always defer to it.
sources[] / mergedIds[]- Present when a record was merged across sources. Provenance.
Licence & attribution
The feed is licensed CC BY 4.0. You may use it for anything, including commercial products, provided you give credit and link back. In a web page, this is enough:
Data from <a href="https://dailyfoodrecalls.com">Daily Food Recalls</a>, licensed CC BY 4.0.
The underlying FDA and USDA notices are U.S. government works and in the public domain. What is licensed here is the compilation — the cross-source merge, the normalization, and the plain-language summaries.
Please don't re-publish the feed as a competing recall database without talking to us first, and don't present the data in a way that implies government affiliation or endorsement.
Accuracy
This is an independent service, not affiliated with the FDA or USDA. Records are merged automatically across sources and can contain parsing errors. Every record carries officialUrl — treat the agency notice as authoritative, and surface it to your users. Spotted something wrong? Email [email protected].
Commercial plans
The free feed covers current recalls. Historical archives beyond the current window, webhook push instead of polling, filtered or per-query endpoints, and an SLA are available commercially — useful if you're in grocery, insurance, foodservice, or shipping a product on top of this. Email [email protected].