Datadory notebook

Is there a free API for FDA drug data? The five corpora behind the answer

Datadory delivers drug retail data covering the five corpora behind every free-API FDA drug answer: 261,996 structured product labels, 137,206 marketed US listings, 29,273 approval applications reaching back to 1939, 20,692,690 adverse-event reports and 17,876 recall reports, joined on shared NDC keys and delivered daily, weekly, or hourly.

1,744 datasets. Pick your catch.

What does the FDA drug data landscape actually hold?

The query reads like an access question and lands as a content question: what does the regulated half of the American medicine cabinet look like as rows? Better than most people expect. FDA drug oversight exists as structured records rather than pamphlets, and five corpora carry a product's entire regulated life - what it may say about itself, whether it legally sits on the shelf, how it got there, what went wrong after arrival, and when it left.

Counted at the August 2026 research pass: 261,996 structured product label versions carrying section-level indications, warnings and dosing text; 137,206 marketed drug listings with packages and ingredients nested beneath; 29,273 approval applications reaching back to 1939; 20,692,690 adverse-event reports coded in MedDRA; and 17,876 enforcement reports covering recalled or withdrawn lots. Those five anchor Datadory's drug-retail slice - sixteen cataloged records in all - and two of them carry perfect 10/10 quality scores, the strongest grades in the pool (drug retail data hub).

Whatever the search phrase promises, the honest deliverable behind it is a look before a commitment. Datadory's version of a look is a scoped sample of real rows with the field dictionary attached - same evidence, production grade.

Which datasets carry the regulated drug record?

openFDA Drug Label API (Structured Product Labeling) is the permission-to-speak corpus: 261,996 label versions running from June 2009 forward, roughly ninety searchable fields organized in two tiers - the label's own sections preserved verbatim as text arrays (indications, dosage, warnings, contraindications, ingredients, packaging) and a harmonized block attaching brand name, generic name, manufacturer, product and package NDCs, route and UNII codes. Revision history is first-class: a set identifier groups every version of a product's labeling into one lineage.

openFDA NDC Directory API is the identity spine: 137,206 marketed finished drug products filed under the Drug Listing Act of 1972, one row per product exploding downward into child rows per package - each with its own 11-digit package code - and per active ingredient, each with its strength. Marketing start dates reach back decades, and both registers sit side by side: prescription beside over-the-counter, generics houses beside cosmetics companies filing sunscreen.

openFDA Drugs@FDA API is the approval biography: 29,273 applications since 1939, each nesting product rows inside submission rows that timestamp every original approval and supplement, with therapeutic equivalence codes linked Orange Book-style - the raw material for generic-entry timing models.

openFDA FAERS Adverse Event API is the risk ledger: 20,692,690 safety reports from 2004 Q1 onward following the international ICH E2b/M2 reporting standard, so a case filed in Canada parses identically to one filed in Ohio. Patient demographics, suspect and concomitant drug arrays, indications, routes and reactions coded as MedDRA preferred terms ride inside every case.

openFDA Drug Enforcement / Recall API is the removal side: 17,876 enforcement reports since 2004, each carrying its Class I-III hazard classification, recorded status, recalling firm with city and state, distribution pattern, lot-and-expiry coding of affected units and a four-date lifecycle from initiation through termination.

Which drug-retail job does each dataset fit?

The five divide cleanly by job-to-be-done, and their weights differ by four orders of magnitude - a listing cut measured in megabytes sits beside a safety archive measured in dozens of gigabytes - so choosing the right record first saves real engineering time:

  • Building a product catalog or joining retailer UPC/GTIN shelf files to regulated identities? Start with the NDC Directory - scored 10/10 alongside the label corpus, the two highest grades among the slice's sixteen records.
  • Generating compliant patient-facing copy? The label corpus carries indications, warnings and dosage as verbatim section text you can lift intact rather than paraphrase.
  • Modeling generic entry or checking therapeutic equivalence? Drugs@FDA holds applications back to 1939, though its attached documents mostly date from 1998 forward.
  • Scoring safety signals? FAERS is the only adverse-event source in the slice, at twenty million cases and counting.
  • Watching supply-chain risk? The enforcement feed is the only recall record in the pool.

Everything in the table arrives through Datadory normalized to typed rows with the dictionary attached, so the choice stays analytical rather than infrastructural.

What do the rows and fields actually contain?

One genuine record out of each corpus, flattened for reading:

# SPL label record - one per label version
effective_time            20210902
purpose                   USES: Temporary Relief - Acne, Boils*
                          * Claims based on traditional homeopathic practice,
                            not accepted medical evidence. Not FDA evaluated.
warnings                  If symptoms do not improve in 4 days, discontinue use

# NDC Directory listing - packages and ingredients nested below the product
product_ndc               76354-154           dosage_form : CREAM
labeler_name              Taro Pharmaceuticals USA, Inc.
marketing_start_date      2019-06-24
package_ndc               76354-154-01        (30 g tube)

# FAERS case - one report, drug and reaction arrays nested inside
safetyreportid                        5801206-7
primarysource.reportercountry         CANADA
patient.drug[0].medicinalproduct      DURAGESIC-100
patient.reaction[0].reactionmeddrapt  DRUG ADMINISTRATION ERROR
patient.reaction[1].reactionmeddrapt  OVERDOSE

# Enforcement report - one row per affected product entry
classification           <Class I-III>
status                   <in progress through completed>
distribution_pattern     <nationwide through named states and countries>

That asterisked disclaimer inside the purpose section is the tell: label text survives verbatim, carve-outs and all, which is precisely why compliance teams mine it rather than paraphrase it. Every record also carries a harmonized openfda{} annotation block resolving national drug codes, labeler names, routes and generic names, so a single product code taken from the directory works as the search key against labels, approvals, adverse events and recalls without any third-party crosswalk. Map a retailer's barcode-keyed shelf file onto package rows and every UPC gains a labeler, a dosage form and marketing dates; attach recall classifications to active SKUs and inventory becomes risk-aware.

Three cautions travel with the data, straight from the regulator. Listing denotes marketing, not approval - an assigned code implies no FDA sign-off. Labels are preserved as filed but neither altered nor verified, so they can differ from currently distributed labeling. Adverse-event reports are voluntary and unvalidated, so counts reflect reporting behavior rather than incidence.

Where does the federal record stop and the retail record start?

Product truth, permission and safety live in the five federal corpora. Four adjacent questions sit outside them, and the slice carries named records for each.

What patients actually buy. Community pharmacy sales files in the Kaggle Pharmacy & Drug Retail Datasets collection arrive as invoice-grouped transaction lines built for basket and demand-forecasting benchmarks, each upload stamped with a usability score between 0 and 1.

What the software calls things. The NLM Clinical Table Search Service contributes the identifier grammar: 9,326 RxTerms display names with pre-built strength-and-form menus and RxNorm bridges, 2,342 drug ingredients, 74,719 ICD-10-CM codes and 9.37 million provider registry rows - the machinery behind drug-name autocomplete and e-prescribing flows.

The stack joins deliberately: identify products in the directory, describe them with labels, watch their safety in FAERS and the enforcement feed, normalize their names through RxTerms, then price them off the retail records. None substitutes for another, which is why they land joined on shared keys rather than as four separate projects.

Who builds on FDA drug data?

Compliance and content teams mine verbatim label sections for patient-facing material - the purpose section preserves even asterisked carve-outs, which is exactly why they cite rather than paraphrase.

Category managers and procurement leads resolve supplier and shelf files through the directory: any barcode becomes a labeler, a dosage form and a package.

Pharmacovigilance analysts and data scientists run disproportionality scoring over twenty million MedDRA-coded cases, treating each report as a signal to triage rather than a verdict.

Market-access and pricing analysts read generic-entry pressure off equivalency-coded application timelines - approval lag is subtraction inside one application, entry curves come from stacking applications that share a molecule.

Competitive-intel teams diff rival chains' regular versus sale prices at SKU level between pulls and track cash-versus-coupon positioning per molecule - see competitive intelligence product teams use cases.

Across all of them the value is the join: one column vocabulary running from listing code to reaction term to coupon price, so enrichment is a filter operation rather than a reconciliation project.

How is FDA drug data delivered?

The shaping work happens once, upstream of you: filtering to your NDC segments and dosage forms, flattening nested package, ingredient, submission and reaction arrays onto stable keys, keeping the openfda{} join block beside every row, and stacking append-only corpora so consecutive deliveries compound into longitudinal history instead of overwriting it. Upstream loads land on different rhythms per corpus, but your delivery schedule follows the decision the data feeds: hourly suits a recall watch desk, daily suits catalog reconciliation, monthly suits a compliance audit. The field dictionary travels alongside every pull, so the schema in your sample is the schema you ship against.

How do you see real rows before committing?

Skip the metered-evaluation loop entirely. Name the molecules, NDC segments, dosage forms, reporter countries and date window when you request a sample - every label revision for one brand since June 2009, the complete listing trail behind a generics house, adverse-event cases on three molecules of interest - and the extract arrives cut to that scope with the field dictionary and coverage statement attached. You keep the sample, the dictionary and the coverage statement regardless of what happens next.

That is the whole pitch behind the sample-first model: the thing you evaluated is the thing that ships, drawn from the same delivery path as the ongoing feed rather than from a fenced-off demonstration surface.

Where to go next

This page is one thread of the drug-retail slice. Start with the drug retail data guide for the full sixteen-record tour, browse the best drug-retail datasets ranking for the scored short version, and open the openFDA (FDA) source profile for what else this publisher ships beyond the drug corpora.

Field dictionaries, sample rows and coverage chips for the two highest-scored records sit on the openFDA Drug Label API (Structured Product Labeling) and openFDA NDC Directory API dataset pages, with the safety ledger detailed on the openFDA FAERS Adverse Event API page. Request a sample from any of them - the rows prove the rest.

Pick up where this leaves off

Every one of these ships with sample rows before you commit to anything.

Drug Retail United States

openFDA Drug Label API (Structured Product Labeling)

Drug Retail United States market

openFDA NDC Directory API

Drug Retail United States regulatory perimeter - approvals gating American…

openFDA Drugs@FDA API

Drug Retail Global submissions to the US FDA - United States and foreign…

openFDA FAERS Adverse Event API

Drug Retail United States regulatory perimeter

openFDA Drug Enforcement / Recall API

center_classification_date

Drug Retail United States

GoodRx Drug Prices & Pharmacy Finder

Want rows instead of a pitch? Name the datasets.

API, files, or your warehouse. Daily, weekly, or hourly.

Get a sample

Questions worth asking

Which FDA drug dataset should a pharmacy product build on first?

The NDC Directory. Any barcode-keyed shelf or supplier file resolves there to a labeler, a dosage form, a package and marketing dates; labels then supply the claims a product may make, and FAERS plus the enforcement feed attach the risk record. Build the identity spine first and hang everything else off it.

Do adverse-event reports prove a drug caused the reaction?

No. Reports are voluntary submissions and unvalidated, so counts track reporting behavior rather than incidence, and no single case establishes causality. Treat the corpus as signal detection: disproportionality scoring across twenty million MedDRA-coded reports surfaces candidates for triage, never verdicts.

Can FDA drug data be combined with retail pricing data?

Yes, and the keys already line up. Cash-price panels run drug x dosage x quantity and resolve toward directory package codes; chain shelf SKUs carry UPC/GTIN barcodes that map onto the same package rows; recall reports key on firm and product identity. Add label indications and a price panel shows which conditions a discount competes for.