FDA Recalls Scraper (Food, Drug, Device)
Pricing
$5.00 / 1,000 result rows
FDA Recalls Scraper (Food, Drug, Device)
Latest FDA recall and enforcement reports from openFDA: product, reason, classification, firm, state, distribution and dates. Filter by product type, status, state and keyword.
Pricing
$5.00 / 1,000 result rows
Rating
0.0
(0)
Developer
Maybe Quark
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 days ago
Last modified
Categories
Share
FDA Recalls Search: Food, Drug and Device Recall Data (openFDA)
FDA Recalls Search pulls FDA recall and enforcement reports straight from the official openFDA enforcement API and returns one clean row per recall: product description, reason for recall, classification (Class I, II or III), recalling firm, city and state, distribution pattern, quantity, code info, status and the initiation, report and classification dates. Filter by product type (food, drug, device), status, keyword, the recalling firm's state, and how recent the recall is. It needs no API key and uses only public FDA data.
Input
Every field is optional. This example finds ongoing food and drug recalls from the last 120 days that mention "undeclared milk":
{"productTypes": ["food", "drug"],"status": "Ongoing","keyword": "undeclared milk","states": ["CA", "TX"],"sinceDays": 120,"maxResults": 250}
productTypes: any mix offood,drug,device(default["food"]).status:Ongoing,Completed,Terminated, or empty for all (defaultOngoing).keyword: matched against the product description and the reason for recall (for examplelisteria,undeclared peanut,sterility).states: two-letter codes of the recalling firm's state. Empty means all states.sinceDays: only recalls initiated in the last N days;0means any time (default 90).maxResults: stop after this many rows (default 500, maximum 20000).
Output
One row per recall, newest first. Example row:
{"productType": "food","recallNumber": "H-1395-2026","eventId": "99874","status": "Ongoing","classification": "Class I","product": "Fromagerie Coop de Mean Cabricharme and Belgium Cabricharme ... Whole Foods Market scale label PLUs: 54670, 57953","reason": "Undeclared Egg Allergen","recallingFirm": "WFM Purchasing, LP","city": "Austin","state": "TX","country": "United States","distribution": "CA, AZ, NJ, MA, RI, CT, NY","quantity": "21 Wheels","codeInfo": "Shelf life: 30 days, all dates through and including 10/7/2026","voluntaryOrMandated": "Voluntary: Firm initiated","initiatedOn": "2026-09-08","reportedOn": "2026-09-30","classifiedOn": "2026-09-22"}
Download the dataset as JSON, CSV, Excel or XML, or call it from the Apify API.
Use cases
Search phrases this actor is built for:
- "FDA recalls by keyword": set
keywordtolisteria,undeclared peanutorsterilityand get every matching recall. - "Look up an FDA food recall by product name": put the product or brand in
keywordwithproductTypes: ["food"]. - "FDA drug and device recall enforcement reports": set
productTypesto["drug", "device"]and filter by status.
Typical users are food distributors, pharmacies, retailers, QA and compliance teams, lawyers and journalists. Schedule a daily run with sinceDays: 7 to send new recalls to Slack, email or a spreadsheet.
Pricing
Pay per result: each recall row returned is one billable result, listed at $0.005 per row ($5 per 1,000). Set a maximum charge on the run for a hard ceiling.
Limits
- Data comes from the openFDA enforcement endpoints. The FDA posts weekly enforcement reports, usually on Wednesdays, so very new recalls can lag.
- openFDA caps paging at 26,000 records per query; use filters or
sinceDaysfor bigger pulls. maxResultsis capped at 20,000 per run.productTypesaccepts only food, drug and device.- This is a data feed, not medical, legal or safety advice. Check the FDA site for official notices.
FAQ
Does it need an API key? No. It reads the public openFDA API.
Which recalls does it cover? FDA enforcement report recalls for food, drugs and medical devices, including Class I, II and III classifications.
Can I get only new recalls every day? Schedule the actor daily with a small sinceDays value and compare on recallNumber.