# DailyMed FDA Drug Labels Scraper (`parseforge/dailymed-fda-labels-scraper`) Actor

Export FDA prescribing information (SPL labels) from DailyMed, the NIH drug label database. Search by drug name, ingredient, NDC, manufacturer, or DEA schedule. Pull brand/generic name, dosage form, route, ingredients, indications, warnings, adverse reactions, NDC codes.

- **URL**: https://apify.com/parseforge/dailymed-fda-labels-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Business, Other, Education
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.75 / 1,000 result items

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

![ParseForge Banner](https://github.com/ParseForge/apify-assets/blob/ad35ccc13ddd068b9d6cba33f323962e39aed5b2/banner.jpg?raw=true)

## 💊 DailyMed FDA Drug Labels Scraper

> 🚀 **Export FDA-approved drug prescribing information in seconds.** Pull **30 structured fields per label** from the NLM DailyMed catalog of **140,000+ Structured Product Labeling (SPL) records**. No login, no PDF parsing, no XML wrangling.

> 🕒 **Last updated:** 2026-05-21 · **📊 30 fields** per label · **💊 140,000+ SPL records** · **🇺🇸 every FDA-approved drug** · **🏷️ brand, generic, OTC, controlled**

The **DailyMed Drug Labels Scraper** turns the NLM's official drug label database into clean, downloadable records. Each output includes brand name, generic name, manufacturer, dosage form, route, active and inactive ingredients with strengths, NDC codes, indications, dosage instructions, warnings, adverse reactions, contraindications, clinical pharmacology, storage, and the canonical link to the source SPL document. DailyMed is operated by the U.S. National Library of Medicine and reflects the FDA's authoritative prescribing information.

Coverage spans the **entire FDA SPL corpus**: prescription drugs, over-the-counter monograph products, controlled substances scheduled C-I through C-V, biosimilars, animal drugs, homeopathic products, and dietary supplements registered with the FDA. New labels and revisions appear in DailyMed within days of FDA action, and every run of this Actor pulls the current published version.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Clinical decision support teams, pharma SaaS builders, regulatory affairs, drug-safety analysts, telehealth platforms, formulary managers, e-prescribing vendors, medical AI developers | Drug label databases, NDC lookups, prescribing-info APIs, controlled-substance audits, ingredient cross-references, formulary enrichment, pharmacovigilance feeds |

---

### 📋 What the DailyMed Drug Labels Scraper does

Seven filtering workflows in a single run:

- 💊 **Search by drug name.** Brand, generic, or partial match (e.g. `ibuprofen`, `lipitor`, `metformin`).
- 🧪 **Search by active ingredient.** Pull every label that contains a given substance.
- 🏷️ **Search by NDC.** Resolve a specific National Drug Code to its full label.
- 🏭 **Filter by manufacturer.** Restrict output to a single labeler (Pfizer, Mylan, Teva, etc.).
- 💉 **Filter by DEA schedule.** Controlled substances C-I through C-V.
- ✅ **Filter by marketing status.** NDA, ANDA generics, OTC monographs, unapproved, dietary supplements.
- 📅 **Filter by publish date.** Only pull labels updated on or after a given date.

Each record includes identifiers (SetID, SPL version, NDC list), product attributes (brand, generic, dosage form, route, DEA schedule, marketing status), composition (active and inactive ingredients with strengths), clinical content (indications, dosage, warnings, adverse reactions, contraindications, precautions, clinical pharmacology, how supplied, storage), and direct links to the official SPL page and PDF.

> 💡 **Why it matters:** building a drug-label pipeline yourself means parsing HL7 v3 SPL XML, decoding LOINC section codes, joining NDC product-package hierarchies, and refreshing nightly. This Actor returns flat, ready-to-load records on every run.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a clean drug-label dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
<tr><td><code>drugName</code></td><td>string</td><td><code>"ibuprofen"</code></td><td>Brand or generic name search.</td></tr>
<tr><td><code>ingredient</code></td><td>string</td><td><code>""</code></td><td>Active ingredient substance name.</td></tr>
<tr><td><code>ndc</code></td><td>string</td><td><code>""</code></td><td>National Drug Code (e.g. <code>0093-1019-01</code>).</td></tr>
<tr><td><code>manufacturer</code></td><td>string</td><td><code>""</code></td><td>Labeler or manufacturer name.</td></tr>
<tr><td><code>deaSchedule</code></td><td>string</td><td><code>""</code></td><td>One of C1, C2, C3, C4, C5.</td></tr>
<tr><td><code>marketingStatus</code></td><td>string</td><td><code>""</code></td><td>NDA, ANDA, OTC monograph, dietary supplement, etc.</td></tr>
<tr><td><code>publishedSince</code></td><td>string</td><td><code>""</code></td><td>YYYY-MM-DD lower bound on publish date.</td></tr>
</tbody>
</table>

**Example: 25 ibuprofen labels.**

```json
{
    "maxItems": 25,
    "drugName": "ibuprofen"
}
````

**Example: every Schedule II controlled substance from Mallinckrodt updated since 2024.**

```json
{
    "maxItems": 100,
    "manufacturer": "Mallinckrodt",
    "deaSchedule": "C2",
    "publishedSince": "2024-01-01"
}
```

> ⚠️ **Good to Know:** DailyMed publishes the FDA-approved prescribing information for each product. Inactive ingredients and packaging detail can vary by manufacturer revision. For dispensing or safety-critical use cases, always cross-check the live label on the official source.

***

### 📊 Output

Each label record contains **30 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🆔 `setId` | string | `"10b9a1fc-70d1-44ea-a6de-5c1943e8fbaa"` |
| 🔢 `splVersion` | number | null | `1` |
| 🏷️ `title` | string | `"ASPIRIN ENTERIC COATED, REGULAR STRENGTH (ASPIRIN) TABLET..."` |
| 💊 `brandName` | string | null | `"Aspirin Enteric Coated, Regular Strength"` |
| 🧬 `genericName` | string | null | `"Aspirin"` |
| 🏭 `manufacturer` | string | null | `"Gendose Pharmaceuticals, LLC"` |
| 🏢 `labelerName` | string | null | `"Pfizer Laboratories Div Pfizer Inc"` |
| 💉 `dosageForm` | string | null | `"TABLET, DELAYED RELEASE"` |
| 🚪 `route` | string | null | `"ORAL"` |
| 🚨 `deaSchedule` | string | null | `"C2"` |
| ✅ `marketingStatus` | string | null | `"OTC Monograph Drug"` |
| 📑 `marketingCategory` | string | null | `"NDA"` |
| 🔖 `ndcCodes` | string\[] | null | `["77333-035","77333-035-25","77333-035-20"]` |
| 📦 `packagingDescriptions` | string\[] | null | `["BOTTLE, PLASTIC; 100 TABLETS"]` |
| 🧪 `activeIngredients` | object\[] | null | `[{"name":"ASPIRIN","strength":"325 mg"}]` |
| 🧂 `inactiveIngredients` | object\[] | null | `[{"name":"POWDERED CELLULOSE"}, {"name":"STARCH, CORN"}]` |
| 🎯 `indications` | string | null | `"temporarily relieves minor aches and pains..."` |
| 📋 `dosageAndAdministration` | string | null | `"adults and children 12 years and over: take 1 tablet..."` |
| ⚠️ `warnings` | string | null | `"Reye's syndrome warning..."` |
| 💢 `adverseReactions` | string | null | `"Most common adverse reactions..."` |
| 🚫 `contraindications` | string | null | `"Known hypersensitivity to aspirin..."` |
| 🩺 `precautions` | string | null | `"Ask a doctor before use if..."` |
| 🔬 `clinicalPharmacology` | string | null | `"Mechanism of Action: aspirin..."` |
| 📦 `howSupplied` | string | null | `"Bottles of 100 tablets..."` |
| 🏷️ `storageAndHandling` | string | null | `"Store at 20-25°C..."` |
| 📅 `publishedDate` | string | null | `"2024-08-12"` |
| 📆 `effectiveDate` | string | null | `"2024-08-12"` |
| 🔗 `splUrl` | string | null | `"https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=..."` |
| 📄 `pdfUrl` | string | null | `"https://dailymed.nlm.nih.gov/.../spls/{setid}.pdf"` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-20T12:00:00.000Z"` |

#### 📦 Sample records

<details>
<summary><strong>💊 OTC monograph: Aspirin Enteric Coated, Regular Strength</strong></summary>

```json
{
    "setId": "10b9a1fc-70d1-44ea-a6de-5c1943e8fbaa",
    "splVersion": 1,
    "title": "ASPIRIN ENTERIC COATED, REGULAR STRENGTH (ASPIRIN) TABLET, DELAYED RELEASE [GENDOSE PHARMACEUTICALS, LLC]",
    "brandName": "Aspirin Enteric Coated, Regular Strength",
    "genericName": "Aspirin",
    "manufacturer": "Gendose Pharmaceuticals, LLC",
    "dosageForm": "TABLET, DELAYED RELEASE",
    "route": "ORAL",
    "deaSchedule": null,
    "marketingStatus": "OTC Monograph Drug",
    "ndcCodes": ["77333-035", "77333-035-25", "77333-035-20"],
    "activeIngredients": [{"name": "ASPIRIN"}],
    "inactiveIngredients": [
        {"name": "POWDERED CELLULOSE"},
        {"name": "STARCH, CORN"},
        {"name": "HYPROMELLOSE, UNSPECIFIED"},
        {"name": "TITANIUM DIOXIDE"}
    ],
    "indications": "temporarily relieves minor aches and pains due to: minor pain from arthritis, headache, menstrual pain, pain and fever of colds, toothache, muscle pain",
    "splUrl": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=10b9a1fc-70d1-44ea-a6de-5c1943e8fbaa",
    "pdfUrl": "https://dailymed.nlm.nih.gov/dailymed/services/v2/spls/10b9a1fc-70d1-44ea-a6de-5c1943e8fbaa.pdf",
    "scrapedAt": "2026-05-20T12:00:00.000Z"
}
```

</details>

<details>
<summary><strong>💉 Prescription generic: Metformin Hydrochloride Tablets</strong></summary>

```json
{
    "setId": "a3c1e8d4-1234-4567-89ab-cdef01234567",
    "splVersion": 12,
    "title": "METFORMIN HYDROCHLORIDE TABLET [TEVA PHARMACEUTICALS USA, INC.]",
    "brandName": "Metformin Hydrochloride",
    "genericName": "Metformin Hydrochloride",
    "manufacturer": "Teva Pharmaceuticals USA, Inc.",
    "dosageForm": "TABLET",
    "route": "ORAL",
    "marketingStatus": "ANDA",
    "marketingCategory": "ANDA",
    "ndcCodes": ["0093-1019-01", "0093-1019-10"],
    "activeIngredients": [{"name": "METFORMIN HYDROCHLORIDE", "strength": "500 mg"}],
    "indications": "indicated as an adjunct to diet and exercise to improve glycemic control in adults and pediatric patients with type 2 diabetes mellitus",
    "splUrl": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=a3c1e8d4-1234-4567-89ab-cdef01234567",
    "scrapedAt": "2026-05-20T12:00:00.000Z"
}
```

</details>

<details>
<summary><strong>🚨 Schedule II controlled: Oxycodone Hydrochloride</strong></summary>

```json
{
    "setId": "b7e5f2a1-abcd-ef01-2345-6789abcdef01",
    "splVersion": 8,
    "title": "OXYCODONE HYDROCHLORIDE TABLET [MALLINCKRODT, INC.]",
    "brandName": "Oxycodone Hydrochloride",
    "genericName": "Oxycodone Hydrochloride",
    "manufacturer": "Mallinckrodt, Inc.",
    "dosageForm": "TABLET",
    "route": "ORAL",
    "deaSchedule": "C2",
    "marketingStatus": "ANDA",
    "ndcCodes": ["0406-0552-01"],
    "activeIngredients": [{"name": "OXYCODONE HYDROCHLORIDE", "strength": "5 mg"}],
    "warnings": "Addiction, Abuse, and Misuse. Risks from Concomitant Use with Benzodiazepines or Other CNS Depressants.",
    "splUrl": "https://dailymed.nlm.nih.gov/dailymed/drugInfo.cfm?setid=b7e5f2a1-abcd-ef01-2345-6789abcdef01",
    "scrapedAt": "2026-05-20T12:00:00.000Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 💊 | **Full SPL coverage.** 140,000+ FDA Structured Product Labeling records, refreshed continuously by NLM. |
| 🔖 | **NDC join keys.** Every record carries its full National Drug Code list for joins with claims, formulary, and inventory tables. |
| 🧪 | **Ingredient-level detail.** Active and inactive ingredients with strengths, ready for allergy and substitution logic. |
| 🚨 | **Controlled-substance ready.** DEA schedule field for C-I through C-V audits. |
| ⚡ | **Fast.** 10 labels in under 30 seconds, hundreds per minute on paid plans. |
| 🌐 | **Authoritative source.** NLM-maintained, FDA-sourced prescribing information. |
| 🚫 | **No login.** Works against public NLM data. No account or token required. |

> 📊 Reliable drug-label data underpins every formulary, e-prescribing flow, drug-interaction checker, and safety report in modern healthcare.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ DailyMed Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **140,000+** SPL labels | **Live per run** | name, ingredient, NDC, mfr, DEA, status, date | ⚡ 2 min |
| Commercial drug databases | $10k+/year | Curated subset | Vendor cadence | Many | 🕒 Weeks |
| Direct NLM XML dumps | Free | Full corpus | Daily zip files | Build it yourself | 🐢 Days |
| Hand-built scrapers | Engineering time | Often incomplete | Manual | Whatever you code | 🛠️ Weeks |

Pick this Actor when you want fresh FDA labels in flat JSON without standing up an SPL parser.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the DailyMed FDA Drug Labels Scraper page on the Apify Store.
3. 🎯 **Set input.** Pick a drug name, ingredient, NDC, or manufacturer and set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your labels.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 🏥 Clinical Decision Support

- Drug-interaction checks built on real label warnings
- Allergy screens using inactive ingredient lists
- Dose-form and route guards in e-prescribing UIs
- Patient handouts auto-generated from indication text

</td>
<td width="50%" valign="top">

#### 💊 Pharma SaaS & Formulary

- Formulary loaders keyed on NDC and SetID
- Generic-equivalent suggestions via ANDA filter
- OTC monograph cross-reference tables
- Manufacturer rollups for sourcing analysis

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 📑 Regulatory & Safety

- Controlled-substance audits by DEA schedule
- Label-version diffs for change-control workflows
- Pharmacovigilance feeds tied to adverse-reaction text
- Recall research with manufacturer + NDC pivots

</td>
<td width="50%" valign="top">

#### 🤖 Healthcare AI & Search

- RAG corpora for clinical question answering
- Drug-name normalization for transcription pipelines
- Indication-based search for triage chatbots
- Embedding stores keyed by SPL section

</td>
</tr>
</table>

***

### 🔌 Automating DailyMed Drug Labels Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Nightly refreshes keep downstream drug-information systems in sync with the latest FDA label revisions.

***

### 🌟 Beyond business use cases

Drug label data powers more than commercial tools. Researchers, educators, civic groups, and hobbyists all benefit from clean SPL records.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Pharmacology coursework with structured ingredient data
- Health-economics studies on generic substitution
- Adverse-event mining for academic safety research
- Reproducible drug-label cohorts for thesis work

</td>
<td width="50%">

#### 🎨 Personal and creative

- Medical content sites with authoritative label sources
- Drug-information visualisations and explainer videos
- Personal medication trackers tied to real labels
- Open-source patient-education projects

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Patient-advocacy databases for low-cost medications
- Public-health dashboards on prescribing patterns
- Disaster-response stockpile audits by ingredient
- Investigative journalism on opioid or biosimilar markets

</td>
<td width="50%">

#### 🧪 Experimentation

- Train medical NER models on structured indications
- Prototype agent pipelines that resolve NDC to label
- Benchmark drug-name normalisers on real titles
- Test formulary-loader workflows with live data

</td>
</tr>
</table>

***

### 🤖 Ask an AI assistant about this scraper

Open a ready-to-send prompt about this ParseForge actor in the AI of your choice:

- 💬 [**ChatGPT**](https://chat.openai.com/?q=How%20do%20I%20use%20the%20DailyMed%20FDA%20Drug%20Labels%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🧠 [**Claude**](https://claude.ai/new?q=How%20do%20I%20use%20the%20DailyMed%20FDA%20Drug%20Labels%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🔍 [**Perplexity**](https://perplexity.ai/search?q=How%20do%20I%20use%20the%20DailyMed%20FDA%20Drug%20Labels%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)
- 🅒 [**Copilot**](https://copilot.microsoft.com/?q=How%20do%20I%20use%20the%20DailyMed%20FDA%20Drug%20Labels%20Scraper%20by%20ParseForge%20on%20Apify%3F%20Show%20me%20input%20examples%2C%20output%20fields%2C%20common%20use%20cases%2C%20and%20how%20to%20integrate%20it%20into%20a%20workflow.)

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

You provide a drug name, ingredient, NDC, manufacturer, or DEA schedule. The Actor queries DailyMed, fetches each matching label, parses the structured SPL document, and emits one clean record per label.

#### 📏 How accurate is the data?

DailyMed is the U.S. National Library of Medicine's official repository of FDA-approved prescribing information. Records reflect the manufacturer's most recent labelling submission. For dispensing or safety-critical use, always verify against the live label on the source page.

#### 🔁 How often is the dataset refreshed?

DailyMed receives new and revised SPL submissions continuously. Each run of this Actor pulls the current published version of every matching label.

#### 💉 Does it include controlled substances?

Yes. Use the DEA Schedule filter to restrict to C-I through C-V. The field is also populated on every relevant record.

#### 🌿 Does it include OTC and dietary supplements?

Yes. The Marketing Status filter covers OTC monograph products, dietary supplements, unapproved drugs, and homeopathic products in addition to NDA and ANDA prescription drugs.

#### 🏥 Can I use this for clinical decision support?

The data is FDA-sourced and suitable as a foundation. Always layer your own clinical validation and verify against the live source for dispensing or treatment decisions.

#### 💼 Can I use this data commercially?

DailyMed is U.S. government-published content and is generally free to redistribute. Review the NLM terms for your specific use case and respect any third-party trademark mentions in label content.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor nightly or weekly and keep a downstream drug-information database in sync with new FDA submissions.

#### 💳 Do I need a paid Apify plan?

No. The free Apify plan covers testing and small runs (10 records per run). Paid plans lift the limit and unlock scheduling and concurrency.

#### 🔁 What happens if a run fails?

Apify automatically retries transient errors. Partial datasets from failed runs are preserved, so you can inspect the log, adjust the input, and re-run without losing progress.

#### 🆘 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

DailyMed Drug Labels Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe label data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh label data into your product backend, or alert your clinical team in Slack.

***

### 🔗 Recommended Actors

- [**🧬 ClinicalTrials.gov Scraper**](https://apify.com/parseforge/clinicaltrials-gov-scraper) - Pull trial records by condition, phase, sponsor, or status
- [**🏥 Florida MQA Licensee Scraper**](https://apify.com/parseforge/florida-mqa-scraper) - Healthcare-practitioner license lookups
- [**📚 arXiv Research Scraper**](https://apify.com/parseforge/arxiv-scraper) - Academic paper metadata for life-science research
- [**🔬 OSF Open Science Scraper**](https://apify.com/parseforge/osf-scraper) - Open-science project metadata
- [**📊 Figshare Research Scraper**](https://apify.com/parseforge/figshare-scraper) - Research dataset and figure metadata

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more healthcare and research scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) 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 U.S. National Library of Medicine, the FDA, or any drug manufacturer. All trademarks mentioned are the property of their respective owners. Only publicly available drug label data is collected.

# Actor input Schema

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## `drugName` (type: `string`):

Search by brand name, generic name, or part of either (e.g. ibuprofen, lipitor, metformin).

## `ingredient` (type: `string`):

Filter by an active ingredient substance name.

## `ndc` (type: `string`):

National Drug Code (e.g. 0093-1019-01).

## `manufacturer` (type: `string`):

Labeler / manufacturer name (e.g. Pfizer, Mylan, Teva).

## `deaSchedule` (type: `string`):

Controlled substance schedule.

## `marketingStatus` (type: `string`):

Filter by FDA marketing status.

## `publishedSince` (type: `string`):

Only include labels published or updated on or after this date.

## Actor input object example

```json
{
  "maxItems": 10,
  "drugName": "ibuprofen"
}
```

# Actor output Schema

## `overview` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "maxItems": 10,
    "drugName": "ibuprofen"
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/dailymed-fda-labels-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "maxItems": 10,
    "drugName": "ibuprofen",
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/dailymed-fda-labels-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "maxItems": 10,
  "drugName": "ibuprofen"
}' |
apify call parseforge/dailymed-fda-labels-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=parseforge/dailymed-fda-labels-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "DailyMed FDA Drug Labels Scraper",
        "description": "Export FDA prescribing information (SPL labels) from DailyMed, the NIH drug label database. Search by drug name, ingredient, NDC, manufacturer, or DEA schedule. Pull brand/generic name, dosage form, route, ingredients, indications, warnings, adverse reactions, NDC codes.",
        "version": "1.0",
        "x-build-id": "Xlw7kCHLgk7vLz2iV"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~dailymed-fda-labels-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-dailymed-fda-labels-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/parseforge~dailymed-fda-labels-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-dailymed-fda-labels-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/parseforge~dailymed-fda-labels-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-dailymed-fda-labels-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    },
                    "drugName": {
                        "title": "Drug Name",
                        "type": "string",
                        "description": "Search by brand name, generic name, or part of either (e.g. ibuprofen, lipitor, metformin)."
                    },
                    "ingredient": {
                        "title": "Active Ingredient",
                        "type": "string",
                        "description": "Filter by an active ingredient substance name."
                    },
                    "ndc": {
                        "title": "NDC Code",
                        "type": "string",
                        "description": "National Drug Code (e.g. 0093-1019-01)."
                    },
                    "manufacturer": {
                        "title": "Manufacturer",
                        "type": "string",
                        "description": "Labeler / manufacturer name (e.g. Pfizer, Mylan, Teva)."
                    },
                    "deaSchedule": {
                        "title": "DEA Schedule",
                        "enum": [
                            "",
                            "C1",
                            "C2",
                            "C3",
                            "C4",
                            "C5"
                        ],
                        "type": "string",
                        "description": "Controlled substance schedule."
                    },
                    "marketingStatus": {
                        "title": "Marketing Status",
                        "enum": [
                            "",
                            "NDA",
                            "ANDA",
                            "OTC monograph final",
                            "OTC monograph not final",
                            "Unapproved drug other",
                            "Unapproved homeopathic",
                            "Dietary supplement"
                        ],
                        "type": "string",
                        "description": "Filter by FDA marketing status."
                    },
                    "publishedSince": {
                        "title": "Published Since (YYYY-MM-DD)",
                        "type": "string",
                        "description": "Only include labels published or updated on or after this date."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
