# US Drug & Medical Reference Pro (`parseforge/us-drug-med-reference-pro-scraper`) Actor

Look up any US medication across FDA Orange Book, openFDA labels, FDA warning letters, MedlinePlus, Medscape and eMedicine in one search. Get brand names, ingredients, dosage forms, side effects, contraindications and warning letters.

- **URL**: https://apify.com/parseforge/us-drug-med-reference-pro-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Other, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

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

## 💊 US Drug & Medical Reference Pro Scraper

> 🚀 **Get US drug + clinical reference data in seconds.** One query fans out to six authoritative US medical sources in parallel and returns a single, normalized dataset.

> 🕒 **Last updated** 2026-05-27 · **📊 6 sources** per record · **all-in-one combo** · **US drug + clinical coverage**

The US Drug & Medical Reference Pro Scraper is a unified, all-in-one extractor that combines openFDA Drug Labels, the FDA Orange Book, FDA Warning Letters, MedlinePlus Health Topics, Medscape and eMedicine articles into a single Apify actor. You give it one search query and an array of sources; it scrapes them in parallel and returns one consistent dataset shape with a `source` discriminator on every record.

Coverage: 6 official US drug-and-clinical sources (openFDA, FDA datatables, NLM MedlinePlus, Medscape, eMedicine), one query input, parallel `Promise.allSettled` fetch, normalized `{source, title, url, id...}` records.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Pharma & medical-affairs analysts | Drug label & warning monitoring |
| Health-tech & clinical-data startups | Build condition + reference datasets |
| Compliance & regulatory researchers | FDA letters, Orange Book exclusivity |
| Medical writers & educators | Patient-friendly + clinician references |

### 📋 What the US Drug & Medical Reference Pro Scraper does

- Accepts a single `query` and an `sources` array (any combination of the 6 sources).
- Calls each selected source in parallel using `Promise.allSettled`.
- Normalizes results to `{ source, title, url, id... }`.
- Respects `maxItems` globally and distributes it across selected sources.
- Falls back gracefully when one source is down (the others still complete).

> 💡 **Why it matters:** instead of orchestrating six separate Apify actors, you run one and get one dataset.

### 🎬 Full Demo

🚧 Coming soon

### ⚙️ Input

<table>
<tr><th>Field</th><th>Type</th><th>Description</th></tr>
<tr><td><code>query</code></td><td>string</td><td>Free-text search applied to every selected source.</td></tr>
<tr><td><code>sources</code></td><td>array</td><td>Which sources to query in parallel.</td></tr>
<tr><td><code>maxItems</code></td><td>integer</td><td>Total dataset limit (free plan capped at 10).</td></tr>
<tr><td><code>proxyConfiguration</code></td><td>object</td><td>Apify Proxy configuration.</td></tr>
</table>

````

{
"query": "diabetes",
"sources": \["openfda-drug-labels", "medlineplus-conditions", "medscape-conditions"],
"maxItems": 30
}

```
```

{
"query": "tylenol",
"sources": \["openfda-drug-labels", "fda-orange-book", "fda-warning-letters"],
"maxItems": 60
}

````

> ⚠️ **Good to Know:** the `query` field is sent verbatim to each source - choose terms broad enough to match across drug labels, conditions, and articles.

### 📊 Output

| Field | Type | Description |
|---|---|---|
| 🏷️ `source` | string | Which source produced this record |
| 📌 `title` | string | Canonical title for the record |
| 🔗 `url` | string | Source URL |
| 🆔 `id` | string | Source-specific identifier |
| 🕒 `scrapedAt` | string (ISO) | Collection timestamp |
| ❌ `error` | string \| null | Error message if a source failed |

### ✨ Why choose this Actor

- 🔀 **6 sources in one actor** - no orchestration code on your side.
- ⚡ **Parallel fetch** - `Promise.allSettled` means slow sources don't block fast ones.
- 🧱 **Normalized shape** - `source` discriminator + shared core fields.
- 💸 **Pay-per-event ready** - only successful records are charged.

### 📈 How it compares to alternatives

| Approach | Coverage | Effort |
|---|---|---|
| 6 separate Apify actors | full | high orchestration |
| Manual scripts | full | very high maintenance |
| This combo actor | full | one call |

### 🚀 How to use

1. [Create a free account w/ $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp)
2. Open the actor page on Apify Console.
3. Provide a `query` and pick `sources`.
4. Set `maxItems` (paid plans unlock up to 1,000,000).
5. Run and Get your dataset (data).

### 💼 Business use cases

#### Pharma intelligence
Pull openFDA labels + Orange Book + warning letters in one shot.

#### Health-tech onboarding
Bootstrap a condition catalogue from MedlinePlus + Medscape.

#### Compliance monitoring
Daily sweep of FDA warning letters tagged with your watchlist.

#### Editorial / medical content
Cross-reference patient-friendly + clinician sources.

### 🔌 Automating US Drug & Medical Reference Pro Scraper

Make, Zapier, Slack, Airbyte, GitHub Actions, Google Drive - every standard Apify integration applies.

### 🌟 Beyond business use cases

#### Research
Cross-source citation studies.

#### Personal
Track medications you take across labels + warnings.

#### Non-profit
Health-education dataset bootstrap for community clinics.

#### Experimentation
LLM RAG data for medical Q&A bots (US sources only).

### 🤖 Ask an AI assistant about this scraper

ChatGPT · Claude · Perplexity · Copilot - all support “use this Apify actor”.

### ❓ Frequently Asked Questions

**Q: Which sources are included?**
openFDA Drug Labels, FDA Orange Book, FDA Warning Letters, MedlinePlus Health Topics, Medscape, eMedicine.

**Q: Are sources called in parallel?**
Yes - `Promise.allSettled`. One failing source does not stop the others.

**Q: How does `maxItems` distribute across sources?**
Roughly evenly: `ceil(maxItems / sources.length)` per source.

**Q: Is a paid Apify plan required?**
No, free is 10 items, paid unlocks up to 1,000,000.

**Q: What about TLS / anti-bot?**
Sources that need it use `impit` + Chrome TLS fingerprint.

**Q: Output output?**
data - pick on the dataset page.

**Q: Schedule it?**
Yes - Apify Schedules trigger on cron.

**Q: Webhooks?**
Yes, on success/failure.

**Q: Proxy?**
Apify Proxy auto group by default; override via input.

**Q: Affiliation?**
None. Independent tool. Public data only.

### 🔌 Integrate with any app

Make, Zapier, Slack, Airbyte, GitHub Actions, Google Drive, BigQuery, Snowflake, Postgres, Webhooks.

### 🔗 Recommended Actors

| Actor | What it does |
|---|---|
| [openFDA Drug Labels](https://apify.com/parseforge/openfda-drug-labels-scraper) | FDA drug label single-source |
| [FDA Orange Book](https://apify.com/parseforge/fda-orange-book-scraper) | Drug approval data |
| [MedlinePlus](https://apify.com/parseforge/medlineplus-conditions-scraper) | Patient health topics |
| [Medscape Articles](https://apify.com/parseforge/medscape-conditions-scraper) | Clinician reference |
| [eMedicine](https://apify.com/parseforge/emedicine-articles-scraper) | Clinical specialty hubs |

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge).

**🆘 Need Help?** [Open our contact form](https://tally.so/r/BzdKgA)

> **⚠️ Disclaimer:** independent tool, not affiliated with the FDA, NLM, Medscape, or WebMD/eMedicine. Only publicly available data is collected.

# Actor input Schema

## `query` (type: `string`):

Free-text query applied to each source (drug name, condition, company, specialty). Example: diabetes, tylenol, asthma.
## `sources` (type: `array`):

Which medical reference sources to query in parallel.
## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000
## `proxyConfiguration` (type: `object`):

Optional Apify Proxy. Defaults to Apify Proxy auto group.

## Actor input object example

```json
{
  "query": "diabetes",
  "sources": [
    "openfda-drug-labels",
    "fda-orange-book",
    "fda-warning-letters",
    "medlineplus-conditions",
    "medscape-conditions",
    "emedicine-articles"
  ],
  "maxItems": 10,
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}
````

# 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/us-drug-med-reference-pro-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/us-drug-med-reference-pro-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
}' |
apify call parseforge/us-drug-med-reference-pro-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "US Drug & Medical Reference Pro",
        "description": "Look up any US medication across FDA Orange Book, openFDA labels, FDA warning letters, MedlinePlus, Medscape and eMedicine in one search. Get brand names, ingredients, dosage forms, side effects, contraindications and warning letters.",
        "version": "0.1",
        "x-build-id": "MZaNo4KDw9VDFifiK"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~us-drug-med-reference-pro-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-us-drug-med-reference-pro-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~us-drug-med-reference-pro-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-us-drug-med-reference-pro-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~us-drug-med-reference-pro-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-us-drug-med-reference-pro-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": {
                    "query": {
                        "title": "Search Query",
                        "type": "string",
                        "description": "Free-text query applied to each source (drug name, condition, company, specialty). Example: diabetes, tylenol, asthma.",
                        "default": "diabetes"
                    },
                    "sources": {
                        "title": "Sources",
                        "uniqueItems": true,
                        "type": "array",
                        "description": "Which medical reference sources to query in parallel.",
                        "items": {
                            "type": "string",
                            "enum": [
                                "openfda-drug-labels",
                                "fda-orange-book",
                                "fda-warning-letters",
                                "medlineplus-conditions",
                                "medscape-conditions",
                                "emedicine-articles"
                            ],
                            "enumTitles": [
                                "openFDA Drug Labels",
                                "FDA Orange Book",
                                "FDA Warning Letters",
                                "MedlinePlus Health Topics",
                                "Medscape Articles",
                                "eMedicine Articles"
                            ]
                        },
                        "default": [
                            "openfda-drug-labels",
                            "fda-orange-book",
                            "fda-warning-letters",
                            "medlineplus-conditions",
                            "medscape-conditions",
                            "emedicine-articles"
                        ]
                    },
                    "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"
                    },
                    "proxyConfiguration": {
                        "title": "Proxy Configuration",
                        "type": "object",
                        "description": "Optional Apify Proxy. Defaults to Apify Proxy auto group.",
                        "default": {
                            "useApifyProxy": true
                        }
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
