openFDA FAERS Adverse Event API
Datadory delivers drug retail data covering the openFDA FAERS adverse event corpus: 20,692,690 patient-level safety reports from 2004 to the present, each carrying demographics, suspect and concomitant drugs, indications, routes and MedDRA-coded reactions - delivered daily, weekly, or hourly as API, files, or a warehouse load.
What is the openFDA FAERS Adverse Event API?
Every product on an American drugstore shelf carries a second, quieter paper trail: the reports of what went wrong afterward. The openFDA FAERS Adverse Event API is the FDA Adverse Event Reporting System made addressable - 20,692,690 reports at the July 2026 count, each a structured case of a suspected side effect, a medication error, a product quality problem or a therapeutic failure involving a prescription or over-the-counter medicine. Cases follow the international ICH E2b/M2 safety-reporting standard, so a report filed in Canada parses identically to one filed in Ohio.
For Drug Retail work this is the risk ledger behind the shelf: who got hurt, how old they were, what they were taking, which product the reporter named, and how the case ended. Get a sample.
What does a real FAERS report look like?
One genuine case out of the twenty million, flattened for reading - a fatal transdermal case from Canada riding on an eight-digit safety report identifier whose final digit is a checksum:
safetyreportid 5801206-7
receivedate 20080707
serious 1 seriousnessdeath: 1
primarysource.reportercountry CANADA
patient.patientonsetage 26 unit code 801 = years
patient.patientsex 1 1 = male
patient.drug[0].medicinalproduct DURAGESIC-100
patient.drug[0].drugcharacterization 1 1 = suspect
patient.drug[0].drugadministrationroute 041 041 = transdermal
patient.drug[0].drugindication DRUG ABUSE
patient.reaction[0].reactionmeddrapt DRUG ADMINISTRATION ERROR
patient.reaction[1].reactionmeddrapt OVERDOSECases are append-only: a new report arrives under a fresh identifier rather than as an edit to an old one. Retained consecutive deliveries therefore build an arrival history - you can watch reaction vocabulary accumulate on a product quarter by quarter instead of seeing only today's cumulative total.
What fields does the dataset include?
Seventeen documented core fields per case, arranged in three tiers. Report metadata dates the submission through receipt, transmission and FDA-receipt timestamps and sets the seriousness flags - death, hospitalization, life-threatening, disability and congenital anomaly among them. The patient block holds age at onset with its unit code, sex, and two repeating arrays: reactions coded as MedDRA preferred terms, and drugs carrying the product name exactly as the reporter typed it, the drug's role in the event, the indication it was taken for and its administration route. A provenance tier adds the primary reporter's country and the manufacturer's own case number. Every core field, with type, definition and a genuine example:
Additional fields on request. Nested structures outrun the flat view - the drug array repeats once per product named in the case and the reaction array once per reported term, so a single multi-drug case flattens into many drug-reaction pairs under one identifier.
Where does coverage reach?
Geo: global submissions to FDA - American cases sit alongside foreign ones, and the primary reporter's country rides on every case, so domestic signal can be separated from worldwide noise. Temporal: 2004 Q1 to the present, more than twenty years of post-market reporting; the newest window keeps collecting late-arriving cases after it closes, so treat recent months as provisional rather than final. Granularity: one record per safety report with drug and reaction arrays nested inside.
One structural caveat outweighs every coverage edge: when several drugs and several reactions share a single report, nothing in the record ties a specific drug to a specific reaction. These counts measure reporting behavior at least as much as incidence, and any analysis that forgets that will find patterns the data never claimed.
How is the data delivered?
API, files, or your warehouse. Daily, weekly, or hourly.
Pick the slice, pick the cadence, pick the landing zone - the same twenty-million-case corpus arrives whichever way you take it, arrays intact. Because cases are only ever added, standing deliveries compound: yesterday's snapshot stays correct forever and the delta between deliveries is pure new intake, so longitudinal watch costs no historical re-pulls.
Who uses it, and for what?
- Pharmacovigilance and safety teams run disproportionality and signal-detection screens over the full twenty-year span, using suspect-drug roles and outcome flags as the priors their methods expect; the modeling notes sit on the data scientists use cases page.
- Competitive intelligence and product teams watch reaction vocabulary accumulate on rival products - a new preferred term clustering on a competitor's molecule is observable weeks before it becomes a headline; playbooks live on the competitive intel use cases page.
- Compliance and regulatory affairs test whether observed reaction profiles still match what the label warns about, turning label language into something falsifiable rather than assumed.
- Retail pharmacy and category managers read the age, sex and outcome mix around the categories they stock, putting a risk texture behind planogram decisions that usually run on margin alone.
- Investors and quants treat clusters of serious-outcome reports around a molecule as early litigation, recall and withdrawal risk - a screen input, not a verdict; screens are on the investors quants use cases page.
Which personas get the most value?
- Data scientists and ML engineers get the cleanest nesting-to-table story in the drug catalog: flatten arrays into drug-reaction pairs keyed by the safety report identifier, deduplicate on identifier plus combination, and the corpus is model-ready.
- Developers and builders get flat JSON records that load without parsing gymnastics, with coded values that resolve through the code key below rather than bespoke dictionaries per client.
- Market researchers get reporter-entered product names and indications as evidence of how medicines are actually used, off-label uses included - usage reality no marketing deck supplies.
- Journalists and academics get citable case patterns - a specific outcome, a specific country, a specific product spelling - instead of anecdotes about drug safety.
Which datasets pair with this one?
- openFDA NDC Directory API - the identity spine; resolving reporter-entered product names to harmonized drug codes is what turns reaction profiles into panels you can roll up by labeler or ingredient.
- openFDA Drug Label API (Structured Product Labeling) - what the label warns about, so observed reaction profiles can be tested against claimed warnings.
- openFDA Drug Enforcement / Recall API - enforcement actions matched on product identity, the natural next question after a signal hardens.
- openFDA Drugs@FDA API - approval histories and regulatory actions, adding regulatory age next to report counts.
- GoodRx Drug Prices & Pharmacy Finder - the commercial layer; pairing safety signal with price movement separates perception effects from access effects.
Three reference points frame the corpus before you commit: the definition of a FAERS adverse event report, how a MedDRA-coded reaction gets its vocabulary, and the National Drug Code (NDC) that anchors the join to product identity. The full ranking sits on best drug-retail datasets, the wider catalog on the drug retail data hub, and provenance notes across the agency's catalog on the U.S. FDA openFDA source profile.
Field dictionary
Every field below is documented against real records. The full dictionary ships with the sample.
| Field | Type | Definition | Example |
|---|---|---|---|
safetyreportid | string | Eight-digit unique report identifier: the first seven digits identify the report, the last digit is a checksum. | 5801206-7 |
receivedate | date | Date FDA received the report, written compactly as YYYYMMDD. | 20080707 |
receiptdate | date | Date the initial source received the report. | - |
transmissiondate | date | Date the report was transmitted to FDA's database. | - |
serious | string | Flag whether the event was serious (1) or non-serious (2). | 1 |
seriousnessdeath | string | Flag indicating a death outcome (1) or not (0 or blank). | 1 |
seriousnesshospitalization | string | Flag indicating a hospitalization outcome. | - |
seriousnesslifethreatening | string | Flag indicating a life-threatening outcome. | - |
patient.patientonsetage | number | Patient age at onset, interpreted together with patientonsetageunit (801 = years, 800 = decades). | 26 |
patient.patientsex | string | Patient sex code (1 = male, 2 = female). | 1 |
patient.drug.medicinalproduct | string | Name of the reported drug product exactly as entered by the reporter. | DURAGESIC-100 |
patient.drug.drugcharacterization | string | Role of the drug in the event: 1 = suspect, 2 = concomitant, 3 = interacting. | 1 |
patient.drug.drugindication | text | Indication for which the drug was taken, as reported. | DRUG ABUSE |
patient.drug.drugadministrationroute | string | Coded route of administration, for example 041 = transdermal. | 041 |
patient.reaction.reactionmeddrapt | string | MedDRA preferred term for the reported reaction. | OVERDOSE |
primarysource.reportercountry | string | Country of the primary reporter. | CANADA |
companynumb | string | Manufacturer's own case number for the report. | JACAN16471 |
Coverage at a glance
| Dimension | Coverage |
|---|---|
| Geography | Global submissions to FDA - US and foreign reports, with the primary reporter's country recorded on every case |
| Temporal | 2004 Q1 to present; 20,692,690 reports counted July 2026, with the newest window gaining late-arriving cases after it closes |
| Granularity | One record per safety report, with drug and reaction arrays nested inside each case |
| Scale | Roughly 113.7 GB of JSON across 1,767 quarter-cut partitions; seventeen documented core fields per case |
Code key - the coded values analysts meet first (illustrative entries; full mappings ship with the dictionary)
| Field | Code | Meaning |
|---|---|---|
| serious | 1 | Serious event |
| serious | 2 | Non-serious event |
| patient.drug.drugcharacterization | 1 | Suspect drug |
| patient.drug.drugcharacterization | 2 | Concomitant drug |
| patient.drug.drugcharacterization | 3 | Interacting drug |
| patient.patientsex | 1 | Male |
| patient.patientsex | 2 | Female |
| patient.patientonsetageunit | 801 | Age expressed in years |
| patient.patientonsetageunit | 800 | Age expressed in decades |
| patient.drug.drugadministrationroute | 041 | Transdermal |
Questions buyers ask
How many adverse event reports does the openFDA FAERS dataset contain?
20,692,690 safety reports at the July 2026 count, spanning 2004 Q1 to the present - roughly 113.7 GB of raw JSON across 1,767 quarter-cut partitions. Cases are appended under new identifiers rather than edited in place, so the total only moves upward, and retained consecutive deliveries turn the corpus into a running intake series.
What fields does a FAERS adverse event record include?
Three tiers per case: report metadata with receipt, transmission and FDA-receipt dates plus seriousness flags for death, hospitalization and life-threatening outcomes; a patient block with age at onset, sex and arrays of MedDRA-coded reactions and named drugs with roles, indications and routes; and provenance fields recording the primary reporter's country and the manufacturer's own case number.
Can the data show which drug caused which reaction?
No. When multiple drugs and multiple reactions appear in one report, the record carries no causal pairing between them - suspect, concomitant and interacting roles signal the reporter's suspicion but stop short of attribution. Analysts therefore work at report level or state combination-level assumptions explicitly, never reading co-occurrence within a case as causation.
Is the dataset usable for pharmacovigilance signal detection?
Yes, with the standard discipline. Twenty-plus years of MedDRA-coded reactions, suspect-drug roles and outcome flags are exactly what disproportionality methods consume. The counterweight is inherent to the design: reports are voluntary and unvalidated, so counts reflect reporting behavior alongside incidence, and every signal is a hypothesis for triage rather than a confirmed causal finding.
Does the dataset include patient demographics?
Age at onset with its unit code, sex and death outcome ride on each case where reported, next to the primary reporter's country and qualification. There are no names, contact details or other direct identifiers - these are de-identified safety cases - so demographic work happens at the aggregate level the fields allow, which suits category- and population-scale questions.
How should FAERS cases be joined to other drug datasets?
Through product identity. Reporter-entered product names resolve to harmonized codes with a cleaning pass against the NDC directory or label corpus, attaching reaction profiles to pricing panels and approval histories. Deduplicate on the safety report identifier plus each drug-reaction combination before joining, because flattened cases repeat the report header on every pair.
See the rows before you pay anything.
Name this dataset and we send real records from it — scoped to the fields you asked for.