Product Recalls API: CPSC, FDA, EU Safety Gate Alerts
Pricing
from $2.55 / 1,000 recall delivereds
Product Recalls API: CPSC, FDA, EU Safety Gate Alerts
Official product recalls from US CPSC, FDA (food, drugs, devices) and EU Safety Gate (RAPEX): product, brand, hazard, remedy, UPCs, images, official link. Brand watch with only-new alerts. No API key, no login. MCP-ready for AI agents. Pay per result, errors free. $3 per 1,000 recalls.
Pricing
from $2.55 / 1,000 recall delivereds
Rating
0.0
(0)
Developer
ABM
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
22 minutes ago
Last modified
Categories
Share
Product Recalls API: CPSC, FDA & EU Safety Gate recall alerts
$3 per 1,000 recalls ($0.003 per recall). No subscription, no API key, no login. Errors and empty results are free.
Search and monitor official product recalls from three government databases in one call, with a single clean JSON format:
| Source | What it covers |
|---|---|
| CPSC (US Consumer Product Safety Commission) | Toys, children's products, furniture, appliances, e-bikes, power banks… |
| FDA (openFDA enforcement reports) | Food & cosmetics, drugs, medical devices, with Class I / II / III |
| EU Safety Gate (ex-RAPEX, European Commission) | Dangerous non-food products notified by the 30 EU/EEA countries |
Filter by keyword, brand, category, country and hazard. For each recall you get the product, brand, manufacturer or firm, hazard or reason, remedy, risk level or class, units, UPC/barcodes, models, lot codes, images and the official link.
Turn on onlyNew and schedule the actor: each run returns only recalls you have not received yet, so you can watch a brand or a category every morning and pay only for real news.
How much does it cost?
Pay per event: one recall event = $0.003 for each recall delivered to your dataset.
| You get | You pay |
|---|---|
| 10 recalls | $0.03 |
| 1,000 recalls | $3.00 |
A daily brand watch with onlyNew (≈ 5 new recalls a week) | ≈ $0.06 a month |
Nothing is charged for recalls already delivered (onlyNew), for failed sources or for empty searches. Set maxResultsPerSource and the run's spending limit to cap your cost. The actor stops cleanly when the limit is reached.
Input
{"sources": ["cpsc", "fda", "eu"],"keywords": ["stroller", "high chair"],"brands": [],"categories": [],"countries": [],"hazards": ["choking", "fall"],"sinceDays": 90,"onlyNew": false,"maxResultsPerSource": 50,"fdaProductTypes": ["food", "drug", "device"],"fdaClassifications": [],"includeMarkdown": true}
| Field | Meaning |
|---|---|
sources | cpsc, fda, eu (any combination) |
keywords | At least one must appear in the recall (product, description, brand, firm, hazard, model). Case and accent insensitive |
brands | Brand, manufacturer or recalling firm (brand monitoring) |
categories | e.g. toys, cosmetics, motor vehicles, food, device |
countries | Country of origin, EU notifying country or FDA firm country: China, CN, Germany, US… |
hazards | e.g. choking, fire, lead, salmonella, listeria, undeclared, strangulation |
sinceDays | Look-back window (1–3650 days) |
onlyNew | Only recalls not delivered by a previous run with the same filters |
stateKey | Optional watch name for onlyNew (otherwise derived from your filters) |
maxResultsPerSource | Cost cap, newest first |
fdaProductTypes, fdaClassifications | Narrow FDA results (Class I = most serious) |
includeMarkdown | Adds an LLM-ready Markdown summary per recall |
fdaApiKey | Optional free openFDA key, only for very heavy use |
Filter groups are combined with AND, and values inside a group with OR. Example: keywords: ["stroller","car seat"] + hazards: ["fall"] means (stroller OR car seat) AND fall.
Output
One object per recall in the dataset (JSON, CSV, Excel, HTML…), camelCase fields:
{"recallId": "cpsc-26639","source": "cpsc","agency": "U.S. Consumer Product Safety Commission (CPSC)","recallNumber": "26639","title": "Peony Design Recalls Personalized Baby Bibs and Stroller Bags Due to Risk of Serious Injury or Death from Choking Hazard","productName": "Personalized Baby Bibs and Stroller Bags","productDescription": "This recall involves Peony Design personalized handmade baby bibs and stroller bags…","brand": "Peony Design","manufacturer": "Peony Design Co., of Howell, MI","category": null,"hazard": "The snap can detach from the recalled bibs and stroller bags, posing a risk of serious injury or death from choking…","remedy": "Consumers should take the recalled baby bibs and stroller bags away from children immediately…","remedyOptions": ["Refund"],"riskLevel": null,"unitsAffected": "About 52","recallDate": "2026-07-23","publishedDate": "2026-07-24","countryOfOrigin": "United States","soldAt": "Online at Etsy.com from October 2025 through July 2026 for between $15 and $45.","upcs": null,"images": ["https://www.cpsc.gov/s3fs-public/peony-1.png"],"officialUrl": "https://www.cpsc.gov/Recalls/2026/Peony-Design-Recalls-Personalized-Baby-Bibs-and-Stroller-Bags-…","matchedTerms": ["stroller"],"markdown": "## Peony Design Recalls Personalized Baby Bibs…\n- **Source:** U.S. Consumer Product Safety Commission (CPSC)\n- …","scrapedAt": "2026-10-22T08:00:00+00:00"}
An EU Safety Gate alert looks like this (abbreviated):
{"recallId": "eu-SR/02869/26","source": "eu","recallNumber": "SR/02869/26","productName": "Necklace – Squid game necklace","category": "Jewellery","hazardType": "Chemical","hazard": "The necklace contains cadmium…","remedy": "Withdrawal of the product from the market (distributor)…","riskLevel": "Serious risk","countryOfOrigin": "Unknown","notifyingCountry": "Sweden","soldAt": "Other(Fyndiq.se) /","weeklyReport": "Report-2026-41","officialUrl": "https://ec.europa.eu/safety-gate-alerts/screen/webReport/alertDetail/…"}
An FDA record includes riskLevel ("Class I/II/III"), recallType (voluntary or mandated), status, reason, lotCodes, distribution and firmLocation. Fields that a source does not publish are null.
Use cases
1. Brand protection, consumer goods manufacturer. A quality manager watches their brand and their two main competitors in all three jurisdictions every morning and posts the news to a Slack channel.
Input: {"sources":["cpsc","fda","eu"],"brands":["Graco","Chicco","Joie"],"sinceDays":30,"onlyNew":true}
Output: [{"source":"eu","brand":"Chicco","productName":"Baby walker – …","hazard":"…fall…","riskLevel":"Serious risk","officialUrl":"https://ec.europa.eu/safety-gate-alerts/…"}]
Next: a scheduled run plus a Slack integration. Most mornings the run returns 0 or 1 recall, for a few cents a month.
2. Marketplace compliance, Amazon / Etsy / Temu sellers and marketplace trust & safety teams. Every Monday, a compliance analyst pulls last week's toy and childcare recalls from CPSC and EU Safety Gate and matches the UPCs/barcodes and model numbers against their catalog to delist products.
Input: {"sources":["cpsc","eu"],"categories":["toys","childcare","children"],"sinceDays":7,"maxResultsPerSource":200}
Output: [{"recallNumber":"SR/02701/26","upcs":["4032722967176"],"models":["967176"],"soldAt":"…","officialUrl":"…"}]
Next: export to Google Sheets, then VLOOKUP the upcs and models columns against the product feed.
3. Food safety and retail, grocery buyers and QA. A food safety lead gets every new Class I FDA food recall for Listeria, Salmonella or undeclared allergens, plus the lot codes and distribution states.
Input: {"sources":["fda"],"fdaProductTypes":["food"],"fdaClassifications":["Class I"],"hazards":["listeria","salmonella","undeclared"],"sinceDays":14,"onlyNew":true}
Output: [{"recallNumber":"F-0123-2027","manufacturer":"…","reason":"Potential Listeria monocytogenes contamination","lotCodes":"Best by 11/30/2026","distribution":"CA, NV, AZ","riskLevel":"Class I"}]
Next: an e-mail alert to store managers, with the distribution field used to route it by region.
4. Sourcing and import risk, buyers sourcing in Asia. A sourcing team measures how often products from a given origin are flagged in Europe for a category: about 150 alerts per quarter cost $0.45.
Input: {"sources":["eu"],"countries":["CN"],"categories":["electrical appliances"],"sinceDays":90,"maxResultsPerSource":500}
Next: a pivot of hazardType and notifyingCountry to brief suppliers before an order.
5. RAG and AI agents, legal/insurance research. A product-liability lawyer feeds the markdown field of all stroller and crib recalls from the last 5 years into a vector store and asks an LLM for hazard patterns.
Input: {"sources":["cpsc","eu"],"keywords":["stroller","crib","bassinet"],"sinceDays":1825,"maxResultsPerSource":1000}
Use with AI agents (MCP)
The actor is ready for the Apify MCP server, so Claude, Cursor, ChatGPT and other AI agents can call it as a tool. Add https://mcp.apify.com?actors=<this-actor-id> to your MCP client and ask, e.g., "Any recall of Fisher-Price products in the US or EU in the last 60 days?" The agent then sends {"brands":["Fisher-Price"],"sinceDays":60} and receives structured JSON plus a Markdown summary.
API, Make, Zapier, n8n and Google Sheets
Python
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("<username>/product-recalls-monitor").call(run_input={"sources": ["cpsc", "fda", "eu"],"keywords": ["stroller"],"sinceDays": 90,})for recall in client.dataset(run["defaultDatasetId"]).iterate_items():print(recall["recallDate"], recall["source"], recall["title"], recall["officialUrl"])
JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<APIFY_TOKEN>' });const run = await client.actor('<username>/product-recalls-monitor').call({sources: ['fda'],fdaProductTypes: ['food'],hazards: ['listeria', 'salmonella'],sinceDays: 30,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items.map((r) => `${r.recallNumber} ${r.manufacturer}: ${r.reason}`));
Automation example (Make, n8n or Zapier). Create a Task in Apify Console with your brand watch input and "onlyNew": true, and schedule it daily at 7:00. In Make, use the Apify › Watch Actor Runs trigger, then Apify › Get Dataset Items, then Slack › Create a Message (or Google Sheets › Add a Row) with {{title}} – {{remedy}} – {{officialUrl}}. n8n and Zapier work the same way with their Apify nodes. For Google Sheets you can also export the dataset directly: https://api.apify.com/v2/datasets/<id>/items?format=csv&view=overview.
FAQ
Where does the data come from? Only official public open-data endpoints: the CPSC recall REST service (saferproducts.gov), openFDA enforcement reports (api.fda.gov) and the European Commission's Safety Gate weekly report XML export. No login, no scraping behind a wall, no captcha.
How fresh is it? CPSC publishes recalls most weekdays (mostly Thursdays), openFDA updates enforcement reports weekly, and EU Safety Gate publishes one weekly report (usually on Friday). Each run reads the live sources.
How does onlyNew work? The IDs of the recalls already delivered are stored in your account's named key-value store product-recalls-monitor-state, under a key derived from your filters (or from stateKey). The next run skips them and does not charge for them. If you change the filters, a new watch starts. You can reset a watch by deleting its key.
Why is a field null? Each agency publishes different fields. For example, the FDA does not publish images or remedies, and the EU does not publish units sold. The actor never invents values.
Can I search in other languages? The CPSC and FDA texts are in English, and EU Safety Gate is read in English. Use English keywords. Accents are ignored.
What is the official link for FDA recalls? FDA has no public page per enforcement report, so officialUrl points to the official openFDA record for that recall number.
Limits
- EU Safety Gate is read from the weekly reports. An alert appears when the Commission publishes its weekly report, and
recallDateis that report's date. - The CPSC
brandfield is derived from the official title ("Brand Recalls …"). Themanufacturerfield holds the official firm names. - Without an API key, openFDA allows about 1,000 requests a day per IP address. Normal use needs 1 to 3 requests per run. Add your free
fdaApiKeyfor heavy use. - Long look-backs without filters can return thousands of recalls. Use
maxResultsPerSourceto stay in control. - This tool aggregates public data for information. Always check the official notice before taking a legal or safety decision.