NADAC Drug Acquisition Cost Scraper
Pricing
from $3.75 / 1,000 result items
NADAC Drug Acquisition Cost Scraper
Export NADAC (National Average Drug Acquisition Cost) records from data.medicaid.gov. Weekly pharmacy cost benchmark used by Medicaid. Filter by NDC, drug name, dosage form, or date range. Pull NDC, generic name, NADAC per unit, pricing unit, OTC flag, and effective date.
Pricing
from $3.75 / 1,000 result items
Rating
0.0
(0)
Developer
ParseForge
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share

💊 NADAC Drug Acquisition Cost Scraper
🚀 Export the National Average Drug Acquisition Cost benchmark in seconds. Weekly pharmacy acquisition prices for every NDC in the U.S. retail market. The same benchmark Medicaid uses for reimbursement.
🕒 Last updated: 2026-05-21 · 📊 13 fields per record · 💊 30,000+ NDCs · 🇺🇸 weekly U.S. pharmacy benchmark · 📅 history back to 2013
The NADAC Scraper turns the official Medicaid drug-pricing feed into clean rows. Each record carries the NDC, drug description, NADAC per unit, pricing unit, pharmacy type, brand vs generic classification, OTC flag, effective date, the corresponding generic NADAC, and the as-of file date. NADAC (National Average Drug Acquisition Cost) is produced by the Centers for Medicare & Medicaid Services from retail-pharmacy invoice surveys and is the most widely cited public benchmark for U.S. drug acquisition prices.
Coverage spans the full NADAC reference file: brand and generic drugs, both prescription and OTC, across every dosage form on the U.S. market. Files are republished weekly with effective dates that go back to 2013, giving you a long historical series for trend analysis.
| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| PBM analysts, drug-pricing researchers, employer health plans, 340B program managers, formulary teams, payer actuaries, pharmacy chains, health-policy academics | Reimbursement benchmarking, MAC list construction, drug-pricing trend studies, brand-to-generic substitution analysis, 340B ceiling-price modelling |
📋 What the NADAC Scraper does
Eight filtering workflows in a single run:
- 💊 Search by drug name. Partial match on the NDC description (e.g.
METFORMIN,IBUPROFEN). - 🔖 Search by NDC. Resolve a specific 11-digit National Drug Code.
- 🏷️ Filter by classification. Brand (
B) or generic (G) only. - 💉 Filter by dosage form. Tablet, capsule, solution, injection, suspension, cream, ointment, gel, syrup, elixir, powder, patch, inhaler, spray, drops, lotion, suppository, foam.
- 🛒 Filter by OTC flag. Over-the-counter only, prescription only, or both.
- 📅 Filter by effective date range. Lower and upper bounds on the price effective date.
- 🔁 Sort newest or oldest first. Walk the history forwards or backwards.
Each record includes the NDC, drug description, NADAC per unit (USD), the pricing unit (each, mL, gm), pharmacy type indicator, OTC flag, explanation code, brand vs generic classification, the corresponding generic drug NADAC and its effective date for substitution analysis, the file as-of date, and a link to the canonical Medicaid dataset page.
💡 Why it matters: building a NADAC pipeline yourself means cleaning weekly CSV refreshes, joining brand-generic pairs by hand, and watching for CMS dataset version rotations. This Actor returns clean rows on every run, filtered server-side.
🎬 Full Demo
🚧 Coming soon: a 3-minute walkthrough showing how to build a brand-vs-generic price diff table in one run.
⚙️ Input
| Input | Type | Default | Behavior |
|---|---|---|---|
| maxItems | integer | 10 | Records to return. Free plan caps at 10, paid plan at 1,000,000. |
| drugName | string | "METFORMIN" | Partial match on NDC description. |
| ndc | string | "" | Exact 11-digit NDC. |
| classification | string | "" | B (brand), G (generic), or any. |
| dosageForm | string | "" | One of 18 FDA dosage forms. |
| otc | string | "" | Y, N, or any. |
| effectiveFrom | string | "" | YYYY-MM-DD lower bound on effective date. |
| effectiveTo | string | "" | YYYY-MM-DD upper bound on effective date. |
| sortOrder | string | "newest" | Sort by effective date ascending or descending. |
Example: latest 100 metformin prices.
{"maxItems": 100,"drugName": "METFORMIN","classification": "G","sortOrder": "newest"}
Example: brand vs generic compare for ibuprofen tablets in 2024.
{"maxItems": 500,"drugName": "IBUPROFEN","dosageForm": "TABLET","effectiveFrom": "2024-01-01","effectiveTo": "2024-12-31"}
⚠️ Good to Know: NADAC reflects acquisition cost surveys from U.S. retail pharmacies. It is not a list price, a 340B ceiling price, or a wholesale acquisition cost (WAC). Use it as the benchmark CMS uses for reimbursement, not as a final purchase price.
📊 Output
Each NADAC record contains 13 fields. Download the dataset as CSV, Excel, JSON, or XML.
🧾 Schema
| Field | Type | Example |
|---|---|---|
🆔 ndc | string | "00093101901" |
💊 ndcDescription | string | "METFORMIN HCL TAB 500MG" |
💵 nadacPerUnit | number | null | 0.02341 |
📏 pricingUnit | string | null | "EA" |
📅 effectiveDate | string | "2025-04-23" |
🏪 pharmacyTypeIndicator | string | null | "C/I" |
🛒 otc | string | null | "N" |
🏷️ explanationCode | string | null | "3" |
🅱️ classificationForRateSetting | string | "G" |
💊 correspondingGenericDrugNadacPerUnit | number | null | 0.02341 |
📅 correspondingGenericDrugEffectiveDate | string | null | "2025-04-23" |
🗓️ asOfDate | string | null | "2025-05-01" |
🔗 sourceUrl | string | "https://data.medicaid.gov/dataset/nadac-..." |
🕒 scrapedAt | ISO 8601 | "2026-05-20T12:00:00.000Z" |
📦 Sample records
✨ Why choose this Actor
| Capability | |
|---|---|
| 💵 | Authoritative benchmark. The same NADAC file CMS uses for Medicaid reimbursement, not a third-party estimate. |
| 🔁 | Weekly refresh. New effective-date snapshots every week, going back to 2013. |
| 🅱️ | Brand vs generic pair. Corresponding generic NADAC right on the brand row, ready for substitution analysis. |
| 🔖 | NDC join keys. 11-digit NDC on every row for joining with claims, formularies, and 340B lists. |
| 📅 | Historical series. Pull every effective date for one NDC and chart price drift over years. |
| ⚡ | Fast. Hundreds of rows per minute on paid plans. |
| 🚫 | No login. Public CMS dataset, no token required. |
📊 NADAC is the most widely cited public benchmark for U.S. drug acquisition prices and the cornerstone of most state Medicaid reimbursement methodologies.
📈 How it compares to alternatives
| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| ⭐ NADAC Scraper (this Actor) | $5 free credit, then pay-per-use | Every U.S. NDC | Weekly per run | name, NDC, class, form, OTC, date | ⚡ 2 min |
| Commercial drug pricing services | $10k+/year | Multi-benchmark | Daily | Many | 🕒 Days |
| Direct CMS file downloads | Free | Full file | Weekly CSV | Build it yourself | 🐢 Hours |
| Manual lookup on data.medicaid.gov | Free | Full file | Weekly | Limited UI | 🐢 Tedious |
Pick this Actor when you want clean, filtered NADAC rows on demand without standing up a CMS data pipeline.
🚀 How to use
- 📝 Sign up. Create a free account with $5 credit (takes 2 minutes).
- 🌐 Open the Actor. Go to the NADAC Drug Acquisition Cost Scraper page on the Apify Store.
- 🎯 Set input. Pick a drug name, NDC, classification, or date range and set
maxItems. - 🚀 Run it. Click Start and let the Actor collect your NADAC rows.
- 📥 Download. Grab your results in the Dataset tab as CSV, Excel, JSON, or XML.
⏱️ Total time from signup to a downloaded NADAC dataset: 3-5 minutes. No coding required.
💼 Business use cases
🔌 Automating NADAC Scraper
Control the scraper programmatically for scheduled runs and pipeline integrations:
- 🟢 Node.js. Install the
apify-clientNPM package. - 🐍 Python. Use the
apify-clientPyPI package. - 📚 See the Apify API documentation for full details.
The Apify Schedules feature lets you trigger this Actor on any cron interval. A weekly schedule lines up with the CMS publishing cadence and keeps your pricing tables current.
🌟 Beyond business use cases
NADAC data also powers research, journalism, advocacy, and personal projects.
🤖 Ask an AI assistant about this scraper
Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:
- 💬 ChatGPT
- 🧠 Claude
- 🔍 Perplexity
- 🅒 Copilot
❓ Frequently Asked Questions
🧩 How does it work?
You pass a drug name, NDC, classification, dosage form, OTC flag, or date range. The Actor queries the CMS NADAC dataset, applies your filters server-side, sorts the results, and emits one clean row per record.
📏 What does NADAC measure?
NADAC is the National Average Drug Acquisition Cost. It is the survey-derived average price U.S. retail pharmacies pay to acquire a given NDC. It is not a list price, not a WAC, and not a 340B ceiling.
🔁 How often is the data refreshed?
CMS republishes the NADAC file weekly. Each run of this Actor returns the current published rows. Use date filters to pull historical snapshots.
📅 How far back does the history go?
Effective-date history extends back to 2013, giving you over a decade of weekly snapshots per NDC.
🅱️ Does it cover brand and generic drugs?
Yes. The classification field distinguishes brand (B) from generic (G), and the corresponding-generic-NADAC columns on brand rows make substitution analysis a one-step join.
🛒 What about OTC drugs?
Yes. The OTC flag covers over-the-counter products alongside prescription drugs. Filter to Y for OTC-only or N for prescription-only.
💼 Can I use this data commercially?
NADAC is CMS-published open data and may be redistributed. Review the source terms of use for your specific application.
⏰ Can I schedule regular runs?
Yes. A weekly Apify schedule lines up with the CMS publishing cadence and keeps your pricing tables current.
💳 Do I need a paid Apify plan?
No. The free Apify plan covers testing and small runs. Paid plans unlock larger datasets, scheduling, and concurrency.
🔁 What happens if a run fails?
Apify automatically retries transient errors. Partial datasets are preserved so you can adjust the input and re-run.
🆘 What if I need help?
Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.
🔌 Integrate with any app
NADAC Scraper connects to any cloud service via Apify integrations:
- Make - Automate multi-step workflows
- Zapier - Connect with 5,000+ apps
- Slack - Get run notifications in your channels
- Airbyte - Pipe pricing data into your warehouse
- GitHub - Trigger runs from commits and releases
- Google Drive - Export datasets straight to Sheets
You can also use webhooks to trigger downstream actions when a run finishes. Push fresh NADAC rows into your pricing engine, or alert your team in Slack when prices move beyond a threshold.
🔗 Recommended Actors
- 💊 DailyMed FDA Drug Labels Scraper - FDA prescribing information by NDC
- 🧬 ClinicalTrials.gov Scraper - Drug-trial records by condition or phase
- 🏥 Florida MQA Licensee Scraper - Healthcare-practitioner license lookups
- 🏥 Florida DFS Licensee Scraper - State-regulated professional licenses
- 📊 Figshare Research Scraper - Research dataset and figure metadata
💡 Pro Tip: browse the complete ParseForge collection for more healthcare and policy scrapers.
🆘 Need Help? Open our contact form to request a new scraper, propose a custom data project, or report an issue.
⚠️ Disclaimer: this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by the Centers for Medicare & Medicaid Services, data.medicaid.gov, or any drug manufacturer. All trademarks mentioned are the property of their respective owners. Only publicly available open pricing data is collected.