FDA Drug NDC & Labeler Directory Scraper
Pricing
from $3.00 / 1,000 results
FDA Drug NDC & Labeler Directory Scraper
Search the FDA's public National Drug Code (NDC) Directory (openFDA) by labeler/company name, brand name, generic name, or product NDC. Returns real drug listings with labeler (manufacturer) company name, address info via openFDA, dosage form, route, marketing category, and active ingredients.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Share
Search the FDA's public National Drug Code (NDC) Directory (openFDA) by labeler/manufacturer company name, brand name, generic (active ingredient) name, or an exact product NDC code. Returns real, current drug listing data — labeler company, dosage form, route of administration, marketing category, active ingredients, packaging, and more. HTTP-only via the public api.fda.gov REST API. No auth, no login, no proxy required.
What this actor does
- Six search modes: search by labeler/company, by brand name, by generic name, look up one exact product NDC, look up every NDC listing filed under one FDA application number (NDA/ANDA/BLA), or look up one exact package NDC
- Filters: product type, marketing category (ANDA/NDA/BLA/OTC monograph/etc.), route of administration (all 70 FDA routes), dosage form (140+ FDA forms), pharmacologic class, DEA controlled-substance schedule (CI–CV), finished-products-only
- Sorting: by marketing start date or listing expiration date, ascending or descending
- Rich company data: labeler/manufacturer name, application number, active ingredients with strengths, packaging descriptions and package NDCs, pharmacologic classes
- Empty fields are omitted — every record only contains fields openFDA actually populated
Output per listing
productNdc— the FDA National Drug CodebrandName,brandNameBase,genericNamelabelerName,manufacturerNamedosageForm,route,productType,marketingCategorymarketingStartDate,marketingEndDate,listingExpirationDateapplicationNumber,finished,deaSchedule(only present for DEA-controlled substances)activeIngredients[],pharmClasses[],packageDescriptions[],packageNdcs[]rxcui,unii,upc— cross-reference identifiers where availableproductId,splId,splSetId— FDA Structured Product Labeling identifiers where availablesourceUrl— direct openFDA API query URL for the recordrecordType: "ndcListing",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | select | searchByLabeler | searchByLabeler / searchByBrand / searchByGeneric / byProductNdc / byApplicationNumber / byPackageNdc |
labelerName | string | – | Company name (required for mode=searchByLabeler; suggested value pfizer) |
brandName | string | – | Brand name (mode=searchByBrand) |
genericName | string | – | Generic/active-ingredient name (mode=searchByGeneric) |
productNdc | string | – | Exact NDC code (mode=byProductNdc) |
applicationNumber | string | – | Exact FDA application number, e.g. NDA213871 (mode=byApplicationNumber) |
packageNdc | string | – | Exact package-level NDC code, e.g. 0069-0235-30 (mode=byPackageNdc) |
productType | select | – | Filter by FDA product type |
marketingCategory | select | – | Filter by approval/marketing category |
route | select | – | Filter by route of administration (all 70 FDA routes) |
dosageForm | string | – | Filter by FDA dosage form, e.g. TABLET, CREAM (case-insensitive, matches whole words within the form -- e.g. TABLET also matches TABLET, FILM COATED) |
pharmClass | string | – | Filter by pharmacologic class keyword, e.g. vaccine, Opioid (case-insensitive, matches whole words) |
deaSchedule | select | – | Filter by DEA controlled-substance schedule (CI–CV) |
finishedOnly | boolean | false | Only finished drug products |
sortBy | select | – | Sort by marketingStartDate or listingExpirationDate, ascending or descending. Default is openFDA's unsorted relevance order |
maxItems | integer | 50 | Hard cap on emitted records (1–1000) |
Example: prescription drugs manufactured by Pfizer
{"mode": "searchByLabeler","labelerName": "pfizer","productType": "HUMAN PRESCRIPTION DRUG","maxItems": 50}
Example: lookup by exact NDC
{"mode": "byProductNdc","productNdc": "0069-0235"}
Example: lookup by FDA application number
{"mode": "byApplicationNumber","applicationNumber": "NDA213871"}
Example: lookup by exact package NDC
{"mode": "byPackageNdc","packageNdc": "0069-0235-30"}
Example: newest vaccines by pharmacologic class, sorted by marketing start date
{"mode": "searchByGeneric","genericName": "influenza","pharmClass": "vaccine","sortBy": "marketingStartDate:desc","maxItems": 25}
Use cases
- Pharmacovigilance & compliance — pull every NDC listing filed by a manufacturer to audit label/marketing category status
- Pharmacy & PBM systems — resolve NDC codes to brand/generic names, dosage form, and route for formulary management
- Drug database enrichment — bulk-import active-ingredient and packaging data by generic name or pharmacologic class
- Controlled-substance tracking — filter by DEA schedule to monitor scheduled-drug listings
- Market research — track new drug approvals and marketing start dates for a therapeutic class over time
Data source
Data comes from the openFDA National Drug Code (NDC) Directory, a genuinely public, free, no-authentication REST API published by the U.S. Food & Drug Administration. This actor replaces an originally-planned state Secretary-of-State business search target that was found to be fully blocked by enterprise bot management (Akamai / Cloudflare Turnstile challenges) even under real headless-browser testing — openFDA offers an equivalent, reliably scrapable company/business directory search.
FAQs
Do I need an API key? No. openFDA's public endpoints work without any key for this actor's usage levels.
Can I search by company name partially? Yes — labeler/brand/generic name searches are full-text matches, so partial names work (e.g. pfizer matches Pfizer Inc., Pfizer Consumer Healthcare, etc.).
Why are some fields missing from a record? Only fields openFDA has actually populated for that listing are included — no null placeholders or "N/A" values are ever emitted.