# Health Canada Drug Database Scraper (`parseforge/health-canada-drug-database-scraper`) Actor

Scrapes the Health Canada Drug Product Database (DPD) for approved and marketed drugs. Returns brand name, DIN, active ingredients, company, dosage form, route, and marketing status as flat rows.

- **URL**: https://apify.com/parseforge/health-canada-drug-database-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Education, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $19.00 / 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?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

[![ParseForge](https://raw.githubusercontent.com/ParseForge/apify-assets/main/banner-v4.webp)](https://apify.com/parseforge?fpr=vmoqkp)

### Health Canada Drug Database Scraper

**Scrape the complete Health Canada Drug Product Database for approved and marketed drugs, including DINs, active ingredients, and company details.** Every record returns the brand name, manufacturer, dosage form, route of administration, and marketing status. Export to CSV, JSON, Excel, or XML.

Health Canada's Drug Product Database (DPD) is the authoritative source for human and veterinary drugs approved in Canada, but its web search is limited and manual. This Actor reads the public database directly, letting you filter by brand name, DIN, company, or marketing status, and returns every matching drug record in a clean, flat schema. No API key, no browser automation, no pagination to manage.

| Who uses it | What they scrape Health Canada Drug Product Database for |
|---|---|
| Pharmacovigilance analysts | Monitoring which drugs have been cancelled post-market for safety reporting. |
| Pharmaceutical market researchers | Tracking new drug approvals and market entries by manufacturer. |
| Healthcare procurement teams | Building a master list of marketed drugs with active ingredients and DINs. |
| Regulatory affairs consultants | Checking the current marketing status of a portfolio of drug products. |

### What it does

This Actor collects drug product records from the Health Canada Drug Product Database by brand name, DIN, company, or status, and returns each one as a flat row with standardized fields.

- 🔍 **Brand name search:** Find drugs by partial or full brand name, like 'tylenol' or 'advil'.
- 🏢 **Company filter:** Narrow results to a specific manufacturer or drug owner.
- 🔢 **DIN lookup:** Retrieve the exact record for a known 8-digit Drug Identification Number.
- 📋 **Status filter:** Limit results to Approved, Marketed, Cancelled Post-Market, Cancelled Pre-Market, or Dormant drugs.
- ⚙️ **Flexible combinations:** Use any filter alone or together to build a precise query.

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

### What you can do with Health Canada Drug Product Database data

**📋 Build a Canadian drug formulary.**

A health insurer scrapes all Marketed drugs by company to populate an internal formulary with DINs, brand names, and active ingredients.

**⚠️ Monitor post-market cancellations.**

A pharmacovigilance team runs a weekly scrape filtered by 'Cancelled Post Market' status to flag drugs that have been withdrawn for safety reasons.

**🔬 Research active ingredient trends.**

A pharmaceutical analyst scrapes the full database by company to see which active ingredients a manufacturer is bringing to market.

**📦 Validate procurement lists.**

A hospital pharmacy checks a list of DINs against the database to confirm each drug is still Marketed before placing orders.

### Why choose this scraper

|  | What you get |
|---|---|
| **Official source** | Data comes directly from Health Canada's Drug Product Database, the same system used by regulators. |
| **Fixed schema** | Every record returns the same fields: brand name, DIN, active ingredients, company, dosage form, route, and status. |
| **No rate limits** | Reads the public database without API keys, OAuth, or per-minute quotas. |
| **Bulk export** | Download up to a million records in one run to CSV, JSON, Excel, or XML. |

### How it compares

No other Store actor targets Health Canada Drug Product Database the same way, so the honest comparison is with the alternatives teams actually weigh.

| | Health Canada Drug Database Scraper | Build it in-house | By hand |
|---|---|---|---|
| Setup | Run it now, zero config | Days of engineering | None, but hours per pull |
| When Health Canada Drug Product Database changes | Maintained for you | You fix it | You re-learn the page |
| Proxies, retries, anti-bot | Built in | Your problem | Browser only |
| Output | Fixed JSON schema, CSV/Excel export | Whatever you build | Copy-paste |
| Cost | Pay per result | Engineering time | Analyst hours |

### Configure the run

Drive the Actor with a brand name, DIN, company name, or marketing status, alone or in combination, and filters run as each record is read so only matches reach your dataset. The Input tab lists every parameter.

A first run with the defaults:

```json
{
  "brandName": "tylenol",
  "maxItems": 10
}
```

A larger pull:

```json
{
  "brandName": "tylenol",
  "maxItems": 200
}
```

### Pricing

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

| Results collected | Approximate cost |
|---|---|
| 100 results | $2.10 |
| 1,000 results | $21.00 |
| 10,000 results | $210.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 [Health Canada Drug Database Scraper](https://apify.com/parseforge/health-canada-drug-database-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 Health Canada Drug Product Database 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/health-canada-drug-database-scraper"
```

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

### Troubleshooting

**Why am I getting no results for my brand name?**

The brand name filter uses a partial match. Try a shorter substring, like 'tyleno' instead of 'tylenol extra strength', or check the spelling. Also verify you have not set a restrictive status filter that excludes your drug.

**My DIN search returns nothing.**

DINs must be exactly 8 digits. Check that you have not included spaces, hyphens, or leading zeros that are missing. If the DIN is correct, the drug may no longer be active in the database.

**I am only getting 10 records.**

Free Apify accounts are limited to 10 items as a preview. Upgrade to a paid plan and set the 'Maximum drugs' field to a higher number, up to 1,000,000.

**The run takes a long time with a high maxItems.**

The Actor fetches records in batches. A large maxItems value, especially with no filters, will take longer because it is retrieving more pages. Add a brand name or status filter to narrow the scope and speed up the run.

### FAQ

| Question | Answer |
|---|---|
| What is the Health Canada Drug Product Database? | It is the official public listing of human and veterinary drugs approved by Health Canada. Each record includes the brand name, DIN, active ingredients, manufacturer, dosage form, route of administration, and current marketing status. |
| What is a DIN? | A Drug Identification Number (DIN) is an 8-digit number assigned by Health Canada to every drug product approved for sale in Canada. You can use it to look up a specific drug record. |
| Can I scrape veterinary drugs too? | Yes. The Drug Product Database includes both human and veterinary drug products. Use the brand name or company filter to narrow your search. |
| What marketing statuses can I filter by? | You can filter by Approved, Marketed, Cancelled Post-Market, Cancelled Pre-Market, or Dormant. Leave the status filter empty to return all statuses. |
| Do I need an API key or login? | No. This Actor reads the public database directly. There is no registration, no API key, and no OAuth flow required. |
| How many records can I get in one run? | Free users are limited to 10 records as a preview. Paid users can set a maximum up to 1,000,000 records per run. |
| Can I search by active ingredient? | The input schema supports brand name, DIN, company name, and status. Active ingredient is returned in the output fields but is not a direct input filter. |
| What export formats are supported? | Your dataset can be exported to CSV, JSON, Excel, or XML directly from the Apify platform. |
| Is the data in English or French? | Health Canada publishes drug product information in both English and French. The fields returned reflect the official bilingual labeling. |
| How often is the database updated? | Health Canada updates the Drug Product Database nightly. Each run of this Actor fetches the current data available at that moment. |

### Related actors

- [ema-medicines-scraper](https://apify.com/parseforge/ema-medicines-scraper?fpr=vmoqkp): Use this instead if you need drug product information from the European Medicines Agency.

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 Health Canada. 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

## `brandName` (type: `string`):

Filter by brand name (partial match).

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

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

## `companyName` (type: `string`):

Filter by manufacturer/owner.

## `din` (type: `string`):

Drug Identification Number (8 digits).

## `status` (type: `string`):

Approval/marketing status code.

## Actor input object example

```json
{
  "brandName": "tylenol",
  "maxItems": 10
}
```

# Actor output Schema

## `results` (type: `string`):

Scraped Health Canada Drug Database Scraper - DIN, Brand, DPD records

# 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 = {
    "brandName": "tylenol",
    "maxItems": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("parseforge/health-canada-drug-database-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 = {
    "brandName": "tylenol",
    "maxItems": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("parseforge/health-canada-drug-database-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 '{
  "brandName": "tylenol",
  "maxItems": 10
}' |
apify call parseforge/health-canada-drug-database-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,parseforge/health-canada-drug-database-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/oSSGTG6NObzbJXGRe/builds/ejtyPncapcmm2jdaM/openapi.json
