Product Recalls API - CPSC, NHTSA, USDA, EU, UK avatar

Product Recalls API - CPSC, NHTSA, USDA, EU, UK

Pricing

from $5.00 / 1,000 recalls

Go to Apify Store
Product Recalls API - CPSC, NHTSA, USDA, EU, UK

Product Recalls API - CPSC, NHTSA, USDA, EU, UK

Search product recalls from US CPSC, NHTSA, USDA FSIS, EU Safety Gate and UK FSA in one unified JSON schema, with an only-new mode for monitoring.

Pricing

from $5.00 / 1,000 recalls

Rating

0.0

(0)

Developer

Dzmitry Mamyrau

Dzmitry Mamyrau

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

Unified Product Recalls (Apify actor)

One actor, one JSON schema, five official recall sources. Search consumer product, vehicle and food recalls from the US CPSC, US NHTSA, US USDA FSIS, EU Safety Gate (RAPEX) and the UK Food Standards Agency, filter by keyword and date, and monitor for new recalls on a schedule. Built for product-safety, compliance, retail, insurance and supply-chain teams, and for AI agents calling it through Apify's MCP server.

Pricing: $5 per 1,000 recalls ($0.005 each) plus Apify's standard per-run start fee (pay per event).

Sources

KeyAgencyCoversNotes
cpscUS Consumer Product Safety CommissionConsumer products (toys, appliances, furniture, ...)Official Recalls REST API
nhtsaUS National Highway Traffic Safety AdministrationVehicles, tires, car seats, equipmentOfficial bulk recalls file (RCL flat file, streamed); one item per campaign; date = report received
fsisUS Dept. of Agriculture, Food Safety and Inspection ServiceMeat, poultry, egg products; public health alertsOfficial Recall API; class I/II/III
safety-gateEuropean Commission, EU Safety Gate (RAPEX)Dangerous non-food products in the EU/EEABeta. Official weekly-report XML export; alerts appear once their weekly report is published (Fridays), dated by that report; at most the last 26 weeks per run
fsaUK Food Standards AgencyFood recalls, allergy alerts, alerts for actionOfficial food alerts API

FDA recalls (food, drugs, devices) are covered by the sibling actor "FDA Recalls Monitor".

Input

FieldMeaningDefault
sourcesAny of cpsc, nhtsa, fsis, safety-gate, fsaall five
searchTextKeywords; all words must appear in title, product, hazard, company or brand (case-insensitive)none
dateFrom, dateToInclusive YYYY-MM-DD window on the recall datelast 30 days
maxResultsMax recalls returned in total. The cap is shared fairly across the selected sources (unused share goes to the others); output is sorted newest first20
onlyNew + monitorIdReturn only recalls not delivered before to this monitoroff
includeRawAdd the unmodified source record as rawoff

Leave the input empty to get the newest recalls right away. Example:

{ "sources": ["cpsc", "fsa"], "searchText": "peanut", "dateFrom": "2026-08-01", "maxResults": 50 }

Output

One dataset item per recall, in the same shape for every source:

id (source-prefixed, unique), source, agency, country (US/EU/GB), category (food, vehicle, consumer-product), title, productDescription, hazard, riskLevel (high/medium/low or null), riskLevelRaw (the source's own value), company, brands, date (ISO), url (official notice), images, extra (source-specific details such as remedy, units affected, allergens, vehicles, measures) and raw (with includeRaw). Missing values are null.

{
"id": "fsa:FSA-AA-41-2026",
"source": "fsa",
"agency": "UK Food Standards Agency (FSA)",
"country": "GB",
"category": "food",
"title": "Waitrose & Partners recalls Waitrose Rhubarb Crumble because of undeclared oats (gluten)",
"productDescription": "Waitrose Rhubarb Crumble",
"hazard": "Oats (gluten) This product contains gluten making it a possible health risk for anyone with an allergy or intolerance to oats or gluten, or with coeliac disease.",
"riskLevel": "medium",
"riskLevelRaw": "AA (Allergy Alert)",
"company": "Waitrose & Partners",
"brands": [],
"date": "2026-09-03",
"url": "https://alerts.food.gov.uk/news-alerts/alert/fsa-aa-41-2026",
"images": [],
"extra": { "alertType": "AA", "allergens": ["Gluten", "Oats"], "countries": ["England", "Scotland", "Wales"] }
}

Risk levels are normalised only where the source provides something to normalise: FSIS class I/II/III, the EU Safety Gate risk level (serious/high = high), FSA alert type (Food Alert for Action = high, Product Recall Information Notice and Allergy Alert = medium; this is derived by this actor from the alert type, because the FSA publishes no severity, so use riskLevelRaw for what the FSA actually said) and NHTSA "park it" / "park outside" warnings (high). CPSC does not publish a severity, so riskLevel is null there; read hazard instead.

The run also stores an OUTPUT record in the key-value store with per-source status, item counts and errors. One failing source never fails the run: it is logged, reported as error in the summary and skipped (the run fails only if every selected source fails).

Monitoring and scheduling

Turn on onlyNew with a monitorId (for example peanut-watch) and schedule the actor daily in Apify Console. Each run returns only recalls not delivered before to that monitor. The list of delivered ids lives in a named key-value store in your account. The first run is the baseline and returns everything matching. Only items actually delivered are marked seen, so a run cut short by maxResults or your max charge picks up the rest next time. Attach an Apify integration (Slack, email, webhook, Zapier, Make) to get notified.

API and MCP usage

Run via the Apify API:

curl -X POST "https://api.apify.com/v2/acts/whitel1ght~unified-product-recalls/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"searchText": "battery", "sources": ["cpsc", "safety-gate"], "maxResults": 10}'

With the Apify MCP server, add this actor as a tool and ask an agent things like "Any vehicle or consumer product recalls involving lithium batteries in the last 14 days?". Input descriptions are written to be self-explanatory to LLMs, and every result carries an official notice url to cite.

FAQ

Is this affiliated with any agency? No. It is not affiliated with or endorsed by the CPSC, NHTSA, USDA, the European Commission or the UK Food Standards Agency. Always confirm against the official notice linked in url.

Why fewer than maxResults items? The filters matched fewer recalls in the window, onlyNew removed ones you already received, or a source failed (see the OUTPUT summary).

Why is an EU Safety Gate alert missing or dated a few days ago? The actor uses the official weekly-report export. A weekly report is published every Friday, so alerts appear once their report is out, and date is the report's publication date. The export is not a documented API contract, so Safety Gate stays marked beta.

How does NHTSA search work? The actor streams NHTSA's official bulk recalls file (about 15 MB zipped) on every run and keeps campaigns whose report-received date is inside your window, so keyword search works over any date range without hammering the NHTSA API.

What if a source is slow or blocked? Each source has its own deadline (90 s, NHTSA 120 s) and a timed-out source is reported as an error while the others are returned. FSIS is retried with backoff and, if it still fails, served from the last good copy (last 180 days) kept in a named key-value store in your account; the run summary says so.

Is it up to date? Data is fetched live on every run, but agencies publish with their own delay.

What does it cost? $5 per 1,000 recalls ($0.005 each) plus Apify's standard per-run start fee. You are charged only for items returned.

Data licences and attribution

  • US sources (CPSC, NHTSA, USDA FSIS): works of the US federal government, public domain.
  • EU Safety Gate: Alerts from the Rapid Alert System for dangerous non-food products, published free of charge on the Safety Gate website (https://ec.europa.eu/safety-gate-alerts). © European Union, reused under CC BY 4.0. Source of the data in this actor: the official weekly-report XML export (https://ec.europa.eu/safety-gate-alerts/api/download/weeklyReport/list/xml/en and the per-week files it links to). On data.europa.eu the dataset "Safety Gate (the EU rapid alert system - non-food)" lists these exports under CC0 1.0 and the Commission reuse notice (Decision 2011/833/EU); attribution is given as above.
  • UK FSA: Source: Food Standards Agency. Published under the Open Government Licence v3.0; contains public sector information licensed under the OGL.

Dates without a timezone in a source are treated as UTC; all date values are UTC calendar dates.

Develop

npm install
npm run typecheck
npm test # unit tests, network mocked
npm run build # tsc -> dist/
npm run smoke [source] # live calls, e.g. npm run smoke fsa

Run locally: put input in storage/key_value_stores/default/INPUT.json, npm run build, then node dist/main.js (results in storage/datasets/default). Locally, pay-per-event charging is a no-op.

onlyNew remembers delivered ids for 180 days (at most 50,000) and never looks back further than that.

Before publishing (owner checklist)

  1. Set apifyUsername in src/config.ts and replace whitel1ght in this README.
  2. apify login, then apify push.
  3. In Console, Monetization: pay per event, set only the two built-in events: apify-default-dataset-item = $0.005 (and leave apify-actor-start at Apify's standard fee). Do not add custom events.
  4. Fill in the listing from LAUNCH.md.
  5. Run once in the Console with the default input and check the "Recalls" view and the OUTPUT record.
  6. Add a support contact or issues URL to the listing.