Healthcare / DOCUMENTED CSV
2025 NADAC Drug Acquisition Cost History
Compare historical drug acquisition benchmarks by NDC and week. Prepared change tables separate rate movements from repeated observations and changes in file coverage.
2025 CMS NADAC · January 1–December 31 · fixed historical edition
01 / KNOW THE FIT
A useful join starts
with a clear meaning.
What you can do with it
Track acquisition benchmarks for an NDC-coded research portfolio, compare selected weeks, or inspect the rates and coverage changes behind an annual analysis. The prepared change table removes the work of identifying repeated versus changed weekly records.
What one row means
One row is one 11-digit NDC observed in one weekly CMS snapshot. It includes the publisher’s rate, pricing unit, effective date, description and source flags. A weekly observation is not necessarily a new rate.
Unique keyndc + as_of_date
How to join it
Import ndc as text and use ndc + as_of_date for an exact observation. Rates are USD per EA, ML or GM, not per package. Keep effective_date separate from as_of_date. For other drug references, verify both NDC normalization and historical compatibility before joining.
Coverage, with the edges visible
All 1,608,416 original source observations are retained, covering 33,498 distinct NDCs across 53 weekly snapshots. The change table contains 361,770 changed NDC/week comparisons. Coverage differs by NDC; first/last observations and gaps are included.
Keep in mind
- This is historical 2025 data, not 2026 prices, a live feed or a complete drug universe. Later annual editions are not included.
- NADAC is a surveyed retail-community-pharmacy acquisition benchmark, not a patient’s retail price, a reimbursement guarantee or an individual pharmacy’s invoice. Not all off-invoice discounts are captured.
- 171 observations have rates effective after their snapshot date; explicit flags preserve them for review. Weekly records do not establish complete daily history or exactly when historical files were published.
- Appearances/disappearances describe the source file, not drug launches or discontinuations. Corresponding generic rates do not supply a generic-NDC crosswalk or establish interchangeability.
Preserves all source decimal rates and 11-digit identifiers, standardizes date formats, validates keys and source codes, and flags future-effective rates. Compares only adjacent snapshots with unchanged unit/type/classification for quantitative rate deltas. Independent raw-source acceptance verifies every observation and comparison; retained layers support offline replay. How we prepare and version our data →
02 / TRY THE SHAPE
Real rows. Before you buy.
These are the first three rows from the delivered CSV, showing 5 of 15 fields. The free download contains the first five rows and all 15 fields; it is a format sample, not a coverage test.
| ndc | as_of_date | nadac_per_unit | pricing_unit | effective_date |
|---|---|---|---|---|
| 00002143380 | 2025-01-01 | 471.69300 | ML | 2024-12-18 |
| 00002143380 | 2025-01-08 | 476.40993 | ML | 2025-01-01 |
| 00002143380 | 2025-01-15 | 476.40993 | ML | 2025-01-01 |
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.
| Field | Type | Meaning |
|---|---|---|
ndc | string | Original 11-digit NDC. Import as text to preserve leading zeros; no inferred conversion. |
as_of_date | string | YYYY-MM-DD weekly snapshot date in the CMS annual file. Not a price-effective date or proof of original publication time. |
ndc_description | string | CMS description, preserved exactly; not a unique key. |
nadac_per_unit | string | Source decimal USD benchmark per pricing_unit, unchanged precision. Not a package price or reimbursement amount. |
effective_date | string | YYYY-MM-DD date CMS assigns to this NADAC rate. May precede or follow as_of_date. |
pricing_unit | string | EA (each), ML (milliliter) or GM (gram). Never compare prices across units without separate normalization. |
pharmacy_type | string | C/I = chain and independent retail community pharmacies in this source. |
otc | string | CMS over-the-counter indicator Y or N, preserved. |
explanation_code | string | Original comma-separated CMS explanation codes. Meanings in code_definitions.csv. |
rate_classification | string | CMS rate-setting classification B, G, B-ANDA or B-BIO; not an inferred substitution recommendation. |
generic_nadac_per_unit | string | Corresponding generic benchmark USD per source pricing unit, when supplied; blank is missing, not zero. No generic NDC is supplied. |
generic_effective_date | string | CMS assigned effective date of the corresponding generic rate, when supplied. Not necessarily the generic product rate's own effective date. |
rate_effective_after_snapshot | string | true if effective_date is later than as_of_date, else false. Do not apply a future-effective rate early. |
generic_effective_after_snapshot | string | true or false when a corresponding generic date exists; blank when absent. |
source_row | string | One-based row in the retained annual CMS CSV, excluding its header. |
04 / INSIDE THE DOWNLOAD
Data, with its context.
One ZIP · 20.9 MB · 18 files. No account or subscription required.
README.mdImport guidance, method, attribution, and limitationsacceptance.jsonIndependent comparisons against the original CMS source and derived relationshipsall_tables_dictionary.jsonField types and definitions for all five data/reference tableschanges.csvChanged adjacent-snapshot records, with categories, both rates/effective dates, changed fields and comparable deltaschecksums.jsonSHA-256 checksums for the release filescode_definitions.csvMeanings of CMS units, rate-setting classifications and explanation codesdata_dictionary.jsonTypes and definitions for every fieldexample.pyCopyable Python endpoint-comparison example, runnable in a notebookexample_input.csvFictional research labels paired with real CMS NDCsexample_output.txtChecked printed resultsexample_result.csvExpected portfolio comparison with rates, units, effective dates and statusesmetadata.jsonSource provenance, production time, counts, and CSV checksumndc_summary.csvOne row per NDC, with first/last snapshot, observation count and gaps within its spanobservations.csvMain prepared table · UTF-8 CSVprovenance.jsonRetained source identifiers, URLs and file checksumsquality_report.jsonCoverage, missingness and product-specific quality checksrevision.jsonChanges and free-upgrade eligibility for this ACD revisionweekly_summary.csvObservation and comparison counts for each of the 53 weekly snapshots
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
- Source edition
- 2025 NADAC
- Weekly snapshot range
- January 1–December 31, 2025 (53 dates)
- CMS dataset metadata updated
- December 30, 2025
- ACD source capture
- October 17, 2026
- ACD preparation revision
- 1 · weekly observations, changes and coverage
- Package prepared (UTC)
- CMS NADAC 2025 dataset and public-domain label
- CMS pharmacy pricing and weekly methodology
- CMS acquisition-cost survey documentation
Source: Centers for Medicare & Medicaid Services. CMS publishes the source freely as public-domain data. ACD sells preparation, comparisons, validation and packaging. No CMS endorsement is implied.
RELEASE HISTORY
Oct 17, 2026 · current package (UTC)
First ACD NADAC release: five data/reference CSV tables, dictionaries, checked Python example, source and processing identities, quality report and independent acceptance. The change sheet compares weeks within the 2025 source, not two ACD releases.
2025 change sheet: weekly acquisition-cost comparisonsProcessing 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 observations.csv. A matching checksum confirms identical CSV bytes.
d4f57285c6e58d644a70e15041fe9092a07c8eac9372da58ca8419b12a2dd911READY TO PUT IT TO WORK?
2025 NADAC Drug Acquisition Cost History
$29 USD · one time · 1,608,416 weekly observations