Drug reference / DOCUMENTED CSV

FDA NDC Product & Package Reference

Enrich package NDCs with product attributes and ingredient records, with a checked join that preserves your input rows and quantities.

FDA source edition 2026-10-09 · first paid ACD release

256,752package entries
8main-table fields
138,339source product records
222,261ingredient entries

01 / KNOW THE FIT

A useful join starts
with a clear meaning.

What you can do with it

Add product names, labelers, dosage forms and other FDA source attributes to an NDC-coded inventory or research table. The included Python script preserves every input row and flags unresolved codes; no data upload is needed.

What one row means

The main packages.csv has one original FDA packaging-list entry per product_id and package_index. products.csv has one source product record per product_id. ingredients.csv has one source ingredient-list entry per product_id and ingredient_index. List positions and record IDs are snapshot keys, not guaranteed stable across editions.

Unique key
product_id + package_index

How to join it

Keep input NDCs as text. join.py accepts supported hyphenated package codes or 11 ASCII digits, counts source candidates, and adds attributes only for a unique product. It keeps missing, unsupported, absent and ambiguous codes in the output. Multiple package entries for one product are flagged for review; no package date is selected. Ingredients are counted rather than expanded.

Coverage, with the edges visible

138,339 source product records, 256,752 package entries and 222,261 ingredient entries. The package table contains 256,748 distinct source codes, of which 256,746 have supported normalized keys. Two unsupported entries remain in the source table. These are snapshot counts, not a buyer match-rate estimate.

Keep in mind

  • FDA listing does not establish approval, payer eligibility, current stock or availability. This is a data preparation product, not a clinical decision tool.
  • The source is a dated snapshot. No historical transaction matching, RxNorm, ATC, Orange Book or standardized ingredient linkage is included.
  • Four package codes have repeated entries with differing marketing dates; 1,909 product NDCs occur in multiple source records. Neither code should be assumed unique without checking the documented grain.
  • Dates stay as source text: 37,798 package start dates are not YYYYMMDD. Blank end dates do not prove a product is active. Routes remain JSON arrays and strengths remain unconverted text.
  • Unsegmented 10-digit input codes are not guessed. No ingredient records means the source supplied none, not that the product is ingredient-free.
WHAT MAKES IT ACTUALLY CLEAN

Source bytes, staging tables and processing code are retained separately. We validate table keys and relationships, preserve source labels and missing values, audit repeated codes and date formats, and normalize only explicit supported identifiers. The worked example preserves eight rows and 124 units where an unchecked expansion produces 12 rows and 174 units.

02 / TRY THE SHAPE

Real rows. Before you buy.

These are the first three rows from the delivered CSV, showing 4 of 8 fields. The free download contains the first five rows and all 8 fields; it is a format sample, not a coverage test.

FDA NDC Product & Package Reference · first three rows
package_ndcproduct_idpackage_indexdescription
0002-0013-030002-0013_15810e26-b479-41b8-9d13-9dc503a71a2a13 mL in 1 VIAL, MULTI-DOSE (0002-0013-03)
0002-0013-100002-0013_15810e26-b479-41b8-9d13-9dc503a71a2a210 mL in 1 VIAL, MULTI-DOSE (0002-0013-10)
0002-0095-000002-0095_15810e26-b479-41b8-9d13-9dc503a71a2a13 mL in 1 SYRINGE (0002-0095-00)

03 / NO GUESSING

Main table fields, explained.

The main table’s field dictionary from the current download. CSV has no built-in types; these are the intended import types.

Full dictionary: products, packages, ingredients, code index and enriched output →

All 8 fields in CSV order
FieldTypeMeaning
product_idtextFDA source record ID; primary/foreign key within this snapshot, not guaranteed stable across editions.
package_indextextOne-based source packaging-list position within product_id; not a durable package ID.
package_ndctextFDA package ndc; source text preserved, blank means not supplied. No independent verification.
package_ndc_record_counttextSource entries with this package code within this product, including the current entry.
descriptiontextFDA description; source text preserved, blank means not supplied. No independent verification.
marketing_start_datetextUnmodified source date text. Formats vary; blank means not supplied. See quality_report.json before parsing or filtering.
marketing_end_datetextUnmodified source date text. Formats vary; blank means not supplied. See quality_report.json before parsing or filtering.
sampletextFDA sample; source text preserved, blank means not supplied. No independent verification.

04 / INSIDE THE DOWNLOAD

Data, with its context.

One ZIP · 18.3 MB · 18 files. No account or subscription required.

05 / DATES THAT MEAN SOMETHING

Sources, versions & changes.

Source versions identify the inputs. Our processing revision describes how we prepare them. Either kind of change creates a new ACD release; the package date records when it was built.

Current source versions

FDA source edition
2026-10-09
ACD processing
Reviewed enrichment recipe 1; first paid package
Package prepared (UTC)

Data provided by the U.S. Food and Drug Administration; submitted by labelers and independently prepared by Actually Clean Data. No agency endorsement.

RELEASE HISTORY

Oct 13, 2026 · current package (UTC)

First paid FDA reference release. The tables and checked enrichment logic match the reviewed October pilot. This launch uses the retained October 9 source; it does not claim a new FDA edition. Processing improvements for this source edition are included free.

The public pilot provided a small worked example. Its synthetic inventory quantities demonstrate join behavior, not a representative customer match rate.

Try the inventory join and inspect the full field dictionary

Processing corrections and improvements for your purchased source edition are free. Genuinely new source editions may be sold separately. See the update policy and access instructions.

Check the downloaded CSV’s integrity

The metadata file inside the ZIP records this SHA-256 checksum for packages.csv. A matching checksum confirms identical CSV bytes.

f8e5dda26834756f4a386269f59d38ce82e7f74a5d888a2f0cf3b910951a681a

READY TO PUT IT TO WORK?

FDA NDC Product & Package Reference

$29 USD · one time · 256,752 package entries

Get the full dataset