OTHERAI

FDA Drug Approval Search (Drugs@FDA)

Search the FDA's **Drugs@FDA database of 28,000+ drug applications** — including New Drug Applications (NDAs), Abbreviated New Drug Applications (ANDAs/generics), and Biologics License Applications (BLAs). Each result includes the full product lineup (brand names, strengths, dosage forms), complete submission history (original approval through every supplement), active ingredients, NDC codes, and review priority status.

Try on Apify Store
$0.03per event
0
Users (30d)
0
Runs (30d)
90
Actively maintained
Maintenance Pulse
$0.03
Per event

Maintenance Pulse

90/100
Last Build
Today
Last Version
1d ago
Builds (30d)
8
Issue Response
N/A

Cost Estimate

How many results do you need?

result-returneds
Estimated cost:$3.00

Pricing

Pay Per Event model. You only pay for what you use.

EventDescriptionPrice
result-returnedCharged per result returned. Includes data transformation and structured output.$0.03

Example: 100 events = $3.00 · 1,000 events = $30.00

Documentation

Search the FDA's Drugs@FDA database of 28,000+ drug applications — including New Drug Applications (NDAs), Abbreviated New Drug Applications (ANDAs/generics), and Biologics License Applications (BLAs). Each result includes the full product lineup (brand names, strengths, dosage forms), complete submission history (original approval through every supplement), active ingredients, NDC codes, and review priority status.

No API key required. Just enter a brand name like Ozempic or an active ingredient like semaglutide and get structured approval data in seconds.

Why Use FDA Drug Approval Search?

The Drugs@FDA database contains every FDA-approved drug application since the 1930s, but the data comes as deeply nested JSON with arrays of products (different strengths/formulations) and arrays of submissions (every regulatory action over the drug's lifecycle). This actor handles query construction, pagination, flattening of nested product/submission arrays, date normalization, application type extraction, original approval date identification, and submission sorting — giving you clean, structured records with both summary fields and full detail arrays.

Features

  • Brand name search — find drugs by brand/trade name (e.g., "Ozempic", "Keytruda", "Eliquis", "Lipitor")
  • Generic name search — find by generic name (e.g., "semaglutide", "pembrolizumab", "atorvastatin")
  • Active ingredient search — search by substance name (e.g., "metformin", "ibuprofen", "acetaminophen")
  • Sponsor lookup — search by company (e.g., "Pfizer", "Eli Lilly", "Novo Nordisk", "Merck")
  • Application number lookup — retrieve a specific NDA, ANDA, or BLA (e.g., "NDA020702")
  • Application type filtering — filter to NDAs only (new drugs), ANDAs only (generics), or BLAs only (biologics)
  • Submission status filter — filter by Approved (AP) or Tentatively Approved (TA)
  • Dosage form filter — narrow by form (e.g., "TABLET", "INJECTION", "CAPSULE", "SOLUTION")
  • Route filter — narrow by administration route (e.g., "ORAL", "INTRAVENOUS", "SUBCUTANEOUS")
  • Full product details — every strength, formulation, TE code, and reference drug flag
  • Complete submission history — chronologically sorted with type, status, review priority, and class description
  • Original approval date extraction — identifies the first ORIG/AP submission to find when a drug was originally approved
  • Summary statistics — automatic application type breakdown, top sponsors, dosage forms, and review priorities
  • Retry with backoff — built-in exponential backoff for API rate limits and transient errors

How to Use

  1. Enter search criteria — provide at least one filter: brand name, generic name, active ingredient, sponsor, application number, application type, dosage form, or route.

  2. Set the result limit — choose how many applications to return (1–1,000). Default is 100.

  3. Run and download — click "Start" and wait for the run to complete (typically 5–30 seconds). Download the structured JSON dataset.

  4. Review summary stats — check the run log for automatic summary including application type breakdown, top sponsors, and review priorities.

Input Parameters

ParameterTypeRequiredDefaultDescription
brandNameStringNo*Drug brand/trade name (e.g., "Ozempic", "Lipitor")
genericNameStringNo*Generic drug name (e.g., "semaglutide", "atorvastatin")
activeIngredientStringNo*Active ingredient/substance (e.g., "metformin", "ibuprofen")
sponsorNameStringNo*Sponsor company (e.g., "Pfizer", "Novo Nordisk")
applicationNumberStringNo*Specific NDA/ANDA/BLA number (e.g., "NDA020702")
applicationTypeSelectNoAllNDA (new drug), ANDA (generic), or BLA (biologic)
submissionStatusSelectNoAllApproved (AP) or Tentatively Approved (TA)
dosageFormStringNoDosage form (e.g., "TABLET", "INJECTION", "CAPSULE")
routeStringNoRoute of administration (e.g., "ORAL", "INTRAVENOUS")
maxResultsIntegerNo100Maximum applications to return (1–1,000)

*At least one search parameter is required.

Input Examples

Look up Lipitor by brand name:

{
    "brandName": "Lipitor"
}

Find all semaglutide products (Ozempic, Wegovy, Rybelsus):

{
    "activeIngredient": "semaglutide",
    "maxResults": 50
}

Pfizer NDA approvals only:

{
    "sponsorName": "Pfizer",
    "applicationType": "NDA",
    "maxResults": 200
}

All metformin generic applications:

{
    "genericName": "metformin",
    "applicationType": "ANDA",
    "maxResults": 100
}

Injectable biologics:

{
    "applicationType": "BLA",
    "dosageForm": "INJECTION",
    "maxResults": 500
}

Look up a specific application:

{
    "applicationNumber": "NDA020702"
}

Oral tablets from Eli Lilly:

{
    "sponsorName": "Eli Lilly",
    "dosageForm": "TABLET",
    "route": "ORAL",
    "maxResults": 100
}

Input Tips

  • Sponsor names are stored in UPPERCASE in the FDA database (e.g., "PFIZER", "NOVO NORDISK"). The actor handles case conversion automatically.
  • Use activeIngredient to find all formulations containing a substance — this returns combination products too (e.g., searching "metformin" returns Synjardy, Janumet, etc.).
  • Set applicationType to "ANDA" to find all approved generics for a drug — useful for patent expiry and generic competition analysis.
  • Brand name and generic name searches use the openFDA enrichment layer, which provides normalized names.
  • For large sponsors with many applications, combine with applicationType or dosageForm to narrow results.

Output

Each drug application record includes:

{
    "applicationNumber": "NDA020702",
    "applicationType": "NDA",
    "sponsorName": "UPJOHN",
    "brandNames": ["LIPITOR"],
    "genericName": "ATORVASTATIN CALCIUM",
    "activeIngredients": ["ATORVASTATIN CALCIUM"],
    "substances": ["ATORVASTATIN CALCIUM TRIHYDRATE"],
    "dosageForms": ["TABLET"],
    "routes": ["ORAL"],
    "marketingStatus": "Prescription",
    "productCount": 4,
    "products": [
        {
            "brandName": "LIPITOR",
            "activeIngredients": "ATORVASTATIN CALCIUM",
            "strength": "EQ 80MG BASE",
            "dosageForm": "TABLET",
            "route": "ORAL",
            "marketingStatus": "Prescription",
            "teCode": "AB",
            "isReferenceDrug": true
        }
    ],
    "submissionCount": 56,
    "latestSubmissionType": "SUPPL",
    "latestSubmissionStatus": "AP",
    "latestApprovalDate": "2024-04-02",
    "originalApprovalDate": "1996-12-17",
    "reviewPriority": "PRIORITY",
    "submissions": [
        {
            "type": "ORIG",
            "number": "1",
            "status": "AP",
            "statusDate": "1996-12-17",
            "reviewPriority": "PRIORITY",
            "classCode": "TYPE 1",
            "classDescription": "Type 1 - New Molecular Entity"
        }
    ],
    "productNdcs": ["0071-0157", "0071-0155"],
    "rxcui": ["259255", "262095"]
}

Output Fields

FieldTypeDescription
applicationNumberStringFDA application number (e.g., "NDA020702", "ANDA214629", "BLA761024")
applicationTypeStringApplication type: NDA, ANDA, or BLA
sponsorNameStringSponsor company name
brandNamesString[]All brand/trade names for products under this application
genericNameStringGeneric drug name from openFDA enrichment
activeIngredientsString[]Deduplicated list of active ingredient names
substancesString[]Substance names from openFDA (may include salt forms)
dosageFormsString[]Dosage forms (e.g., "TABLET", "CAPSULE", "INJECTION")
routesString[]Routes of administration (e.g., "ORAL", "INTRAVENOUS")
marketingStatusStringCurrent marketing status (e.g., "Prescription", "Over-the-counter")
productCountIntegerNumber of distinct products (strengths/formulations)
productsObject[]Detailed product array with strength, TE code, reference drug flag
submissionCountIntegerTotal number of regulatory submissions
latestSubmissionTypeStringMost recent submission type (ORIG or SUPPL)
latestSubmissionStatusStringMost recent submission status (AP, TA, etc.)
latestApprovalDateStringDate of most recent submission action (YYYY-MM-DD)
originalApprovalDateStringDate of original approval (first ORIG/AP submission)
reviewPriorityStringReview priority: STANDARD, PRIORITY, or ORPHAN
submissionsObject[]Full submission history sorted newest to oldest
productNdcsString[]National Drug Code numbers
rxcuiString[]RxNorm Concept Unique Identifiers for cross-referencing

Application Types

TypeFull NameDescription
NDANew Drug ApplicationBrand-name drugs with full clinical data
ANDAAbbreviated New Drug ApplicationGeneric drugs demonstrating bioequivalence
BLABiologics License ApplicationBiological products (vaccines, blood products, gene therapy)

Submission Class Codes

CodeDescription
TYPE 1New Molecular Entity
TYPE 2New Active Ingredient
TYPE 3New Dosage Form
TYPE 4New Combination
TYPE 5New Formulation or Manufacturer
TYPE 6New Indication
TYPE 7Already Marketed without NDA
EFFICACYEfficacy Supplement
LABELINGLabeling Change
MANUF (CMC)Manufacturing Change

Use Cases

  • Pharmaceutical companies tracking competitor drug approvals, generic entries, and supplemental submissions to inform commercial strategy
  • Generic drug manufacturers identifying NDA drugs approaching patent expiry to plan ANDA filings — use originalApprovalDate to estimate exclusivity timelines
  • Healthcare investors researching a sponsor's approved drug portfolio for due diligence, including review priority (PRIORITY = faster FDA review) and submission history
  • Patent attorneys cross-referencing drug approvals with patent filings and Orange Book listings
  • Pharmacy benefit managers tracking new drug approvals and generic alternatives for formulary decisions
  • Clinical researchers finding all approved formulations of a drug across sponsors, strengths, and routes
  • Regulatory affairs teams benchmarking submission types and review priorities for regulatory strategy planning
  • Market research firms analyzing drug approval trends by sponsor, therapeutic area, and application type

How to Use the API

Python

import requests
import time

run = requests.post(
    "https://api.apify.com/v2/acts/ryanclinton~fda-drug-approvals/runs",
    params={"token": "YOUR_APIFY_TOKEN"},
    json={
        "activeIngredient": "semaglutide",
        "maxResults": 50
    },
    timeout=30,
).json()

run_id = run["data"]["id"]
while True:
    status = requests.get(
        f"https://api.apify.com/v2/actor-runs/{run_id}",
        params={"token": "YOUR_APIFY_TOKEN"},
        timeout=10,
    ).json()
    if status["data"]["status"] in ("SUCCEEDED", "FAILED", "ABORTED"):
        break
    time.sleep(3)

dataset_id = status["data"]["defaultDatasetId"]
items = requests.get(
    f"https://api.apify.com/v2/datasets/{dataset_id}/items",
    params={"token": "YOUR_APIFY_TOKEN"},
    timeout=30,
).json()

for item in items:
    print(f"{item['applicationNumber']} | {item['brandNames']} | {item['sponsorName']} | Approved: {item['originalApprovalDate']}")

JavaScript

const response = await fetch(
    "https://api.apify.com/v2/acts/ryanclinton~fda-drug-approvals/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN",
    {
        method: "POST",
        headers: { "Content-Type": "application/json" },
        body: JSON.stringify({
            activeIngredient: "semaglutide",
            maxResults: 50,
        }),
    }
);

const drugs = await response.json();
drugs.forEach(d =>
    console.log(`${d.applicationNumber} | ${d.brandNames.join(", ")} | ${d.originalApprovalDate}`)
);

cURL

curl -X POST "https://api.apify.com/v2/acts/ryanclinton~fda-drug-approvals/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "activeIngredient": "semaglutide",
    "maxResults": 50
  }'

How It Works

Input (brandName, genericName, activeIngredient, sponsor, appNumber, filters)
  |
  v
+--------------------------------------------------+
|  Step 1: Build Search Query                      |
|  Construct openFDA query from input parameters.  |
|  Brand/generic/substance use openfda.* fields.   |
|  Sponsor name auto-uppercased for API match.     |
|  Terms joined with +AND+ conjunction.            |
+--------------------------------------------------+
  |
  v
+--------------------------------------------------+
|  Step 2: Paginated Fetch + Client Filter         |
|  Fetch up to 100 results per request using       |
|  skip/limit pagination. If applicationType       |
|  filter set, apply client-side (NDA/ANDA/BLA).   |
|  Retry with exponential backoff on 429/errors.   |
+--------------------------------------------------+
  |
  v
+--------------------------------------------------+
|  Step 3: Flatten Products                        |
|  Extract unique brand names, ingredients,        |
|  dosage forms, routes from product arrays.       |
|  Build per-product summaries with strength,      |
|  TE codes, reference drug flags.                 |
+--------------------------------------------------+
  |
  v
+--------------------------------------------------+
|  Step 4: Sort & Analyze Submissions              |
|  Sort submissions by date (newest first).        |
|  Identify original approval (first ORIG/AP).     |
|  Extract review priority. Build timeline.        |
+--------------------------------------------------+
  |
  v
+--------------------------------------------------+
|  Step 5: Summary Statistics                      |
|  Tally application types, top sponsors,          |
|  dosage forms, review priorities.                |
|  Log to run output.                              |
+--------------------------------------------------+
  |
  v
Structured drug approval records pushed to dataset

Data Sources

SourceAPI EndpointAuth RequiredRecords
FDA Drugs@FDA (openFDA)https://api.fda.gov/drug/drugsfda.jsonNo28K+

How Much Does It Cost?

ScenarioResultsEst. TimeEst. Cost
Single application lookup13 sec< $0.001
Active ingredient search (50 results)5010 sec< $0.01
Full sponsor portfolio (500 results)50025 sec~$0.01

The actor uses 256 MB memory and makes lightweight API calls with no browser rendering. The Apify free tier covers thousands of runs per month.

Tips

  • Use activeIngredient for comprehensive results — searching by substance finds all formulations including combination products (e.g., "metformin" returns Janumet, Synjardy, etc.).
  • Filter to ANDA for generic competition — set applicationType to "ANDA" to see all approved generics for a drug. The number of ANDA approvals indicates generic market saturation.
  • Check originalApprovalDate for patent timing — the original NDA approval date is a key reference point for Hatch-Waxman exclusivity periods and patent term extensions.
  • Review priority matters — "PRIORITY" review means the FDA determined the drug offers a significant improvement over existing treatments. This is a strong signal for investors and competitors.
  • TE codes indicate interchangeability — the therapeutic equivalence code (AB, AP, etc.) determines whether a generic can be substituted for the brand. "AB" means fully interchangeable.
  • RxCUI for cross-referencing — the rxcui field links to RxNorm, enabling cross-referencing with clinical systems, drug interaction databases, and pharmacy benefit platforms.
  • Submission history reveals strategy — the submissions array shows every regulatory action. Track labeling changes, efficacy supplements, and manufacturing changes over time.

Limitations

  • 1,000 result cap — the openFDA API limits results to 1,000 per query. Use filters to narrow large result sets.
  • Application type filter is client-side — the openFDA API doesn't support wildcards on application_number, so NDA/ANDA/BLA filtering happens after fetch. This means some API pages may be consumed by non-matching types.
  • Sponsor names are uppercase — the FDA stores sponsor names in ALL CAPS. The actor auto-uppercases your input, but partial matches may miss variations (e.g., "PFIZER INC" vs "PFIZER").
  • No therapeutic area field — the Drugs@FDA endpoint does not include a therapeutic category or indication field. Use the companion drug label actor for indication data.
  • openFDA enrichment gapsgenericName, substances, productNdcs, and rxcui come from the openFDA enrichment layer and may be empty for some older applications.
  • Submission dates only — the database tracks when submissions were filed and decided, not the duration of the review process.
  • Rate limiting — the openFDA API enforces rate limits. The actor handles this with exponential backoff, but rapid sequential runs may experience delays.

Responsible Use

  • All data is public domain — Drugs@FDA data is published by the US government and is freely available.
  • Respect openFDA rate limits — the actor includes built-in retry with backoff. Avoid launching dozens of concurrent runs.
  • Use for legitimate purposes — designed for pharmaceutical intelligence, market research, due diligence, generic competition analysis, and academic research.
  • Verify critical decisions — for regulatory submissions or investment decisions, always verify against the official Drugs@FDA database.

FAQ

Is an API key required? No. The openFDA API is free and requires no authentication.

How current is the data? The openFDA database is updated regularly. New approvals typically appear within days to weeks.

What is the difference between NDA, ANDA, and BLA? NDA (New Drug Application) is for new brand-name drugs with full clinical trial data. ANDA (Abbreviated New Drug Application) is for generic drugs that demonstrate bioequivalence to an approved NDA. BLA (Biologics License Application) is for biological products like vaccines, blood products, and monoclonal antibodies.

How can I find when a drug was first approved? The originalApprovalDate field contains the date of the first ORIG/AP submission — this is when the drug was originally approved by the FDA.

What does "PRIORITY" review mean? Priority Review means the FDA determined the drug may provide a significant improvement in the safety or effectiveness of treatment compared to existing options. Priority drugs get a 6-month review target vs. 10 months for standard.

Can I find all generic versions of a brand-name drug? Yes. Search by activeIngredient and set applicationType to "ANDA" to find all approved generics containing that substance.

What is a TE code? The Therapeutic Equivalence code indicates whether the FDA considers a generic interchangeable with the reference drug. "AB" means therapeutically equivalent and substitutable. "BX" means insufficient data for equivalence.

How far back does the data go? The database contains drug applications from the 1930s to present — the entire history of FDA drug regulation.

Integrations

  • Apify API — trigger runs programmatically for pharmaceutical intelligence pipelines
  • Zapier — automatically search for new drug approvals when a competitor files an application
  • Make (Integromat) — build workflows that monitor new generic approvals and alert your commercial team
  • Google Sheets — export drug approval data for competitive landscape analysis
  • Webhooks — receive approval data as soon as the run completes
  • Scheduled Runs — run weekly to track new drug approvals in your therapeutic area

Related Actors

ActorWhat it doesUse with Drugs@FDA
openFDA Drug Event MonitorFDA drug adverse eventsCross-reference approved drugs with their safety profiles
FDA 510(k) Device Clearance SearchMedical device clearancesCompanion for combination drug/device products
FDA PMA Device Approval SearchClass III device approvalsComplete FDA approval coverage across drugs and devices
Clinical Trial TrackerClinicalTrials.gov searchFind clinical trials for approved drugs
SEC EDGAR Filing AnalyzerSEC filing analysisResearch financial impact of drug approvals on pharma companies
USPTO Patent SearchUS patent databaseCross-reference drug patents with approval dates for exclusivity analysis

How it works

01

Configure

Set your parameters in the Apify Console or pass them via API.

02

Run

Click Start, trigger via API, webhook, or set up a schedule.

03

Get results

Download as JSON, CSV, or Excel. Integrate with 1,000+ apps.

Use cases

Sales Teams

Build targeted lead lists with verified contact data.

Marketing

Research competitors and identify outreach opportunities.

Data Teams

Automate data collection pipelines with scheduled runs.

Developers

Integrate via REST API or use as an MCP tool in AI workflows.

Ready to try FDA Drug Approval Search (Drugs@FDA)?

Start for free on Apify. No credit card required.

Open on Apify Store