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

Scrapes FDA drug labels from the DailyMed website by drug name or manufacturer. Each row returns structured SPL metadata including active ingredients, dosage forms, packaging descriptions, and NDC codes.

- **URL**: https://apify.com/parseforge/dailymed-drug-labels-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Automation, Integrations, Business
- **Stats:** 1 total users, 0 monthly users, 89.7% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.50 / 1,000 results

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner.jpg)](https://apify.com/parseforge?fpr=vmoqkp)

### DailyMed Drug Labels Scraper

**Scrape FDA drug labels from DailyMed by drug name or manufacturer, up to a million per run.** Every label returns structured SPL metadata, active ingredients, dosage forms, packaging, and NDC codes. No API key. Export to JSON, CSV, Excel, or XML.

DailyMed hosts the official FDA Structured Product Labels (SPL) for thousands of prescription and over-the-counter drugs, but browsing or downloading them one by one is slow. This Actor reads the public DailyMed search and label pages directly, filtering by drug name or manufacturer, and returns each matching label in a consistent flat schema.\n\nIt is built for pharmacovigilance teams, pharmacy data integrators, and healthcare researchers who need bulk, structured drug label data without writing their own parser.

| Who uses it | What they scrape DailyMed for |
|---|---|
| Pharmacovigilance analysts | Monitor label changes and safety updates across a portfolio of drugs. |
| Pharmacy system integrators | Populate drug formulary databases with current NDC codes and packaging details. |
| Healthcare market researchers | Analyze active ingredient trends and manufacturer market share. |
| Regulatory compliance officers | Audit label consistency against FDA submission records. |

### What it does

This Actor collects FDA drug labels from DailyMed by drug name or manufacturer and returns each one as a flat row with structured SPL metadata.

- 🔍 **Drug name filter:** target a specific brand or generic name, or leave it empty to crawl broadly.
- 🏭 **Manufacturer filter:** restrict results to a single labeler or company name.
- 📦 **Structured SPL fields:** active ingredients, dosage forms, routes of administration, packaging descriptions, and NDC codes.
- ⚙️ **Max items control:** set a hard ceiling from 1 to 1,000,000 labels per run to manage costs and time.

Results export to CSV, JSON, Excel, or XML, or straight from the API.

### What you can do with DailyMed data

**📋 Build a drug formulary database.**

A pharmacy IT team runs the Actor with no filters to harvest all current FDA labels, then loads the NDC codes and packaging strings into their dispensing system.

**🔄 Monitor label revisions.**

A pharmacovigilance analyst runs the Actor weekly for a list of 200 drug names and diffs the active ingredient or warning sections against the previous run.

**📊 Analyze manufacturer market share.**

A healthcare consultant filters by manufacturer name to count how many SKUs each labeler has on the market and which dosage forms they produce.

**🔎 Find all drugs with a specific active ingredient.**

A researcher scrapes the full dataset and filters locally for labels containing a particular active moiety to identify all branded and generic versions.

### Why choose this scraper

|  | What you get |
|---|---|
| **No API key or registration** | Reads the public DailyMed website directly, no NIH account needed. |
| **Flat, predictable schema** | Every label returns the same fields so your pipeline never breaks on a missing column. |
| **Bulk scale** | Collect up to a million labels in a single run for large formulary or research projects. |
| **Structured SPL metadata** | Active ingredients, dosage forms, packaging, and NDC codes are parsed into separate fields. |

### How it compares

Three other DailyMed scrapers exist on Apify. This Actor focuses on a clean, flat schema with drug name and manufacturer as the only inputs, keeping the run configuration simple.

| Feature | ParseForge | DailyMed Drug Label Scraper | DailyMed Drug Label Scraper - FDA SPL, NDC & Labeler Data | DailyMed Drug Label Scraper (FDA/NLM) |
|---|---|---|---|---|
| Search by drug name | Yes | Yes | Not listed | Not listed |
| Search by manufacturer | Yes | Not listed | Not listed | Not listed |
| NDC codes in output | Yes | Yes | Yes | Not listed |
| Active ingredients parsed | Yes | Yes | Not listed | Not listed |
| Dosage forms and packaging | Yes | Yes | Yes | Not listed |
| Browse by drug class | Not listed | Yes | Not listed | Not listed |

### Configure the run

Drive the Actor with a drug name, a manufacturer name, or both, and set a maximum number of labels to cap the run. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "maxItems": 10
}
```

A larger pull:

```json
{
  "maxItems": 200
}
```

### Pricing

Pay-per-result: **$0.0085 per result** collected. You pay only for the results written to your dataset.

| Results collected | Approximate cost |
|---|---|
| 100 results | $0.85 |
| 1,000 results | $8.50 |
| 10,000 results | $85.00 |

New Apify accounts start with $5 in free credit.

### Free users

Free-plan runs return up to 10 results as a preview. [Upgrade your Apify plan](https://console.apify.com/sign-up?fpr=vmoqkp) to collect up to 1,000,000 results per run.

### Run it

1. [Create a free Apify account with $5 in credit](https://console.apify.com/sign-up?fpr=vmoqkp).
2. Open the [DailyMed Drug Labels Scraper](https://apify.com/parseforge/dailymed-drug-labels-scraper?fpr=vmoqkp).
3. Set your inputs and any filters, then click **Start**.
4. Export the results as CSV, Excel, JSON, or XML from the **Dataset** tab.

Run it programmatically through the [Apify API](https://docs.apify.com/api/v2) (`run-sync-get-dataset-items`) or the [ApifyClient](https://docs.apify.com/api/client/js) for JavaScript and Python.

### Use with AI agents (MCP)

Give an AI agent live access to DailyMed through the Model Context Protocol. Add the Actor to Claude, Cursor, or any MCP client:

```bash
claude mcp add --transport http apify "https://mcp.apify.com/?tools=parseforge/dailymed-drug-labels-scraper"
```

Then prompt it in plain language to run the scraper and read back the results.

### Troubleshooting

**Why am I getting no results?**

Check your spelling in the drug name or manufacturer field. DailyMed search is exact. Try a shorter substring or a different variation of the name. Also confirm that the drug is listed on the DailyMed website manually.

**The run stopped before reaching my max items limit.**

The Actor stops when DailyMed has no more results matching your filters. If you expected more labels, broaden your search by removing one of the filters or using a more general term.

**Some fields are empty in my output.**

Not every DailyMed label includes every SPL field. If a drug does not have a listed NDC or a particular dosage form, that field will be empty in your row. This is expected behavior reflecting the source data.

**The run is taking a long time.**

Large max items values mean more pages to visit. The Actor respects DailyMed's servers with polite delays. Reduce your max items or narrow your filters to speed up the run.

**I got an error or timeout.**

DailyMed may occasionally be slow. The Actor includes automatic retries. If the problem persists, try again later or reduce the max items to shorten the run duration.

### FAQ

| Question | Answer |
|---|---|
| Do I need an API key or NIH account to use this Actor? | No. The Actor reads the public DailyMed website, so no registration, API key, or OAuth flow is required. |
| What data fields does each drug label row contain? | Each row includes the drug name, manufacturer, active ingredients, dosage forms, routes of administration, packaging descriptions, NDC codes, and the full SPL metadata that DailyMed exposes on the label page. |
| Can I scrape labels for a single specific drug? | Yes. Enter the exact brand or generic name in the drug name input field and set max items to 1 to retrieve only that label. |
| How do I get all labels from one manufacturer? | Fill in the manufacturer field with the company name as it appears on DailyMed and leave the drug name field empty. The Actor will return every label associated with that manufacturer. |
| What output formats are supported? | You can export your dataset to JSON, CSV, Excel, or XML from the Apify platform after the run completes. |
| Does this Actor handle prescription and over-the-counter drugs? | Yes. DailyMed includes labels for both prescription and OTC human drugs, as well as some animal drugs and homeopathic products. |
| Can I get historical versions of a drug label? | DailyMed shows the current label. This Actor returns the label as it appears at the time of the run. For historical label archives, you would need to check the FDA's SPL history directly. |
| How many labels can I scrape in one run? | You can set the maximum anywhere from 1 to 1,000,000 labels. The Actor stops when it hits your limit or runs out of matching results. |
| What happens if I leave both drug name and manufacturer empty? | The Actor will crawl DailyMed broadly, returning labels in the order they appear until it reaches your max items limit. |
| Are NDC codes included in the output? | Yes. The Actor parses the National Drug Code (NDC) numbers from each label's packaging section and includes them in the output row. |

### Related actors

- [fda-drug-approvals-scraper](https://apify.com/parseforge/fda-drug-approvals-scraper?fpr=vmoqkp): Use this to scrape FDA drug approval letters and review documents instead of DailyMed labels.

Browse the full [ParseForge collection](https://apify.com/parseforge?fpr=vmoqkp) for more scrapers.

🆘 **Need help?** Email parseforge@protonmail.com with your run ID, your input, and what you expected.

⚠️ **Disclaimer.** This Actor is unofficial and is not affiliated with, endorsed by, or sponsored by U.S. National Library of Medicine. It collects only publicly available data. You are responsible for using the collected data in compliance with the source's terms of service and applicable data-protection laws, including GDPR, CCPA, and PIPL. Do not use it to collect personal data unlawfully.

# Actor input Schema

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

Filter by drug name.

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

Filter by manufacturer.

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

How many drug labels to collect per run.

## Actor input object example

```json
{
  "maxItems": 10
}
```

# Actor output Schema

## `results` (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
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/dailymed-drug-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 }

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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
}' |
apify call parseforge/dailymed-drug-labels-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/dailymed-drug-labels-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/IVSzX5IzQnLq4uDaw/builds/jWiN7bcPxqvYRFWye/openapi.json
