FDA Recall Monitor — Drug, Device & Food Alerts
Pricing
Pay per usage
FDA Recall Monitor — Drug, Device & Food Alerts
Monitor FDA drug, device, and food recalls from the official openFDA API. Filter by keyword, firm, recall class (I/II/III), status, or date range. Alert mode outputs only new recalls since your last run, so you can schedule daily or weekly compliance and safety alerts.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Bikram
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
FDA Recall Monitor — Drug, Device & Food Recall Alerts
Monitor FDA drug, device, and food recalls from the official openFDA API and get clean, structured recall records you can analyze, alert on, or pipe into a compliance database. Filter by product keyword, recalling firm, recall class (I/II/III), status, and date range. Turn on alert mode to output only recalls that are new since your last run, and schedule it daily or weekly to build a hands-off FDA recall monitoring pipeline.
What it does
The U.S. FDA publishes its enforcement actions (recalls) for drugs, medical devices, and food through the public openFDA enforcement API. This Actor queries those official endpoints, normalizes every record into a consistent schema, and writes the matching recalls to your dataset — ready for export to JSON, CSV, or Excel, or for use by an AI agent over MCP.
It is built for repeatable monitoring, not a one-off lookup: pick your filters once, enable alert mode, schedule it, and each run surfaces only the recalls you haven't seen before.
How it works
- You set your filters: product types (
drug,device,food), keywords, firm, classification, status, and/or date range. - The Actor calls the matching official openFDA enforcement endpoint(s) for each product type you selected.
- It paginates through the results (newest recall-initiation date first) up to your
maxRecordslimit. - Each raw FDA record is normalized into a clean, flat output object.
- In alert mode, recalls already output on a previous run (for the same filter set) are skipped, so you only ever see new recalls.
- Matching recalls are written to your dataset. If nothing new is found, the run writes nothing.
Input
All fields are optional. With no input it returns the most recent drug recalls.
| Field | Type | Description |
|---|---|---|
productTypes | array | Which FDA categories to include: drug, device, food. Defaults to ["drug"]. |
keywords | array | Only include recalls whose product description or reason for recall contains at least one of these terms. Example: insulin, contamination. |
firm | string | Filter by recalling company name (partial match). Example: Pfizer. |
classification | array | FDA recall severity: Class I (most severe), Class II, Class III. |
status | string | Recall status: Ongoing, Completed, or Terminated. |
dateFrom | string | Start of the recall-initiation date range. Format: YYYYMMDD. |
dateTo | string | End of the recall-initiation date range. Format: YYYYMMDD. Defaults to today. |
maxRecords | integer | Maximum total records to output across all product types. Default 200. |
alertMode | boolean | When true, output only recalls not seen on a previous run for the same filters. Default false. |
Example — all Class I drug recalls in 2026:
{"productTypes": ["drug"],"classification": ["Class I"],"dateFrom": "20260101","maxRecords": 500}
Example — monitor insulin recalls with weekly alerts:
{"productTypes": ["drug", "device"],"keywords": ["insulin"],"alertMode": true,"maxRecords": 100}
Example — all recalls from a specific firm:
{"productTypes": ["drug", "device", "food"],"firm": "Abbott","maxRecords": 200}
Output fields
Each recall becomes one dataset item with the following fields (drug-specific fields come from the openFDA drug database and may be empty for device/food recalls):
| Field | Description |
|---|---|
recallNumber | FDA recall number (e.g. D-0353-2026). |
eventId | FDA enforcement event ID. |
productType | drug, device, or food. |
status | Ongoing, Completed, or Terminated. |
classification | Recall class: Class I, Class II, or Class III. |
voluntaryMandated | Whether the recall was firm-initiated or FDA-mandated. |
recallingFirm | Company conducting the recall. |
city / state / country / postalCode | Firm location. |
address | Firm street address (when provided). |
productDescription | Description of the recalled product. |
productQuantity | Quantity in distribution. |
codeInfo | Lot numbers, expiry dates, and other identifying codes. |
reasonForRecall | Why the product was recalled. |
distributionPattern | Geographic distribution (e.g. Nationwide). |
initialFirmNotification | How the firm first notified customers. |
recallInitiationDate | Date the recall began (YYYY-MM-DD). |
centerClassificationDate | Date FDA classified the recall. |
terminationDate | Date the recall was terminated (if any). |
reportDate | Date the recall was reported. |
brandNames / genericNames / substanceNames | Drug naming fields (from openFDA). |
manufacturerNames / applicationNumbers / ndc | Drug manufacturer, FDA application number, and NDC package codes (from openFDA). |
scrapedAt | ISO timestamp of when the record was written. |
Sample item:
{"recallNumber": "D-0353-2026","eventId": "90875","productType": "drug","status": "Ongoing","classification": "Class I","voluntaryMandated": "Voluntary: Firm initiated","recallingFirm": "Civica, Inc.","city": "Lehi","state": "UT","country": "US","productDescription": "Sodium Chloride Injection, USP, 0.9%, 100mL","productQuantity": "72,000 units","reasonForRecall": "Particulate matter identified as glass","distributionPattern": "Nationwide","recallInitiationDate": "2026-01-16","reportDate": "2026-01-22","brandNames": ["Sodium Chloride Injection"],"genericNames": ["sodium chloride"],"ndc": ["0409-7984-11"],"scrapedAt": "2026-06-14T04:30:00.000Z"}
Use cases
- Pharma & medtech compliance teams — monitor recalls for your own products, competitors, or API/component suppliers and feed them into your quality system.
- Hospital & clinic procurement — get alerted when a recalled drug or device matches items on your formulary or inventory.
- Insurance & underwriting — track Class I recalls for product-liability risk assessment.
- Legal & due-diligence teams — research a firm's recall history before a deal or case.
- Healthcare & supply-chain software — embed a live recall feed into a pharmacy, EHR, or device-management product.
Setting up recall alerts
- Set
alertMode: trueplus your filters (product type, keywords, classification). - Create an Apify Schedule — daily catches new recalls within ~24 hours; weekly is common for compliance reviews.
- Add a webhook to push new recalls to email, Slack, Teams, or your own system.
- Each scheduled run outputs only recalls that appeared since the previous run for that filter set.
Classification guide
| Class | Severity | Example |
|---|---|---|
| Class I | Most severe — reasonable probability of serious adverse health consequences or death | Contaminated injectable, wrong medication in package |
| Class II | May cause temporary or reversible adverse health effects | Labeling error, mislabeled dosage |
| Class III | Unlikely to cause adverse health effects | Minor packaging defect |
Pricing
$1 per 1,000 recall records — pay-per-event, billed at $0.001 per recall record written to your dataset. There is no subscription and no monthly minimum; you pay only for the records a run actually outputs.
| Event | Price | Charged when |
|---|---|---|
fda-recall | $0.001 | One recall record is written to the dataset |
In alert mode, recalls you've already seen are skipped before any charge, so a run that finds no new recalls costs nothing.
Use from Claude, Cursor & AI agents (MCP)
{"mcpServers": {"apify": {"url": "https://mcp.apify.com/sse?actors=bikram07/fda-recall-monitor","headers": {"Authorization": "Bearer YOUR_APIFY_TOKEN"}}}}
Ask your agent: "Were there any Class I drug recalls in the last 30 days involving contamination?"
Or call the API directly:
curl -X POST "https://api.apify.com/v2/acts/bikram07~fda-recall-monitor/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"productTypes": ["drug"], "classification": ["Class I"], "dateFrom": "20260101"}'
FAQ
Is this a subscription? No. Pricing is pay-per-event at $0.001 per recall record ($1 per 1,000). You're billed only for the records a run outputs — there's no monthly fee and no minimum.
How does the pricing / billing work?
Each recall written to your dataset triggers one fda-recall event at $0.001. A run that returns 500 recalls costs $0.50. In alert mode, already-seen recalls are filtered out before charging, so a run with no new recalls costs nothing. Charges run through Apify's standard usage billing, so refunds and disputes are handled by Apify support per their terms.
Does it use official FDA APIs?
Yes. It pulls directly from the official openFDA enforcement endpoints (api.fda.gov) for drug, device, and food recalls. No scraping of unofficial pages, and no API key is required.
How current is the data? openFDA's enforcement data is refreshed regularly (FDA publishes weekly, often updating within days of a recall). Scheduling a daily run catches new recalls within about 24 hours of them appearing in openFDA.
Can I search drug, device, and food at once?
Yes — set productTypes: ["drug", "device", "food"]. The Actor queries each category and combines all matching records into a single dataset, capped by maxRecords.
How far back does the data go?
openFDA enforcement data goes back to 2004. Use dateFrom / dateTo (YYYYMMDD) to pull any historical window.
What it does NOT do / limitations
- Covers drug, medical device, and food/cosmetic recalls only. Veterinary products and biologics are not in the openFDA enforcement endpoints and are not returned.
- It reports recalls as published by openFDA — it does not add proprietary risk scores, predictions, or "AI severity" ratings. Output is the official FDA data, normalized.
- Data freshness and completeness depend on openFDA; this Actor does not have recalls that the FDA hasn't yet published.
- Drug-specific fields (NDC, brand/generic names, application numbers) come from the openFDA drug database and are typically empty for device and food recalls.
- openFDA enforces a public rate limit (1,000 requests/day per IP, 40/min); very large historical pulls are paced to stay within it.
Uses the openFDA API. Not affiliated with or endorsed by the U.S. Food and Drug Administration.
Related searches: FDA recall monitor · FDA recall API · drug recall alerts · medical device recall tracker · food recall monitoring · openFDA API · Class I recall tracker · FDA enforcement database · recall compliance monitoring