US Recalls Monitor - FDA Food, Drug, Device & NHTSA Recalls
Pricing
Pay per usage
US Recalls Monitor - FDA Food, Drug, Device & NHTSA Recalls
One normalised feed of US product recalls: FDA food, drug and device enforcement reports plus NHTSA vehicle, tyre, equipment and child-seat recalls, ranked by severity with phone numbers and e-mail addresses stripped.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Bora Sipahi
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
US product recalls are announced by two agencies that share nothing: the FDA, which publishes enforcement reports for food, drugs and medical devices with a formal hazard class, and NHTSA, which publishes vehicle, tyre, equipment and child-seat campaigns with no class at all. Different schemas, different date formats, different vocabulary for the same idea. If you monitor recalls — for a supply chain, a retail catalogue, a compliance dashboard, an insurance book or a newsroom — you either watch four feeds or you buy four scrapers.
This Actor reads all four and returns one flat record per recall: who is recalling, what, why, how serious, how many units, when, and where the official record lives. One schema, one date format, one severity scale.
What makes it different
- Four registers, one row shape. FDA food, FDA drug, FDA device and NHTSA in a single dataset, deduplicated on agency plus recall id, interleaved round-robin so a
maxItemscap never starves the register that happens to be fetched last. - One severity scale across agencies. FDA grades hazard as Class I, II or III. NHTSA grades nothing, but does flag do-not-drive campaigns and park-outside fire risks. Both are mapped onto
high/medium/low, sourgentOnlygives you every FDA Class I plus every do-not-drive and fire-risk campaign in one filter. The agency's ownclassificationis kept alongside, never overwritten. - Contact details stripped by default. Almost every NHTSA corrective-action paragraph embeds a manufacturer hotline, and free text occasionally carries an individual's e-mail address. Both are replaced with placeholders before anything is saved. Recall-number strings, model years and campaign codes are left intact.
- Server-side date filtering. Both registers filter on date at source, so a narrow window costs one request per register rather than a scan.
- Polite. One connection, sequential, with backoff, honouring the
Crawl-delay: 1thatdata.transportation.govadvertises. - No browser. Plain
fetchagainst public, keyless JSON APIs. Runs in 512 MB.
How to use it
- Pick Sources. All four are on by default.
- Set Posted within days (default 30), or give an explicit Published from / to window.
- Narrow with Search query, Firms, Product types, FDA classifications, Severity or US states.
- For an alert feed, switch on Urgent only.
- Run, then download JSON, CSV or Excel, or read the dataset through the API.
For a daily monitor, turn on Incremental mode, add a Schedule, and connect a Slack, e-mail or webhook integration. Only recalls not delivered before are charged and returned.
One caveat worth knowing before you schedule it: FDA publishes enforcement reports with roughly a one-to-two-week lag, while NHTSA lands within a few days. A window under 14 days will often return NHTSA rows only. That is the source's cadence, not a gap in the Actor.
Output fields
| Field | Meaning |
|---|---|
recallId | recall_number at FDA, nhtsa_id at NHTSA. Unique within its source |
source, sourceDataset, agency | fda or nhtsa; the exact feed (fda-food, fda-drug, fda-device, nhtsa); the agency name |
sourceAttribution | The attribution and disclaimer the register asks for, carried on every row |
firm | Recalling firm (FDA) or manufacturer (NHTSA) |
productCategory, productType | Food, Drugs, Devices, Vehicles; and the agency's own label (Vehicle, Tire, Equipment, Child Seat, …) |
productDescriptionSnippet, reasonSnippet | First 300 characters of what was recalled and why |
classification | Class I, Class II, Class III — FDA only, null for NHTSA |
severity | high, medium, low — normalised across both agencies |
status | Ongoing, Completed, Terminated — FDA only |
doNotDrive, fireRiskWhenParked | Booleans — NHTSA only, null for FDA |
quantityText, unitsAffected | Quantity as published, plus a parsed integer where one can be read |
reportDate, initiatedDate, classifiedDate, terminatedDate | ISO YYYY-MM-DD dates; the last three are FDA only |
country, state, city | Recalling firm's location. FDA only; NHTSA publishes no address |
url | The official record: the NHTSA recall page, or the openFDA query that returns exactly this enforcement report |
scrapedAt | Run timestamp |
productDescription, reason, consequence, correctiveAction, codeInfo, distributionPattern, component, mfrCampaignNumber, voluntaryMandated, initialFirmNotification, eventId | Only when Include full details is on |
Pricing
recall-record, once per recall row saved. Filtered-out, duplicate and already-delivered recalls are never charged.recall-detail, once per row when Include full details is on: untruncated description and reason, the health consequence, the corrective action, affected lot and code ranges, distribution pattern, component and campaign number.
Set Maximum recalls to cap a run. No platform usage is passed on to you.
Input example
{"sources": ["fda-food", "fda-drug", "fda-device", "nhtsa"],"postedWithinDays": 30,"urgentOnly": true,"includeFullDetails": true,"maxItems": 200,"incremental": true}
Output example
{"recallId": "26V583000","source": "nhtsa","sourceDataset": "nhtsa","agency": "NHTSA","firm": "Daimler Trucks North America, LLC","productCategory": "Vehicles","productType": "Vehicle","classification": null,"severity": "medium","status": null,"country": "United States","state": null,"city": null,"quantityText": "2404","unitsAffected": 2404,"reportDate": "2026-09-09","doNotDrive": false,"fireRiskWhenParked": false,"url": "https://www.nhtsa.gov/recalls?nhtsaId=26V583000","sourceAttribution": "Source: U.S. Department of Transportation / NHTSA recall database (https://data.transportation.gov/resource/6axg-epim), public domain.","productDescriptionSnippet": "Modulator Valve Corrosion May Cause Brake Pull","reasonSnippet": "Daimler Trucks North America, LLC (DTNA) is recalling certain 2020-2023 Freightliner Cascadia and 2022 Western Star 49X vehicles previously repaired incorrectly under recall numbers 23V073 or 22V817...","correctiveAction": "Dealers will replace the brake modulator valves, free of charge. Owners may contact DTNA customer service at [phone removed].","scrapedAt": "2026-09-13T06:15:13.681Z"}
Data sources and reuse
| Source | Endpoint | Licence |
|---|---|---|
| FDA enforcement reports | api.fda.gov/{food,drug,device}/enforcement.json | Public domain, CC0 1.0 Universal — explicitly cleared for commercial reuse |
| NHTSA recalls | data.transportation.gov/resource/6axg-epim.json | Public Domain, U.S. Government |
Both are keyless public APIs. No account, no key, nothing behind a login.
FDA disclaimer, reproduced as openFDA asks: Do not rely on openFDA to make decisions regarding medical care. While we make every effort to ensure that data is accurate, you should assume all results are unvalidated.
Two deliberate exclusions, both on licensing and privacy grounds rather than difficulty:
- The openFDA device classification and registration endpoints are not used. They carry GMDN® terms, which are licensed from The GMDN Agency rather than public domain and require a separate licence for commercial reuse. Enforcement reports contain none, and this Actor consumes nothing else.
- CPSC
saferproducts.govcomplaints are not used. They contain consumer-submitted narratives and reporter details. This Actor returns recall notices about companies and products, never reports about people.
data.transportation.gov/robots.txt permits /resource/ and asks for a one-second crawl delay, which this Actor honours. api.fda.gov publishes no robots.txt.
Related Actors
- EU & UK Public Tenders Scraper — procurement notices from TED, Find a Tender and Contracts Finder in one schema.
- ATS Jobs Scraper — every open job from any Greenhouse, Lever or Ashby board.
- Remote Jobs Scraper — a deduplicated remote-jobs feed from RemoteOK, Remotive and Himalayas.
FAQ
Why does a 7-day window return no FDA rows?
FDA publishes enforcement reports on a one-to-two-week lag. Use 30 days, which is the default, or read reportDate to see the real cadence.
Why is severity sometimes null?
An FDA enforcement report that has not yet been classified carries no class, so there is nothing to map. It fills in once the FDA classifies the recall.
Can I filter NHTSA by state? No. NHTSA publishes no location for a recall campaign, because a vehicle recall is national. The US states filter applies to the FDA recalling firm's address, so setting it drops NHTSA rows.
How do I get only the dangerous ones? Switch on Urgent only. That is every FDA Class I recall plus every NHTSA do-not-drive or park-outside fire-risk campaign.
Does the url for FDA rows open a web page?
It opens the openFDA API query that returns exactly that enforcement report. FDA does not publish a stable per-record web page for enforcement reports, so the API permalink is the honest link.
Will it return the same recall twice on a schedule? Not with Incremental mode on. Delivered ids are remembered for a year, which comfortably outlasts how long a recall stays open.