FDA NDC Directory: Drug Products & National Drug Code avatar

FDA NDC Directory: Drug Products & National Drug Code

Pricing

from $8.32 / 1,000 results

Go to Apify Store
FDA NDC Directory: Drug Products & National Drug Code

FDA NDC Directory: Drug Products & National Drug Code

Search the FDA National Drug Code (NDC) directory for marketed US drug products: product NDC, labeler/manufacturer, active ingredients, dosage form, route, marketing category and status, DEA schedule, pharm class and packaging-level NDCs. Export to JSON, CSV or Excel.

Pricing

from $8.32 / 1,000 results

Rating

0.0

(0)

Developer

Scrapers Lat

Scrapers Lat

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

FDA NDC Directory: Drug Products & National Drug Code

FDA NDC Directory: Drug Products & National Drug Code Scraper

Here is one real result, with every field the actor returns:

{
"productNdc": "82706-032",
"productId": "82706-032_16f27e7e-6bd6-4543-9b1e-b817b4874f8a",
"brandName": "Ibuprofen Minis",
"genericName": "Ibuprofen",
"labelerName": "Vivunt Pharma LLC",
"activeIngredients": [{ "name": "IBUPROFEN", "strength": "200 mg/1" }],
"dosageForm": "CAPSULE, LIQUID FILLED",
"route": ["ORAL"],
"productType": "HUMAN OTC DRUG",
"marketingCategory": "ANDA",
"marketingStatus": "Active",
"marketingStartDate": "2026-08-01",
"marketingEndDate": null,
"listingExpirationDate": "2027-12-31",
"applicationNumber": "ANDA206568",
"deaSchedule": null,
"packageCount": 2,
"packages": [
{
"packageNdc": "82706-032-01",
"description": "1 BOTTLE, PLASTIC in 1 BOX (82706-032-01) / 80 CAPSULE, LIQUID FILLED in 1 BOTTLE, PLASTIC",
"marketingStartDate": "2026-08-01",
"sample": false
},
{
"packageNdc": "82706-032-02",
"description": "1 BOTTLE, PLASTIC in 1 BOX (82706-032-02) / 160 CAPSULE, LIQUID FILLED in 1 BOTTLE, PLASTIC",
"marketingStartDate": "2026-08-01",
"sample": false
}
],
"pharmClass": ["Nonsteroidal Anti-inflammatory Drug [EPC]"],
"rxcui": ["310964"],
"unii": ["WK2XYI10QM"],
"upc": null,
"splId": "16f27e7e-6bd6-4543-9b1e-b817b4874f8a",
"isFinished": true,
"alternatives": null,
"aiSummary": null,
"observedAt": "2026-08-17T04:25:00.000Z",
"error": null
}

The most complete FDA National Drug Code (NDC) directory scraper available. It returns one clean row per marketed US drug product with its product NDC, labeler (manufacturer), active ingredients and strengths, dosage form, route, product type, marketing category and derived marketing status, DEA schedule, pharmacologic class, RxCUI, UNII, UPC, SPL ID, and every packaging-level NDC. Ten structured filters let you target exactly the products you need, and two optional add-ons return therapeutic/generic alternatives and a plain-English AI summary.

📥 Input · 📤 Output · 💰 Pricing · ▶️ Examples

Apify Coverage Output Billing

Table of contents

What it does

The actor searches the FDA National Drug Code (NDC) directory by generic name, brand name, labeler, exact NDC, product type, route, dosage form, marketing category, DEA schedule, or a raw query expression, paginates through the matching products, and writes one normalized record per drug product to the run's dataset. Each record carries the canonical product NDC, the labeler/manufacturer, active ingredients with strengths, dosage form and route, marketing category, a derived marketing status (Active or Discontinued), marketing start and listing expiration dates, DEA schedule, pharmacologic class, RxCUI, UNII, UPC, SPL ID, and the full list of packaging-level NDCs. Missing source values are returned as null.

Two optional add-ons (paid plans only) go beyond the base record:

  • Therapeutic alternatives looks up other marketed products that share the same generic name from a different labeler, returning {productNdc, brandName, labelerName, marketingCategory} for each, ideal for formulary and competitive analysis.
  • AI summary produces a short plain-English description of the product (what it is, drug class, common uses, prescription or OTC) from its ingredients and pharmacologic class. Informational only, not medical advice.

Use cases

  • NDC lookup and validation. Resolve any product NDC or package NDC to its labeler, ingredients, dosage form, and marketing status, the canonical US drug product identifier for claims and orders.
  • Formulary and drug database management. Build and refresh a formulary or drug master file with ingredients, strengths, routes, pharm class, and RxCUI cross-references.
  • Pharmacy and dispensing systems. Populate pharmacy software with packaging-level NDCs, dosage forms, and DEA schedules for controlled substances.
  • Drug supply chain and inventory. Track every package configuration and its NDC across labelers for procurement, wholesaler, and 340B workflows.
  • Reimbursement and 340B/pricing. Map NDCs to marketing category and status for payer, rebate, and reimbursement pipelines.
  • Competitive and market intelligence. Find every generic or therapeutic alternative to a product by generic name and labeler.
  • Healthcare data pipelines. Feed a clean, deduplicated drug product feed into analytics, master data management, or EHR integrations.

Quickstart

Open the actor, paste this into the input, and press Run. It returns the 50 most recently marketed ibuprofen products.

{
"genericName": "ibuprofen",
"maxResults": 50
}

Combine filters to narrow further, for example prescription-only oral products from a single labeler:

{
"labeler": "Pfizer",
"productType": "prescription",
"route": "ORAL",
"maxResults": 200
}

Input reference

FieldTypeRequiredDefaultDescription
genericNamestringnoibuprofenFilter by generic (non-proprietary) name, for example atorvastatin.
brandNamestringno(none)Filter by brand (proprietary) name, for example Advil.
labelerstringno(none)Filter by labeler / manufacturer, for example Pfizer or Teva.
ndcstringno(none)Exact product NDC lookup, for example 0069-2587.
productTypeenumno(any)Restrict to prescription or otc.
routestringno(none)Route of administration, for example ORAL, TOPICAL, OPHTHALMIC.
dosageFormstringno(none)Dosage form, for example TABLET, CAPSULE, INJECTION.
marketingCategorystringno(none)Marketing/approval category, for example NDA, ANDA, BLA, OTC MONOGRAPH FINAL.
deaSchedulestringno(none)Controlled-substance DEA schedule, for example CII, CIII, CIV, CV.
searchQuerystringno(none)Raw openFDA search expression added on top of the filters, for example marketing_start_date:[20240101 TO 20241231].
maxResultsintegerno50Maximum products to collect. Free Apify plans are capped at 10 per run.
includeAlternativesbooleannofalsePaid add-on. Therapeutic/generic alternatives per product. Billed only when alternatives are found.
withAiSummarybooleannofalsePaid add-on. AI plain-English summary per product. Billed only when produced.

Output reference

One dataset item per drug product. Types: string, boolean, integer, string[], object[], or null when the source value is absent.

FieldTypeDescription
productNdcstringProduct NDC, the canonical US drug product identifier, for example 82706-032.
productIdstringFull FDA product identifier (NDC plus SPL set id).
brandNamestringBrand (proprietary) name, or null.
genericNamestringGeneric (non-proprietary) name.
labelerNamestringLabeler / manufacturer name.
activeIngredientsobject[]Active ingredients as {name, strength}.
dosageFormstringDosage form, for example TABLET or CAPSULE, LIQUID FILLED.
routestring[]Route(s) of administration.
productTypestringHUMAN PRESCRIPTION DRUG, HUMAN OTC DRUG, or other FDA product type.
marketingCategorystringMarketing/approval category, for example NDA, ANDA, OTC MONOGRAPH FINAL, BLA.
marketingStatusstringDerived status: Active, or Discontinued when a marketing end date is set or the listing has expired.
marketingStartDatestringMarketing start date, YYYY-MM-DD.
marketingEndDatestringMarketing end date when present, else null.
listingExpirationDatestringNDC listing expiration date, YYYY-MM-DD.
applicationNumberstringFDA application number when present, for example ANDA206568.
deaSchedulestringControlled-substance schedule (CII..CV), or null.
packageCountintegerNumber of packaging configurations.
packagesobject[]Packaging-level NDCs as {packageNdc, description, marketingStartDate, sample}.
pharmClassstring[]Established pharmacologic class (EPC), or null.
rxcuistring[]RxNorm concept unique identifiers, or null.
uniistring[]Unique ingredient identifiers, or null.
upcstring[]Universal Product Codes when present, or null.
splIdstringStructured Product Labeling document id.
isFinishedbooleanWhether this is a finished (marketable) product.
alternativesobject[]Add-on: therapeutic/generic alternatives, or null.
aiSummaryobjectAdd-on: {whatItIs, drugClass, commonUses, prescriptionOrOtc}, or null.
observedAtstringISO 8601 timestamp of when the record was collected.
errorstringnull on success. On a failed run, a single item with a populated error field is written instead.

Run via API and CLI

Start a run and read the dataset. Replace <TOKEN> with your Apify API token.

Run synchronously and get dataset items in one call:

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~fda-ndc-drug-directory-scraper/run-sync-get-dataset-items?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"genericName":"atorvastatin","maxResults":100}'

Start a run asynchronously (labeler plus filters):

curl -X POST "https://api.apify.com/v2/acts/scrapers_lat~fda-ndc-drug-directory-scraper/runs?token=<TOKEN>" \
-H "Content-Type: application/json" \
-d '{"labeler":"Pfizer","productType":"prescription","maxResults":500}'

Apify CLI:

apify call scrapers_lat/fda-ndc-drug-directory-scraper \
--input '{"deaSchedule":"CII","maxResults":50}'

Fetch results

Every run writes to a dataset. Fetch items as JSON, CSV, or Excel by changing format:

# JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=json"
# CSV
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&clean=true&format=csv"
# Paginate large datasets
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?token=<TOKEN>&offset=1000&limit=1000"

<DATASET_ID> is returned as defaultDatasetId in the run object. Use offset and limit to page through large result sets. clean=true drops empty and internal fields.

Billing and limits

  • Pay per result. You are charged per drug product returned (result event). See the pricing tab for the current per-result price.
  • Alternatives add-on. When includeAlternatives is on, the alternatives event is billed once per product only when therapeutic/generic alternatives are found. Paid plans only.
  • AI summary add-on. When withAiSummary is on, the ai_summary event is billed per product only when the model returns usable output. Paid plans only. The summary is informational and not medical advice.
  • No charge on failure. If a run errors or matches nothing, the actor writes a single item with a populated error field (or no items) and does not charge for it.
  • Spend cap respected. Set maxTotalChargeUsd on the run; once reached, the actor stops emitting and charging further billable results.
  • Free Apify plans are capped at 10 products per run, and the paid add-ons are disabled. Upgrade for higher maxResults and add-ons.

FAQ and troubleshooting

A search returned 0 products. Why? The query matched nothing in the FDA NDC directory. Zero-result runs are not charged. Loosen the filters or check the spelling of the generic or brand name.

What is the difference between a product NDC and a package NDC? The product NDC identifies the drug product (labeler plus product). Each product can have several package NDCs, one per packaging configuration (bottle, carton, blister). Both are returned.

How is marketing status derived? A product is Active unless it has a marketing end date or its NDC listing expiration date is in the past, in which case it is Discontinued.

How do I look up one specific NDC? Put the product NDC in the ndc field, for example 0069-2587.

Can I combine filters? Yes. All filters are combined with AND, and searchQuery lets you add any raw openFDA expression on top.

Is this the same as drug labeling or adverse events? No. This actor covers the NDC product directory (identity, packaging, marketing). Drug labeling text and adverse event reports are separate datasets.