openFDA Drug Adverse Events & Recalls Scraper
Scrape FDA drug adverse event reports (FAERS) and drug recall actions from the official openFDA API. Get safety report ID, patient reactions, drugs, seriousness, recall class, reason and recalling firm. Export to JSON, CSV or Excel.
{ "safetyReportId": "10003532", "reportType": "Report from study", "serious": true, "seriousnessReasons": ["Hospitalization"], "receiveDate": "2014-03-12", "receiptDate": "2015-06-02", "primarySourceCountry": "GB", "occurCountry": "GB", "qualification": "1" }
Every run returns clean, typed records, ready for your CRM, spreadsheet or database.
- One clean record per result, deduped and normalized
- Stable schema in JSON, CSV or Excel, or read it via the Apify API
- Pay per use in the cloud, nothing to install or maintain
A real example record, exactly the shape you receive.
| Safety Report Id | Report Type | Serious | Seriousness Reasons |
|---|---|---|---|
| 10003532 | Report from study | true | ["Hospitalization"] |
| 10003540 | Report from study | true | ["Other"] |
| 10003548 | Report from study | false | |
| 10003551 | Report from study | true | ["Other"] |
| 10003651 | Report from study | true | ["Hospitalization"] |
{ "safetyReportId": "10003532", "reportType": "Report from study", "serious": true, "seriousnessReasons": ["Hospitalization"], "receiveDate": "2014-03-12", "receiptDate": "2015-06-02", "primarySourceCountry": "GB", "occurCountry": "GB", "qualification": "1" }
Frequently asked questions
What data does this scraper cover?
It covers two openFDA drug datasets for the United States: the FAERS adverse event reports (patient reactions, drugs and seriousness) and the drug enforcement database of recalls. You pick which one with the Dataset input.
How many records can I pull in one run?
openFDA paginates with a skip offset up to 25000 records per query, so a single search can return up to that many. For larger pulls, narrow the search keyword or the date range to split the work.
How does the search work?
Type a simple keyword and it is matched to the drug product name for events or the recall reason for recalls. You can also paste a raw openFDA expression that already names a field, such as patient.reaction.reactionmeddrapt:"Nausea" or reason_for_recall:contamination.
Can I filter by date?
Yes. Set Date From and Date To in YYYY-MM-DD format. For events this filters the FDA receive date, and for recalls the report date.
What happens to missing fields?
Fields that openFDA does not provide for a given record are returned as null. The scraper never invents values, so an empty field means the source did not report it.
Ready when you are.
Run the scraper live on Apify right now, or have us build one tailored to exactly what you need.