FDA Recalls Monitor – Food, Drug & Device Recalls API
Pricing
from $5.00 / 1,000 recalls
FDA Recalls Monitor – Food, Drug & Device Recalls API
Get FDA recalls and enforcement reports for food, drugs and medical devices from openFDA as clean JSON. Filter by recall class, firm, state and date, and monitor new recalls daily. Built for compliance teams and AI agents (MCP).
Pricing
from $5.00 / 1,000 recalls
Rating
0.0
(0)
Developer
Dzmitry Mamyrau
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
FDA Recalls Monitor returns FDA recalls (enforcement report records) for food, drugs and medical devices as clean, normalized JSON. Data comes straight from the official openFDA enforcement API. Filter by keyword, recalling firm, recall class (Class I, II, III), status, state, country and date range, or switch on only new mode to monitor for recalls you have not seen before. No FDA API key or code required.
What does FDA Recalls Monitor do?
- Searches the openFDA food, drug and device enforcement endpoints and returns one dataset item per recall.
- Normalizes fields: ISO dates (
YYYY-MM-DD),nullfor missing values, and a direct link to the FDA Enforcement Report page. - Remembers what it has already returned for a given
monitorId, so scheduled runs deliver only new recalls. - Handles openFDA paging limits and rate limits (retries with backoff) for you.
Who is it for?
- Compliance and regulatory teams tracking recalls that affect their products or suppliers.
- Quality assurance and food safety teams watching for allergen, Listeria, Salmonella or contamination recalls.
- Supply chain and procurement monitoring supplier and manufacturer recall history.
- E-commerce and retail sellers who must pull recalled products fast.
- Insurers, researchers and journalists analysing recall trends.
- AI agents and LLM workflows that need structured recall data through the Apify MCP server.
Features
- Food, drug and medical device recalls in one actor.
- Filters:
searchText,recallingFirm,classification,status,state,country,dateFrom,dateTo. - Choose the date used for filtering and sorting: FDA publication date (
reportDate) orrecallInitiationDate. - Only-new monitoring with
onlyNewandmonitorId. - Optional
includeRawadds the unmodified openFDA record. - Results are newest first within each category.
- Export as JSON, CSV, Excel, XML or HTML, or read through the Apify API.
Input
| Field | Type | Description |
|---|---|---|
categories | array | food, drug, device. Default: ["food"]. |
searchText | string | Keywords matched against product description and reason for recall. All words must appear. |
recallingFirm | string | Company that initiated the recall (phrase match, case-insensitive). |
classification | string | Class I (most severe), Class II, Class III. Empty for all. |
status | string | Ongoing, Completed, Terminated, Pending. Empty for all. |
state | string | Two-letter US state code of the recalling firm, e.g. CA. |
country | string | Country name of the recalling firm as used by FDA, e.g. Canada. |
dateFrom | string | Earliest date, YYYY-MM-DD, inclusive. |
dateTo | string | Latest date, YYYY-MM-DD, inclusive. |
dateField | string | reportDate (default) or recallInitiationDate. |
onlyNew | boolean | Skip recalls already returned for the same monitorId. Default false. |
monitorId | string | Name of the monitoring job. Required when onlyNew is true. |
maxResults | integer | Maximum recalls to return. Default 10. Also caps cost. |
includeRaw | boolean | Add the raw openFDA record in raw. Default false. |
openFdaApiKey | string | Optional free openFDA key for very large runs. |
Example input:
{"categories": ["food"],"searchText": "undeclared peanut","classification": "Class I","dateFrom": "2025-01-01","maxResults": 50}
Output
Each dataset item is one recall. Example:
{"recallNumber": "F-0276-2017","category": "food","classification": "Class II","status": "Completed","reportDate": "2016-12-21","recallInitiationDate": "2016-11-30","recallingFirm": "Example Foods Inc.","productDescription": "Roasted peanut butter, 16 oz jar","reasonForRecall": "Product may contain undeclared milk.","codeInfo": "Lot 1234, best by 2017-11-01","distributionPattern": "Nationwide","quantity": "1,200 jars","city": "Austin","state": "TX","country": "United States","voluntaryMandated": "Voluntary: Firm initiated","eventId": "75000","sourceUrl": "https://www.accessdata.fda.gov/scripts/ires/index.cfm?Event=75000"}
The default dataset has a "Recalls" table view. Values above are illustrative.
Pricing
$5 per 1,000 recalls ($0.005 per result), plus a tiny Apify start fee per run. You only pay for results returned, and maxResults caps your cost. Apify's free plan credits cover many test runs.
How to use
Apify Console
Open the actor, keep the default input (10 newest food recalls) and click Start. Results appear in the dataset.
API
curl -X POST "https://api.apify.com/v2/acts/whitel1ght~fda-recalls/run-sync-get-dataset-items?token=<APIFY_TOKEN>" \-H "Content-Type: application/json" \-d '{"categories":["food","drug","device"],"classification":"Class I","maxResults":20}'
Monitor new recalls daily
Create a schedule in Apify Console and use input like:
{"categories": ["food"],"searchText": "listeria","onlyNew": true,"monitorId": "listeria-watch","maxResults": 100}
The first run returns everything that matches (the baseline). Each later run returns only new recalls. Add a webhook or an integration (Slack, email, Zapier, Make) to get alerted. Use a different monitorId for each set of filters.
AI agents and MCP
Use this actor from Claude, Cursor or any MCP client through the Apify MCP server: add whitel1ght/fda-recalls as a tool, then ask for example "Any new Class I drug recalls this week?". The typed input and output make it easy for agents to call and parse.
FAQ
Where does the data come from? The official openFDA enforcement API (food, drug, device endpoints), which publishes FDA Enforcement Report data.
How often is it updated? FDA publishes Enforcement Reports weekly, and openFDA refreshes its data on a similar cadence. Schedule the actor daily or weekly.
Are there limits? openFDA allows 1,000 records per request and 25,000 skipped records. The actor splits large date ranges automatically. A single day with more than 25,000 matches is truncated. Without a key openFDA allows about 240 requests per minute per IP, which is enough for normal use.
Do I need an openFDA API key? No. A free key in openFdaApiKey only helps very large runs.
Is this affiliated with the FDA? No. It is an independent tool that uses public openFDA data and is not affiliated with or endorsed by the FDA. Do not use it for medical decisions; verify against the FDA source link in sourceUrl.
Can I get every category at once? Yes, set categories to ["food","drug","device"]. Results are streamed per category, each newest first.
Changelog
- 0.1 – Food, drug and device recalls, filters, only-new monitoring, raw record option, pay-per-result pricing.