FDA API Scraper - Drug Approvals, Recalls & Adverse Events
Pricing
from $1.40 / 1,000 results
FDA API Scraper - Drug Approvals, Recalls & Adverse Events
Search official openFDA data: drug approvals (Drugs@FDA), adverse event reports, and drug, device and food recalls. Drug label data and recall records as flat, CSV-ready rows through one Actor, with no API key needed.
Pricing
from $1.40 / 1,000 results
Rating
0.0
(0)
Developer
Joseph McRell
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
6 hours ago
Last modified
Categories
Share
openFDA Search
Search official openFDA datasets for drug labels, approvals, adverse events, and drug, device, or food recalls. Receive normalized, CSV-ready records through one consistent Actor interface without supplying an API key. Set max_items before each run to keep output and cost predictable.
What data can I extract?
138 declared columns across six official openFDA datasets, flattened to one row per record. Nested blocks and arrays are pulled apart into scalar columns, so a CSV export is usable as-is.
- Identifiers on every dataset - brand name, generic name, manufacturer, substance, route, product type, FDA application number and type, product and package NDC, RxCUI, UNII, UPC, SPL set id, and the four pharmacologic classes (EPC, MoA, CS, PE).
- Drug labels - effective date and SPL version plus every prescribing-information and OTC Drug Facts section: boxed warning, indications, dosage, dosage forms and strengths, active and inactive ingredients, warnings, warnings and precautions, precautions, contraindications, adverse reactions, drug interactions, overdosage, pregnancy, pediatric and geriatric use, description, clinical pharmacology, mechanism of action, how supplied, storage, do-not-use, ask-a-doctor, when-using, stop-use, keep-out-of-reach, questions and contact, package label panel, and recent major changes.
- Drug approvals (Drugs@FDA) - one row per product with sponsor, product number, strength, dosage form, marketing status, TE code, reference drug and reference standard flags, original approval date, review priority, submission and supplement counts, the latest submission's date, type, status and class, and direct links to the FDA label PDF, approval letter, and review document.
- Adverse events (FAERS) - report version and dates, report type, seriousness plus the six individual outcome flags (death, life threatening, hospitalization, disabling, congenital anomaly, other), expedited and duplicate flags, reporter country and qualification, sender organization, company case number, reactions with their outcomes, suspect and concomitant drugs, active substances, indications, drug and reaction counts, suspect drug start and end dates, patient sex, age, age unit, age group, weight, and the case narrative.
- Drug, device, and food recalls - recall number and event id, status, hazard classification, recalling firm with its full street address, reason, product description and quantity, lot and code info, distribution pattern, voluntary or mandated, initial notification method, and the initiation, classification, termination, and report dates.
- Coded values are decoded. FAERS ships seriousness, sex, age group, reporter type, and reaction outcome as bare digits. This Actor returns
serious,female,elderly,physician,not recovered/not resolved- not1,2,6,1,3. - Optional NDC enrichment. Turn on
include_detailsto add labeler, marketing category, marketing start and end dates, listing expiration, DEA schedule, and package configurations from the FDA NDC Directory. Batched at one request per 20 records, not one per record.
Every result is written to the default dataset and can be downloaded as JSON, CSV, Excel, or XML.
All 138 columns
Identity — application_number, brand_name, company_number, event_id, generic_name, id, labeler_name, product_number, spl_set_id, sponsor_name
Status — active_ingredient, active_substances, application_type, center_classification_date, classification, inactive_ingredient, is_original_packager, latest_submission_status, latest_submission_type, marketing_category, marketing_status, product_type, report_type, status
Dates — approval_date, latest_submission_date, listing_expiration_date, marketing_end_date, marketing_start_date, recall_date, receipt_date, receive_date, report_date, suspect_drug_end_date, suspect_drug_start_date, termination_date, transmission_date, voluntary_mandated
Location — address_1, address_2, city, country, occur_country, postal_code, reporter_country, state
Contact — approval_letter_url, label_url, review_url
Counts and measures — drug_count, product_count, reaction_count, submission_count, supplement_count
Other detail — adverse_reactions, ask_doctor, boxed_warning, case_narrative, clinical_pharmacology, code_info, concomitant_drugs, contraindications, dataset, dea_schedule, description, distribution, do_not_use, dosage, dosage_form, dosage_forms_and_strengths, drug_indications, drug_interactions, drugs, duplicate_report, effective_time, expedited, geriatric_use, how_supplied, indications, initial_firm_notification, keep_out_of_reach_of_children, label_version, latest_submission_class, manufacturer, mechanism_of_action, more_code_info, overdosage, package_label, package_ndc, packaging, patient_age, patient_age_group, patient_age_unit, patient_sex, patient_weight_kg, pediatric_use, pharm_class_cs, pharm_class_epc, pharm_class_moa, pharm_class_pe, precautions, pregnancy, product_description, product_ndc, product_quantity, purpose, questions, reaction_outcomes, reactions, reason, recalling_firm, recent_major_changes, reference_drug, reference_standard, report_version, reporter_qualification, review_priority, route, rxcui, sender_organization, serious, serious_congenital_anomaly, serious_death, serious_disabling, serious_hospitalization, serious_life_threatening, serious_other, stop_use, storage_and_handling, strength, substance, suspect_drugs, te_code, unii, upc, warnings, warnings_and_cautions, when_using
Input example
{"dataset": "drug_approval","search": "semaglutide","max_items": 10}
The default input is deliberately bounded and produces a small, useful Store test. max_items is a hard output ceiling.
Output example
A real record returned by the input above, abridged to fit:
{"dataset": "drug_approval","id": "NDA213051","application_number": "NDA213051","application_type": "NDA","brand_name": "OZEMPIC","generic_name": "ORAL SEMAGLUTIDE","manufacturer": "Novo Nordisk Pharmaceutical Industries, LP","sponsor_name": "NOVO","substance": "SEMAGLUTIDE","strength": "9MG","dosage_form": "TABLET","route": "ORAL","product_type": "HUMAN PRESCRIPTION DRUG","marketing_status": "Prescription","reference_drug": "Yes","reference_standard": "Yes","product_number": "006","product_count": 6,"rxcui": "2200644, 2200650, 2200652, 2200654, 2200656, 2200658","unii": "53AXN4NNHX","spl_set_id": "27f15fac-7d98-4114-a2ec-92494a91da98","pharm_class_epc": "GLP-1 Receptor Agonist [EPC]","pharm_class_moa": "Glucagon-like Peptide-1 (GLP-1) Agonists [MoA]","approval_date": "20190920","review_priority": "PRIORITY","latest_submission_date": "20260130","latest_submission_type": "SUPPL","latest_submission_class": "Labeling","submission_count": 13,"supplement_count": 12,"label_url": "https://www.accessdata.fda.gov/drugsatfda_docs/label/2026/213051Orig1s030lbl.pdf","approval_letter_url": "https://www.accessdata.fda.gov/drugsatfda_docs/appletter/2026/213051Orig1s030ltr.pdf"}
Columns are the same for every row of a given dataset, so a CSV export never shifts. Fields the selected dataset does not carry - NDC on device recalls, for instance - are returned as null rather than dropped or merged into another column.
Common use cases
- Drug and device safety research
- Recall monitoring
- Regulatory and product intelligence
- Building FDA reference datasets
Use with AI agents and MCP
Apify's MCP server can discover and call this Actor from an AI workflow. Example intent:
Return 10 FDA drug approval records matching semaglutide.
Use the JSON from Input example as the tool arguments. The strict input schema rejects unsupported parameters, and the documented dataset schema tells the agent how to interpret each returned field.
Pricing and cost control
Output is billed per result at $0.002 per result (about $2.00 per 1,000 results), plus a $0.0005 Actor-start charge billed once per gigabyte of memory at run start. Use max_items to cap both output volume and charges. The price shown on the Apify Store listing is authoritative.
max_items limits both output volume and result-based charges. Start with 10 records, inspect them, and then scale deliberately.
Reliability
The Actor validates input, bounds pagination, retries transient upstream failures, writes structured records, and fails explicitly when the source cannot produce usable output. A production default-input canary is monitored by the fleet.
Limitations and responsible use
- Adverse-event reports do not establish causation.
- Fields vary by selected FDA dataset and can be absent.
- Search syntax and coverage are governed by openFDA.
- This is public data retrieval, not medical or regulatory advice.
Use the data lawfully, respect source terms, and independently validate records before making consequential decisions.
FAQ
Does it need my own API key?
No, the default workflow does not require a customer-supplied API key.
Can I export the results?
Yes. Download the default dataset as JSON, CSV, Excel, or XML, or retrieve it through the Apify API.
How do I control cost?
Set max_items to the most records you want returned. Begin with the bounded default input.
Can an AI agent call it?
Yes. The Actor has strict input and semantic output schemas and can be called through Apify's MCP tooling.
What happens when a source field is missing?
The relevant field is returned as null or an empty normalized value rather than being merged into another field.