FDA Scraper: Recalls, Adverse Events & Shortages
Pricing
from $12.86 / 1,000 drug recalls
FDA Scraper: Recalls, Adverse Events & Shortages
Scrape openFDA drug recalls, FAERS adverse events, labels with boxed warnings, drug shortages, plus device and food recalls. Search by drug or company, filter Class I-III or serious events. Export CSV, Excel, JSON or XML. No login or API key. Not charged for empty searches.
Pricing
from $12.86 / 1,000 drug recalls
Rating
0.0
(0)
Developer
RecordsData
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
9 days ago
Last modified
Share
FDA Scraper: Recalls, Adverse Events & Shortages
FDA Scraper by RecordsData pulls drug recalls, FAERS adverse event reports, official drug labels, drug shortages, device recalls, food recalls, medical device adverse events and 510(k) clearances from the official openFDA API. Search by drug, product or company, filter by date range or a raw openFDA query, get one normalized row per record, and export CSV, Excel, JSON or XML. No login, no API key. A monitor mode returns only records new since your last run. Priced per record, and nothing is charged for empty searches or failed requests.
The FDA Scraper turns eight openFDA safety datasets into clean tables. A search for "metformin" matches 432,897 adverse event reports and 91 drug recall records in openFDA at the time of writing. It is built for pharmacovigilance, hospital pharmacy, supply chain, compliance and health research teams.
๐ FDA drug recall scraper: what does it do?
- Search drug recalls (FDA enforcement reports) by drug, product or firm, filtered by Class I, II or III.
- Pull FAERS adverse event reports, optionally serious only, with per-drug NDC, RxCUI and UNII.
- Download official drug labels (SPL) and check the FDA drug shortage list.
- Add device recalls, food recalls, medical device adverse events and 510(k) clearances.
- Limit any run to a date range or a raw openFDA query, and cap each surface separately.
๐ What FDA data can you extract?
| Surface | Main fields |
|---|---|
| Drug, device and food recalls | recallNumber, classification, status, product, reason, recallingFirm, state, country, distribution, quantity, recallInitiationDate, reportDate, terminationDate |
| Adverse events (FAERS) | safetyReportId, receiveDate, serious, seriousness flags, patientAge, patientSex, patientWeight, drugs, reactions, reactionOutcomes, reportType, drugDetails (optional) |
| Drug labels | brandName, genericName, manufacturer, productType, route, boxedWarning, indications, warnings, effectiveTime, splId |
| Drug shortages | genericName, companyName, status, dosageForm, presentation, therapeuticCategory, initialPostingDate, updateDate, updateType |
| Device adverse events | reportNumber, eventType, dateReceived, dateOfEvent, brandName, manufacturer, modelNumber, productCode, productProblems, patientProblems, narrative |
| 510(k) clearances | K number, device, applicant, decision, product code, device class, specialty |
| Every row | recordType, searchTerm (when you searched), scrapedAt |
The dataset schema has 78 data columns across all surfaces. Fields the FDA does not publish for a record are shown as "Not Disclosed".
๐ Sample output of the FDA recall data
A real drug recall row for the search term "metformin":
{"recordType": "drug-recall","recallNumber": "D-0657-2026","classification": "Class II","status": "Ongoing","product": "Synjardy XR Tablets (empagliflozin and metformin hydrochloride extended-release tablets), 12.5/1000 mg","reason": "CGMP Deviations: An incorrect detergent was used and the required swab sampling was not performed.","recallingFirm": "Boehringer Ingelheim Pharmaceuticals, Inc.","state": "CT","quantity": "560 bottles","recallInitiationDate": "2026-06-12","reportDate": "2026-07-08","searchTerm": "metformin","scrapedAt": "2026-10-04T04:59:19.934Z"}
๐ต How much does it cost to scrape FDA data?
Pay per event: you pay for each record saved, by type:
| Event | Price per record | Per 1,000 records |
|---|---|---|
| Drug recall | $0.015 (Free plan), lower on paid Apify plans | $15.00 |
| Adverse event (FAERS), drug label, drug shortage, device recall, food recall, device adverse event, 510(k) clearance | $0.01 | $10.00 |
Drug recall prices drop on higher Apify plans (Bronze $0.01429, Gold $0.01286 per record). Drug identifiers in adverse events cost nothing extra. You are never charged for empty searches, failed requests, error rows or duplicate records. The actor stops cleanly at your maximum cost per run. Free plan runs return a 10 record preview.
Worked example on the Free tier: 1,000 drug recalls, 1,000 adverse events and 1,000 drug labels cost $15.00 + $10.00 + $10.00 = $35.00. Adding 500 device adverse events and 200 510(k) clearances costs 700 x $0.01 = $7.00 more, for $42.00 in total.
๐ How to scrape FDA data in 3 steps
- Open the actor on Apify and click Try for free.
- Enter drug, product or company names, switch on the surfaces you need, and set Max Items.
- Click Start, then download the dataset as CSV, Excel, JSON or XML.
โ๏ธ FDA scraper input
| Field | What it does |
|---|---|
| searchTerms | Drug, product or company names. Empty means the most recent records. |
| maxItems | Total records across all surfaces. |
| maxItemsPerSurface | Cap per surface per search term (default 100). |
| includeDrugRecalls | Drug recall enforcement reports (on by default). |
| includeAdverseEvents, includeDrugLabels, includeDrugShortages, includeDeviceRecalls, includeFoodRecalls | Other surfaces (off by default). |
| includeDeviceEvents, include510k | Medical device adverse events and 510(k) clearances (off by default). |
| includeDrugIdentifiers | Default off. Adds a drugDetails list per drug to adverse events: role, indication, dosage, NDC, RxCUI, UNII, pharmacologic class, names. Free. |
| dateFrom, dateTo | YYYY-MM-DD. Keeps records inside the range, using each surface's own date field. |
| openFdaQuery | A raw openFDA search clause added with AND to every selected surface. The characters & # ? are rejected. |
| recallClassification | Any, Class I, Class II or Class III (recall surfaces only). |
| seriousOnly | Only serious FAERS adverse events. |
| onlyNew, stateKey, resetSeen | Monitor mode, see below. |
Example input:
{"searchTerms": ["metformin"],"maxItems": 100,"includeAdverseEvents": true,"includeDrugIdentifiers": true,"dateFrom": "2026-01-01"}
๐ฆ FDA scraper output
One row per record, with recordType telling you the surface (drug-recall, adverse-event, drug-label, drug-shortage, device-recall, food-recall, plus the device event and 510(k) types). An empty search succeeds and charges nothing; if openFDA is unreachable and nothing was delivered, the run fails and charges nothing.
๐ FDA scraper vs other Apify actors
Competitor features and prices read from their public Apify Store pages on 2026-10-09.
| Capability | This actor | scrapers_lat/openfda-drug-events-scraper | logiover/fda-data-scraper |
|---|---|---|---|
| Datasets | 8 surfaces, no animal or food events | Drug events and recalls only | 9 openFDA datasets |
| Date filter | dateFrom, dateTo | dateFrom, dateTo | Via query range, plus sort |
| Raw openFDA query | openFdaQuery | searchQuery | searchQuery |
| Drug NDC, RxCUI, UNII | Yes, free toggle | Yes, plus application number | Not shown |
| Drug shortages | Yes | Not shown | Not shown |
| Only-new monitor | Yes, skipped rows free | Not shown | Not shown |
| Output fields | 78 columns | About 46 listed | 22 listed |
| Price | $10 to $15 per 1,000 | From $6.15 per 1,000 | From $3.50 per 1,000 |
Both rivals are cheaper per record, and logiover covers more datasets, including animal and food events. This actor adds drug shortages, a free-skip monitor, a drug identifier toggle and one schema across all surfaces. If you need one dataset at the lowest price, a rival may fit better. Other cheaper actors read: hichemdev (from $3.00), hipersoft (from $0.0008 per record) and parseforge ($19 header, $0.021 in its README).
๐ Only new results (monitor mode)
Turn on onlyNew and the actor skips every FDA record this same search already returned, so a scheduled run delivers just what is new. Skipped records are not charged. Use stateKey to name separate monitors and resetSeen to start over.
- The seen list lives in a named key-value store called
fda-drug-safety-seenin your own Apify account, one record per search. Nobody else can read it. - Records are identified by surface plus stable FDA id. Changing
maxItemsormaxItemsPerSurfacekeeps the same monitor. maxItemsmeans "up to N new records". A record is marked seen only after it was saved and charged, so an aborted run returns the undelivered ones next time.- If nothing is new the run succeeds and charges nothing.
Example weekly Class I recall monitor:
{ "searchTerms": ["metformin"], "recallClassification": "Class I", "onlyNew": true, "maxItems": 100, "stateKey": "class-i-weekly" }
๐งญ FDA data use cases
Pharmacovigilance (weekly FAERS pulls, serious events only), hospital pharmacy (recalls and shortages for every formulary drug) and supply chain (shortage changes by therapeutic category).
๐ Run the FDA scraper via API and integrations
curl -X POST "https://api.apify.com/v2/acts/RecordsData~fda-drug-safety-scraper/run-sync-get-dataset-items?token=YOUR_TOKEN" \-H "Content-Type: application/json" \-d '{"searchTerms":["metformin"],"maxItems":10}'
Schedule runs, call webhooks, and connect the dataset to Zapier, Make, n8n or Slack.
๐ค FDA Scraper MCP server for AI agents
AI agents can call the FDA Scraper through the Apify MCP server at https://mcp.apify.com?tools=RecordsData/fda-drug-safety-scraper. The URL loads only this Actor as a tool.
Add this to your MCP client configuration (Claude Desktop, Cursor, VS Code):
{"mcpServers": {"apify": {"url": "https://mcp.apify.com?tools=RecordsData/fda-drug-safety-scraper"}}}
Example agent prompt:
Use the FDA Scraper to find Class I drug recalls for metformin since 2026-01-01 and tell me the recalling firm and reason for each.
Tool description: Search openFDA drug, device and food recalls, FAERS adverse events, drug labels, drug shortages, device events and 510(k) clearances by drug, product or company, with date range, recall class and only-new monitor.
โ๏ธ Is it legal to scrape FDA data?
The actor only reads openFDA, a public API run by the US Food and Drug Administration, and respects its rate limits. The data is public-domain government data, and the FDA states that openFDA is not validated for clinical use.
โ Frequently asked questions
How do I get FDA recall data for a specific drug as CSV?
Enter the drug name in the Search terms field of the FDA Scraper, keep the Drug recalls surface switched on, and click Start. It queries the official openFDA API and saves one row per recall enforcement report with recall number, classification, product, reason and recalling firm. Download the dataset as CSV, Excel, JSON or XML.
What do Class I, Class II and Class III FDA recalls mean?
In FDA enforcement reports, Class I means a reasonable chance that the product causes serious harm or death. Class II means it may cause temporary or reversible harm. Class III means harm is unlikely. The recall classification input accepts Any, Class I, II or III for drug, device and food recalls.
Can I get FDA adverse event reports for a medication?
Yes. Switch on the Adverse events (FAERS) surface and enter the drug name. Each row has the safety report id, receive date, seriousness flags, patient details, the drugs involved and the MedDRA reaction terms. Turn on the seriousOnly input to keep only the serious FAERS reports in the dataset.
Can I get NDC, RxCUI and UNII codes for the drugs in adverse event reports?
Yes. Switch on includeDrugIdentifiers together with the Adverse events surface. Each row then gets a drugDetails list with one entry per drug: role, indication, dosage, active substance, names, manufacturers, NDC, RxCUI, UNII, pharmacologic class and route. It costs nothing extra, and codes appear only where openFDA publishes them.
How do I filter FDA data by date range?
Set dateFrom and dateTo in YYYY-MM-DD format. The range applies to each surface's own date: report date for recalls, receive date for adverse events, effective date for labels, date received for device events, decision date for 510(k) and update date for shortages. Adverse and device events lag by months, so very recent windows may return no rows.
Can I run my own openFDA query?
Yes. Put an openFDA search clause in openFdaQuery, for example classification:"Class I" for recalls. It is added with AND to the search of every surface you switched on, so use fields that exist on all of them. The characters & # ? are rejected, so a query cannot add extra API parameters.
How do I check if a drug is on the FDA shortage list?
Switch on the Drug shortages surface and search the generic name or the company. Each row has the status, company, dosage form, presentation, therapeutic category and posting and update dates. If nothing matches, the run succeeds with a status message and charges nothing.
Can I scrape FDA device adverse events and 510(k) clearances?
Yes. Switch on includeDeviceEvents for medical device adverse event reports (brand, manufacturer, model, product code, problems and a narrative excerpt) or include510k for premarket clearances (K number, device, applicant, decision, product code, class, specialty). Both are off by default and cost $0.01 per record each ($10.00 per 1,000).
Does the FDA Scraper include boxed warnings from drug labels?
Yes. When you switch on the Drug labels surface, each official label row carries a Yes or No boxedWarning flag, plus brand name, generic name, manufacturer, route and excerpts of the indications and warnings sections. Excerpts are cut to 500 characters; use the splId for the full label.
Do I need an openFDA API key to use the FDA Scraper?
No. The FDA Scraper uses the public openFDA tier and paces its requests to respect rate limits, so you need no openFDA key, FDA account or login. You only need an Apify account to run it, call the API or schedule it. The data is public US government data.
How do I get only new FDA recalls since my last run?
Set onlyNew to true and schedule the actor. Each run returns only the openFDA records that the same search has not returned before, and skipped records are free. Use stateKey to keep separate monitors and resetSeen to start over. A run with nothing new still succeeds and charges nothing.
Why did I get 0 results from the FDA Scraper?
The search term matched nothing in the surfaces you switched on, or your date range or raw query excluded everything, and the run status message says so. Nothing is charged for an empty search. Try the generic drug name or widen the dates.
What happens if I send an empty or invalid input to the FDA Scraper?
Wrong types or values outside the allowed list, such as an unknown recall class, are rejected with a 400 error before any run starts. Switching off every data surface ends the run as succeeded with one free error row (errorType invalid-input). An empty {} input is valid and returns the most recent drug recalls.
How many records can one FDA Scraper run return?
Up to 1,000,000 records on paid plans, while Free plan runs return a 10 record preview. openFDA limits a single query to about 26,000 records, so larger pulls need several search terms or date windows. Use maxItemsPerSurface (default 100) to cap each surface.
How fresh is the FDA Scraper data?
The scraper reads the openFDA API live at run time, so a run returns whatever openFDA currently publishes. Adverse event and device event data lag by months at the source. Each row carries its own FDA date plus a scrapedAt timestamp.
๐ Support
Open an issue in the Issues tab or write to contact.punkrecordsdata@gmail.com. This is an independent tool, not affiliated with the FDA.
Last updated: 2026-10-11