Tools / FDA Recall Database API, Food, Drug, Device Enforcement Reports
FDA Recall Database API, Food, Drug, Device Enforcement Reports
Search every US FDA product recall from the official openFDA enforcement API. Food, drug and device in one Actor and schema, 37 typed fields incl. Class I/II/III severity, a documented (non-AI) 0-100 riskScore, recalling firm, reason, ISO dates, plus NDC/UPC/brand/substance on drug recalls. Optional includePressReleases adds FDA's own recall press-release feed, up to 9 days faster than the enforcement API. Optional watchLabel mode returns only recalls new since your last run, so a schedule becomes a recall alert; add watchChanges to also catch a recall's status changing or FDA reclassifying its severity.
Run it
curl -X POST https://fetchsmith.com/api/v1/run/fda-recall-scraper \
-H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
-d '{"classifications": ["Class I", "Class II"], "maxResults": 12, "productTypes": ["food", "drug", "device"], "reportDateFrom": "2026-06-01"}'
Output fields
source productType recallNumber eventId status classification voluntaryMandated initialFirmNotification recallingFirm city state country productDescription productQuantity reasonForRecall distributionPattern codeInfo moreCodeInfo reportDate recallInitiationDate centerClassificationDate terminationDate riskScore brandName genericName manufacturerName substanceName productNdc packageNdc upc applicationNumber drugRoute rxcui unii splSetId pressReleaseTitle sourceUrl _watchChangeType _watchPrevious
Sample output
{
"applicationNumber": null,
"brandName": "LEVOTHYROXINE SODIUM",
"centerClassificationDate": "2026-08-21",
"city": "Raleigh",
"classification": "Class II",
"codeInfo": "a) Lot # D2402430, D2402431, Exp Date: 10/31/2026. b) Lot #: D2402432, Exp. Date 10/31/2026; D2500180, Exp. Date 12/31/2026.",
"country": "United States",
"distributionPattern": "Nationwide within the United States",
"drugRoute": [],
"eventId": "99584",
"genericName": "LEVOTHYROXINE SODIUM",
"initialFirmNotification": "Letter",
"manufacturerName": "Accord Healthcare Inc.",
"moreCodeInfo": null,
"packageNdc": [
"16729-458-15"
],
"pressReleaseTitle": null,
"productDescription": "Levothyroxine Sodium Tablets, USP, 200 mcg (0.2 mg), packaged in a) 90-count bottles (NDC 16729-457-15) and b) 1000-count bottles (NDC 16729-457-17), Rx Only.",
"productNdc": [
"16729-447",
"16729-458"
],
"productQuantity": "N/A",
"productType": "drug",
"reasonForRecall": "Subpotent Drug",
"recallInitiationDate": "2026-08-06",
"recallNumber": "D-0785-2026",
"recallingFirm": "ACCORD HEALTHCARE, INC.",
"reportDate": "2026-09-02",
"riskScore": 80,
"rxcui": [],
"source": "enforcement",
"sourceUrl": null,
"splSetId": null,
"state": "NC",
"status": "Ongoing",
"substanceName": [
"LEVOTHYROXINE SODIUM"
],
"terminationDate": null,
"unii": [],
"upc": [],
"voluntaryMandated": "Voluntary: Firm initiated"
}
Guides
- openFDA's count= aggregation shows you the top 1,000 values and never tells you it stopped — we recovered 5,526 recalling firms from a "complete" list of 1,000 — openFDA's count parameter silently defaults to 100 buckets, hard-caps at 1,000, refuses skip, and strips the meta.results block that would have told you the total. Date-partitioning recovers every missing value, exactly additively.
- The FDA publishes every product recall as JSON with no API key — but you can't page past row 25,000, and only drugs come with a barcode — openFDA's enforcement API covers food, drug and device recalls with no auth. The catches are a hard 25,000-row skip cap and a barcode-lookup field that only exists on drug recalls.
Only publicly accessible pages are read. Respect the source site's terms when using the data.