Fda Recalls Scraper avatar

Fda Recalls Scraper

Pricing

Pay per event

Go to Apify Store
Fda Recalls Scraper

Fda Recalls Scraper

Search FDA enforcement database for drug, food, and medical device recalls. Get recall classifications, reasons, product descriptions, and distribution data.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Categories

Share

Search the FDA enforcement database for drug, food, and medical device recalls. Get recall classifications, reasons, affected products, distribution patterns, and regulatory details from all three FDA enforcement endpoints.

What does FDA Recalls Scraper do?

This actor searches the openFDA Enforcement API to extract recall data across three product categories:

  • Drugs — prescription and OTC medication recalls
  • Food — food and dietary supplement recalls
  • Medical Devices — device and equipment recalls

Each recall includes the company name, classification severity (Class I/II/III), product description, reason for recall, distribution pattern, initiation date, and regulatory status.

Why use FDA Recalls Scraper?

The FDA's openFDA API is powerful but requires manual URL construction, pagination handling, and response parsing. This actor handles all of that automatically:

  • Searches all three enforcement endpoints (drug, food, device) in one run
  • Handles pagination to retrieve up to 500 results
  • Formats raw 8-digit dates (YYYYMMDD) into readable ISO format
  • Filters by product type and recall classification
  • Returns clean, structured JSON ready for analysis

How to scrape FDA recall data

  1. Go to the FDA Recalls Scraper page on Apify Store.
  2. Enter a search query (e.g., "salmonella", "aspirin", or a company name).
  3. Optionally filter by product type (drug, food, or device) and classification (Class I/II/III).
  4. Set the maximum number of results (1-500).
  5. Click Start and wait for the run to finish.
  6. Download your data in JSON, CSV, or Excel format.

How much does it cost to scrape FDA recalls?

FDA Recalls Scraper uses the pay-per-event pricing model:

EventPrice
Actor start$0.001
Per recall extracted$0.001

Cost examples:

ScenarioRecallsEstimated cost
Quick search10~$0.011
Medium search50~$0.051
Full search500~$0.501

Platform costs (compute and memory) are additional but minimal — a typical run uses under $0.001 in platform costs.

Input parameters

ParameterTypeDescriptionDefault
searchQuerystringSearch term (e.g., "salmonella", "aspirin", company name)Required
productTypestringFilter by category: drug, food, device, or empty for allAll types
classificationstringFilter by severity: Class I, Class II, Class III, or empty for allAll classes
maxResultsintegerMaximum recalls to extract (1–500)50

Output example

Each recall in the dataset looks like this:

{
"recallNumber": "F-0123-2026",
"recallingFirm": "Example Foods Inc",
"city": "Chicago",
"state": "IL",
"country": "US",
"classification": "Class I",
"status": "Ongoing",
"productType": "food",
"productDescription": "Frozen chicken nuggets, 12 oz packages",
"reasonForRecall": "Product may contain undeclared milk allergen",
"distributionPattern": "Nationwide distribution in retail stores",
"productQuantity": "15,000 cases",
"voluntaryMandated": "Voluntary: Firm initiated",
"recallInitiationDate": "2026-01-15",
"centerClassificationDate": "2026-01-20",
"terminationDate": "",
"reportDate": "2026-02-01",
"codeInfo": "Best by dates 03/2026 through 06/2026, lot codes A1234-A5678",
"initialFirmNotification": "Press Release",
"searchQuery": "chicken allergen",
"scrapedAt": "2026-03-03T06:45:00.000Z"
}

Using the Apify API

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_API_TOKEN' });
const run = await client.actor('automation-lab/fda-recalls-scraper').call({
searchQuery: 'salmonella',
productType: 'food',
classification: 'Class I',
maxResults: 25,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((recall) => {
console.log(`${recall.recallingFirm}${recall.classification}: ${recall.reasonForRecall}`);
});

Python

from apify_client import ApifyClient
client = ApifyClient("YOUR_API_TOKEN")
run = client.actor("automation-lab/fda-recalls-scraper").call(run_input={
"searchQuery": "salmonella",
"productType": "food",
"classification": "Class I",
"maxResults": 25,
})
for recall in client.dataset(run["defaultDatasetId"]).iterate_items():
print(f"{recall['recallingFirm']}{recall['classification']}: {recall['reasonForRecall']}")

cURL

curl "https://api.apify.com/v2/acts/automation-lab~fda-recalls-scraper/runs" \
-X POST \
-H "Authorization: Bearer YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"searchQuery": "salmonella", "productType": "food", "classification": "Class I", "maxResults": 25}'

Use cases

  • Food safety monitoring — Track salmonella, listeria, and allergen recalls across the food supply
  • Pharmaceutical compliance — Monitor drug recalls by classification severity for regulatory reporting
  • Medical device tracking — Stay informed about device safety issues and recall status
  • Supply chain risk — Identify companies with recurring recalls across product categories
  • Research and journalism — Analyze recall trends, geographic patterns, and enforcement actions
  • Consumer safety alerts — Build notification systems for product recalls in specific categories

Recall classifications explained

The FDA classifies recalls by severity:

ClassRisk LevelDescription
Class IMost seriousReasonable probability of serious health consequences or death
Class IIModerateMay cause temporary or reversible health problems; slight probability of serious consequences
Class IIILeast seriousNot likely to cause adverse health consequences

Use with AI agents via MCP

FDA Recalls Scraper is available as a tool for AI assistants via the Model Context Protocol (MCP).

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com"

Setup for Claude Desktop, Cursor, or VS Code

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com"
}
}
}

Example prompts

  • "Get recent FDA food recalls"
  • "Search FDA recalls for contamination issues"

Learn more in the Apify MCP documentation.

Integrations

Connect FDA Recalls Scraper with other tools using Apify integrations:

  • Slack/Email — Get notified when new Class I recalls match your search
  • Google Sheets — Automatically export recall data for tracking and analysis
  • Webhooks — Trigger downstream workflows when new recalls are found
  • Zapier/Make — Connect recall data to 5,000+ apps for automated workflows
  • API — Schedule daily/weekly recall monitoring runs via the Apify API

Tips for best results

  1. Use specific search terms — "salmonella peanut butter" works better than just "food"
  2. Filter by product type — Searching a specific endpoint (drug/food/device) is faster than searching all three
  3. Class I recalls first — Filter by Class I to focus on the most serious safety issues
  4. Company monitoring — Search by company name (e.g., "Abbott" or "Pfizer") to track specific firms
  5. Combine with OpenFDA Drug Events — Pair recall data with adverse event reports for comprehensive safety monitoring

Data source

All data comes from the openFDA Enforcement API, a public API maintained by the U.S. Food and Drug Administration. The API is free, requires no authentication, and is updated regularly with new enforcement actions.

Legality

Scraping publicly available data is generally legal according to the US Court of Appeals ruling (HiQ Labs v. LinkedIn). This actor only accesses publicly available information and does not require authentication. Always review and comply with the target website's Terms of Service before scraping. For personal data, ensure compliance with GDPR, CCPA, and other applicable privacy regulations.

FAQ

My search returns 0 results -- what should I try? Try broader search terms. The openFDA API searches across all text fields, so specific product names or lot numbers may not match. Use general terms like "salmonella", "listeria", "allergen", or company names for better results.

Why do some recalls have empty terminationDate fields? A recall's termination date is only set when the FDA has officially closed the enforcement action. Ongoing recalls will have an empty termination date. Check the status field to see if the recall is still active.

Limitations

  • Maximum 500 results per run (API pagination limit)
  • The openFDA API may have slight delays between when a recall is announced and when it appears in the database
  • Search is text-based across all fields; the API does not support exact field-specific queries for all fields
  • Rate limits apply to the openFDA API (approximately 240 requests per minute without an API key)

Other data scrapers