# EMA Medicines Database Scraper (`crawlerbros/ema-medicines-database-scraper`) Actor

Scrape the EMA's public data: 2700+ human/veterinary medicines, orphan designations, herbal monographs, referrals, shortages, PIPs, veterinary MRLs, DHPCs, opinions outside EU, PSUSA reviews, post-authorisation procedures.

- **URL**: https://apify.com/crawlerbros/ema-medicines-database-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, Integrations
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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 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

## EMA Medicines Database Scraper

Search and export the European Medicines Agency's (EMA) public regulatory data — the full **Medicines Database** of centrally authorised human and veterinary medicines, **orphan drug designations**, **herbal medicine monographs**, **referral procedures**, **medicine shortages**, **paediatric investigation plans (PIPs)**, **veterinary maximum residue limits (MRLs)**, **Direct Healthcare Professional Communications (DHPCs)**, **scientific opinions for use outside the EU**, **periodic safety update report single assessments (PSUSA)**, and **post-authorisation procedures**. No login, no API key, no cookies required.

### What this actor does

EMA publishes each of its public datasets as a regularly refreshed data export. This actor downloads the dataset you select, applies your search query and filters, and returns clean, structured JSON — ready for pharmacovigilance research, market access analysis, regulatory tracking, academic research, or building a medicines lookup tool.

- **11 datasets in one actor** — switch between them with the `mode` field
- **Free-text search** across medicine name, active substance, INN, and ATC codes
- **Rich filters** — regulatory status, human/veterinary category, therapeutic area, and 10+ medicine attribute flags (orphan, biosimilar, generic, accelerated assessment, etc.)
- **Full field coverage** — every reliably extractable column from each EMA dataset, not just the headline fields
- **Empty fields are omitted** — you never see `null`, `""`, or `[]` in the output

### Datasets (`mode`)

| Mode | What it contains | Approx. size |
|---|---|---|
| `medicines` (default) | Centrally authorised human + veterinary medicines: status, active substance, therapeutic area, ATC codes, authorisation dates, and regulatory flags | ~2,700 medicines |
| `orphanDesignations` | EU orphan drug designations: active substance, intended use, EU designation number, designation status | ~3,300 designations |
| `herbalMedicines` | EU herbal monograph assessments: Latin/English/botanical name, therapeutic area, assessment status | ~250 monographs |
| `referrals` | EU referral procedures (human + veterinary): referral name, INN, current status, safety-referral flag | ~600 referrals |
| `shortages` | Ongoing and resolved EU medicine shortages: medicine name, INN, therapeutic area, shortage status, alternatives | ~80 shortages |
| `paediatricInvestigationPlans` | Paediatric Investigation Plans (PIPs): active substance, PIP number, decision type/date, condition | ~3,300 PIPs |
| `maximumResidueLimits` | Veterinary Maximum Residue Limits (MRLs): active substance, target species, MRL classification, regulation reference | ~500 MRL entries |
| `dhpc` | Direct Healthcare Professional Communications: medicine name, DHPC type, regulatory outcome, therapeutic area | ~170 DHPCs |
| `opinionsOutsideEu` | EMA scientific opinions on medicines intended solely for markets outside the EU: medicine name, opinion status, indication | ~25 opinions |
| `periodicSafetyUpdateReports` | Periodic Safety Update Report single assessments (PSUSA): active substance(s) in scope, related medicines, regulatory outcome | ~2,700 procedures |
| `postAuthorisationProcedures` | Post-authorisation variations and procedures for authorised medicines: procedure status, opinion status, opinion/authorisation dates | ~150 procedures |

### Output fields

#### `medicines`

`category`, `name`, `emaProductNumber`, `medicineStatus`, `opinionStatus`, `latestProcedureNumber`, `inn`, `activeSubstance`, `therapeuticArea[]`, `targetSpecies[]`, `patientSafety`, `atcCodeHuman`, `atcCodeVeterinary`, `pharmacotherapeuticGroupHuman`, `pharmacotherapeuticGroupVeterinary`, `therapeuticIndication`, `acceleratedAssessment`, `additionalMonitoring`, `advancedTherapy`, `biosimilar`, `conditionalApproval`, `exceptionalCircumstances`, `generic`, `orphanMedicine`, `primePriorityMedicine`, `marketingAuthorisationHolder`, `ecDecisionDate`, `rollingReviewStartDate`, `evaluationStartDate`, `opinionAdoptedDate`, `applicationWithdrawalDate`, `marketingAuthorisationDate`, `refusalDate`, `withdrawalExpiryDate`, `suspensionDate`, `revisionNumber`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`, `productInformationUrl`

#### `orphanDesignations`

`medicineName`, `emaProductNumber`, `activeSubstance`, `designationDate`, `intendedUse`, `euDesignationNumber`, `status`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`

#### `herbalMedicines`

`latinName`, `combinationHerbalMedicine`, `englishName`, `botanicalName`, `therapeuticArea[]`, `assessmentStatus`, `assessmentOutcome`, `additionalInformation`, `dateAddedToInventory`, `dateAddedToPriorityList`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`

#### `referrals`

`category`, `name`, `inn`, `currentStatus`, `safetyReferral`, `referralType`, `associatedNamesCentrallyAuthorised[]`, `associatedNamesNonCentrallyAuthorised[]`, `referralClass`, `referenceNumber`, `nonPracDecisionMakingModel`, `pracDecisionMakingModel`, `authorisationModel`, `pracRecommendation`, `procedureStartDate`, `pracRecommendationDate`, `cmdhPositionDate`, `chmpCvmpOpinionDate`, `ecDecisionDate`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`

#### `shortages`

`category`, `name`, `shortageStatus`, `inn`, `therapeuticArea[]`, `pharmaceuticalFormsAffected[]`, `strengthsAffected[]`, `availabilityOfAlternatives`, `shortageStartDate`, `expectedResolution`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`

#### `paediatricInvestigationPlans`

`decisionNumber`, `pipNumber`, `activeSubstance`, `inventedName`, `therapeuticArea[]`, `pharmaceuticalForms[]`, `condition`, `routesOfAdministration[]`, `decisionType`, `decisionDate`, `complianceOutcome`, `complianceOpinionDate`, `complianceProcedureNumber`, `contactForPublicEnquiries`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`

#### `maximumResidueLimits`

`title`, `activeSubstance`, `mrlClassification[]`, `targetSpecies[]`, `commissionDecisionDate`, `regulationNumber`, `regulationUrl`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`

#### `dhpc`

`category`, `name`, `procedureNumber`, `activeSubstances[]`, `dhpcType[]`, `regulatoryOutcome`, `referralName`, `atcCodeHuman`, `atcCodeVeterinary`, `therapeuticArea[]`, `targetSpecies[]`, `otherRelatedMedicinesNationallyAuthorised[]`, `disseminationDate`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`

#### `opinionsOutsideEu`

`name`, `emaOpinionNumber`, `opinionStatus`, `activeSubstance`, `inn`, `therapeuticArea[]`, `atcCodeHuman`, `latestProcedureNumber`, `opinionHolder`, `pharmacotherapeuticGroupHuman`, `therapeuticIndication`, `opinionDate`, `outcomeDate`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`

#### `periodicSafetyUpdateReports`

`category`, `activeSubstancesInScope[]`, `activeSubstance`, `procedureNumber`, `regulatoryOutcome`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`

#### `postAuthorisationProcedures`

`category`, `name`, `emaProductNumber`, `activeSubstance`, `inn`, `therapeuticArea[]`, `atcCodeHuman`, `atcCodeVeterinary`, `targetSpecies[]`, `acceleratedAssessment`, `additionalMonitoring`, `advancedTherapy`, `biosimilar`, `conditionalApproval`, `exceptionalCircumstances`, `generic`, `orphanMedicine`, `primePriorityMedicine`, `marketingAuthorisationHolder`, `postAuthorisationProcedureStatus`, `postAuthorisationOpinionStatus`, `postAuthorisationOpinionDate`, `applicationWithdrawalDate`, `marketingAuthorisationDate`, `firstPublishedDate`, `lastUpdatedDate`, `sourceUrl`, `productInformationUrl`

Every record also includes `recordType` and `scrapedAt` (UTC ISO timestamp).

`productInformationUrl` (on `medicines` and `postAuthorisationProcedures` only) is the direct link to the medicine's official English-language Product Information PDF (summary of product characteristics, package leaflet and labelling) — sourced from EMA's separate product-information index and joined by EMA product number. It's omitted when EMA hasn't published a matching entry (e.g. very recently authorised products).

### Input

| Field | Type | Applies to | Description |
|---|---|---|---|
| `mode` | select | all | Dataset to search (see table above). Default `medicines`. |
| `searchQuery` | string | all | Case-insensitive substring search against name / active substance / INN fields for the selected dataset. |
| `category` | select | `medicines`, `referrals`, `shortages`, `dhpc`, `postAuthorisationProcedures` | `all` / `Human` / `Veterinary`. |
| `therapeuticArea` | string | `medicines`, `herbalMedicines`, `shortages`, `paediatricInvestigationPlans`, `dhpc`, `postAuthorisationProcedures` | Substring match against therapeutic-area tags. |
| `medicineStatus` | select | `medicines` | Regulatory status — 11 values (Authorised, Refused, Withdrawn, Suspended, Expired, Lapsed, Revoked, Application withdrawn, Opinion, Opinion under re-examination, Withdrawn from rolling review). |
| `orphanMedicineOnly` / `biosimilarOnly` / `genericOnly` / `conditionalApprovalOnly` / `acceleratedAssessmentOnly` / `additionalMonitoringOnly` / `advancedTherapyOnly` / `exceptionalCircumstancesOnly` / `primePriorityMedicineOnly` / `patientSafetyOnly` | boolean | `medicines` | Restrict to medicines flagged with the corresponding attribute. |
| `orphanDesignationStatus` | select | `orphanDesignations` | `all` / `Positive` / `Negative` / `Withdrawn` / `Expired`. |
| `herbalAssessmentStatus` | select | `herbalMedicines` | EU monograph assessment stage. |
| `referralStatus` | select | `referrals` | Current referral procedure status. |
| `safetyReferralOnly` | boolean | `referrals` | Only referrals triggered by a safety concern. |
| `shortageStatus` | select | `shortages` | `all` / `Shortage ongoing` / `Shortage resolved` / `Medicine discontinued`. |
| `availabilityOfAlternatives` | select | `shortages` | Whether alternative medicines are available. |
| `decisionType` | select | `paediatricInvestigationPlans` | Type of PDCO decision on the PIP. |
| `mrlClassification` | string | `maximumResidueLimits` | Substring match against the MRL therapeutic classification. |
| `dhpcType` | string | `dhpc` | Substring match against the DHPC type tag(s), e.g. `Quality defect`, `Referral`. |
| `regulatoryOutcome` | select | `dhpc`, `periodicSafetyUpdateReports` | `all` / `Maintenance` / `Variation` / `Suspension` / `Revocation` / `Withdrawal`. |
| `opinionStatus` | select | `opinionsOutsideEu` | `all` / `Positive opinion` / `Withdrawn opinion` / `Withdrawn application`. |
| `postAuthorisationProcedureStatus` | select | `postAuthorisationProcedures` | `all` / `Opinion` / `Application withdrawn`. |
| `postAuthorisationOpinionStatus` | select | `postAuthorisationProcedures` | `all` / `Positive` / `Negative`. |
| `maxItems` | integer | all | Hard cap on emitted records (1–5000). Default `20`. |

#### Example: search the Medicines Database

```json
{
  "mode": "medicines",
  "searchQuery": "insulin",
  "category": "Human",
  "medicineStatus": "Authorised",
  "maxItems": 50
}
```

#### Example: orphan-designated cancer medicines

```json
{
  "mode": "medicines",
  "therapeuticArea": "cancer",
  "orphanMedicineOnly": true,
  "maxItems": 100
}
```

#### Example: ongoing medicine shortages with no alternatives

```json
{
  "mode": "shortages",
  "shortageStatus": "Shortage ongoing",
  "availabilityOfAlternatives": "No"
}
```

#### Example: veterinary maximum residue limits for antibiotics

```json
{
  "mode": "maximumResidueLimits",
  "mrlClassification": "antibiotic",
  "maxItems": 100
}
```

#### Example: safety-referral DHPCs

```json
{
  "mode": "dhpc",
  "dhpcType": "Referral",
  "maxItems": 50
}
```

#### Example: PSUSA procedures for an active substance

```json
{
  "mode": "periodicSafetyUpdateReports",
  "searchQuery": "paracetamol",
  "regulatoryOutcome": "Variation",
  "maxItems": 50
}
```

### Use cases

- **Pharmacovigilance & regulatory intelligence** — track authorisation status, additional-monitoring flags, and safety referrals for a portfolio of medicines
- **Market access research** — identify orphan, biosimilar, and generic medicines by therapeutic area
- **Supply-chain monitoring** — track ongoing medicine shortages and alternative availability across the EU
- **Academic & public-health research** — bulk-export paediatric investigation plans or orphan designations for a therapeutic area
- **Veterinary compliance** — look up maximum residue limits and target species for veterinary active substances
- **Herbal medicine cataloguing** — track EU monograph assessment progress for herbal substances

### FAQ

**What is the EMA Medicines Database?** The European Medicines Agency's public register of all medicines that have been granted (or refused) a centrally authorised marketing authorisation valid across the EU, plus related regulatory datasets (orphan designations, referrals, shortages, PIPs, MRLs, herbal monographs). See [ema.europa.eu](https://www.ema.europa.eu/en/medicines).

**How current is the data?** EMA regenerates each dataset export on its own schedule (typically daily to weekly). `firstPublishedDate` / `lastUpdatedDate` on each record reflect EMA's own publication timestamps.

**Why do some records lack a `medicineName`?** In `orphanDesignations`, many designations are granted before a medicine has a brand name — the record is still fully identified by `activeSubstance` and `euDesignationNumber`.

**What's the difference between `medicineStatus` and `opinionStatus`?** `medicineStatus` reflects the medicine's overall regulatory lifecycle stage (e.g. `Authorised`, `Withdrawn`). `opinionStatus` is only populated for medicines still going through a CHMP/CVMP scientific opinion (`Positive` / `Negative`) before a final Commission decision.

**Can I filter by ATC code?** Yes — put the ATC code (e.g. `N02AB03`) in `searchQuery`; it's matched against `atcCodeHuman` / `atcCodeVeterinary` along with the medicine name, INN, and active substance.

**What does `additionalMonitoring` mean?** Medicines under additional EU-wide monitoring (marked with a black triangle ▼ on their packaging) because they are new or have limited long-term safety data.

**Does this include national (non-centrally authorised) medicines?** No — the Medicines Database covers centrally authorised medicines only (one EU-wide authorisation). Referral records may reference nationally authorised products by name, but full national registries are out of scope.

**Is there a rate limit?** EMA's data export files are generated statically and served over standard HTTPS with no documented rate limit for reasonable use.

**Is this affiliated with the European Medicines Agency?** No, this is a third-party actor using EMA's public data exports. It is not affiliated with, endorsed by, or officially connected to the European Medicines Agency.

# Actor input Schema

## `mode` (type: `string`):

Which EMA public dataset to search.

## `searchQuery` (type: `string`):

Free-text, case-insensitive substring search. Matched against the name / active substance / INN fields relevant to the selected dataset. Leave empty to fetch all records (subject to Max items).

## `category` (type: `string`):

Filter to human-use or veterinary-use records. Applies to Medicines Database, Referral Procedures, Medicine Shortages, DHPCs and Post-Authorisation Procedures only; ignored for other datasets.

## `therapeuticArea` (type: `string`):

Case-insensitive substring match against the therapeutic-area tags (MeSH terms). Applies to Medicines Database, Herbal Medicines, Medicine Shortages and Paediatric Investigation Plans.

## `medicineStatus` (type: `string`):

Filter Medicines Database records by regulatory status.

## `orphanMedicineOnly` (type: `boolean`):

Only emit medicines designated as orphan medicinal products.

## `biosimilarOnly` (type: `boolean`):

Only emit biosimilar medicines.

## `genericOnly` (type: `boolean`):

Only emit generic medicines.

## `conditionalApprovalOnly` (type: `boolean`):

Only emit medicines authorised under a conditional marketing authorisation.

## `acceleratedAssessmentOnly` (type: `boolean`):

Only emit medicines that received accelerated assessment.

## `additionalMonitoringOnly` (type: `boolean`):

Only emit medicines subject to additional monitoring (black triangle).

## `advancedTherapyOnly` (type: `boolean`):

Only emit ATMPs (gene therapy, cell therapy, tissue-engineered products).

## `exceptionalCircumstancesOnly` (type: `boolean`):

Only emit medicines authorised under exceptional circumstances.

## `primePriorityMedicineOnly` (type: `boolean`):

Only emit medicines in the PRIME (PRIority MEdicines) scheme.

## `patientSafetyOnly` (type: `boolean`):

Only emit medicines flagged for patient-safety communication.

## `orphanDesignationStatus` (type: `string`):

Filter orphan designations by outcome status.

## `herbalAssessmentStatus` (type: `string`):

Filter herbal medicines by the EU monograph assessment stage.

## `referralStatus` (type: `string`):

Filter referral procedures by current status.

## `safetyReferralOnly` (type: `boolean`):

Only emit referrals triggered by a safety concern.

## `shortageStatus` (type: `string`):

Filter medicine shortages by current status.

## `availabilityOfAlternatives` (type: `string`):

Filter medicine shortages by whether alternative medicines are available.

## `decisionType` (type: `string`):

Filter PIPs by the type of PDCO decision.

## `mrlClassification` (type: `string`):

Case-insensitive substring match against the MRL therapeutic classification (e.g. `antibiotic`, `antiparasitic`).

## `dhpcType` (type: `string`):

Case-insensitive substring match against the DHPC type tag(s) (e.g. `Quality defect`, `Referral`, `Medication error`).

## `regulatoryOutcome` (type: `string`):

Filter DHPCs / Periodic Safety Update Report single assessments (PSUSA) by the regulatory outcome of the procedure.

## `opinionStatus` (type: `string`):

Filter EMA scientific opinions for medicines used outside the EU by their outcome status.

## `postAuthorisationProcedureStatus` (type: `string`):

Filter post-authorisation procedures by their current procedure status.

## `postAuthorisationOpinionStatus` (type: `string`):

Filter post-authorisation procedures by the CHMP/CVMP opinion outcome.

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

Hard cap on the number of records emitted.

## Actor input object example

```json
{
  "mode": "medicines",
  "searchQuery": "insulin",
  "category": "all",
  "medicineStatus": "all",
  "orphanMedicineOnly": false,
  "biosimilarOnly": false,
  "genericOnly": false,
  "conditionalApprovalOnly": false,
  "acceleratedAssessmentOnly": false,
  "additionalMonitoringOnly": false,
  "advancedTherapyOnly": false,
  "exceptionalCircumstancesOnly": false,
  "primePriorityMedicineOnly": false,
  "patientSafetyOnly": false,
  "orphanDesignationStatus": "all",
  "herbalAssessmentStatus": "all",
  "referralStatus": "all",
  "safetyReferralOnly": false,
  "shortageStatus": "all",
  "availabilityOfAlternatives": "all",
  "decisionType": "all",
  "regulatoryOutcome": "all",
  "opinionStatus": "all",
  "postAuthorisationProcedureStatus": "all",
  "postAuthorisationOpinionStatus": "all",
  "maxItems": 20
}
```

# Actor output Schema

## `records` (type: `string`):

Dataset containing all scraped EMA 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 = {
    "mode": "medicines",
    "searchQuery": "insulin",
    "category": "all",
    "medicineStatus": "all",
    "orphanMedicineOnly": false,
    "biosimilarOnly": false,
    "genericOnly": false,
    "conditionalApprovalOnly": false,
    "acceleratedAssessmentOnly": false,
    "additionalMonitoringOnly": false,
    "advancedTherapyOnly": false,
    "exceptionalCircumstancesOnly": false,
    "primePriorityMedicineOnly": false,
    "patientSafetyOnly": false,
    "orphanDesignationStatus": "all",
    "herbalAssessmentStatus": "all",
    "referralStatus": "all",
    "safetyReferralOnly": false,
    "shortageStatus": "all",
    "availabilityOfAlternatives": "all",
    "decisionType": "all",
    "regulatoryOutcome": "all",
    "opinionStatus": "all",
    "postAuthorisationProcedureStatus": "all",
    "postAuthorisationOpinionStatus": "all",
    "maxItems": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/ema-medicines-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 = {
    "mode": "medicines",
    "searchQuery": "insulin",
    "category": "all",
    "medicineStatus": "all",
    "orphanMedicineOnly": False,
    "biosimilarOnly": False,
    "genericOnly": False,
    "conditionalApprovalOnly": False,
    "acceleratedAssessmentOnly": False,
    "additionalMonitoringOnly": False,
    "advancedTherapyOnly": False,
    "exceptionalCircumstancesOnly": False,
    "primePriorityMedicineOnly": False,
    "patientSafetyOnly": False,
    "orphanDesignationStatus": "all",
    "herbalAssessmentStatus": "all",
    "referralStatus": "all",
    "safetyReferralOnly": False,
    "shortageStatus": "all",
    "availabilityOfAlternatives": "all",
    "decisionType": "all",
    "regulatoryOutcome": "all",
    "opinionStatus": "all",
    "postAuthorisationProcedureStatus": "all",
    "postAuthorisationOpinionStatus": "all",
    "maxItems": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/ema-medicines-database-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 '{
  "mode": "medicines",
  "searchQuery": "insulin",
  "category": "all",
  "medicineStatus": "all",
  "orphanMedicineOnly": false,
  "biosimilarOnly": false,
  "genericOnly": false,
  "conditionalApprovalOnly": false,
  "acceleratedAssessmentOnly": false,
  "additionalMonitoringOnly": false,
  "advancedTherapyOnly": false,
  "exceptionalCircumstancesOnly": false,
  "primePriorityMedicineOnly": false,
  "patientSafetyOnly": false,
  "orphanDesignationStatus": "all",
  "herbalAssessmentStatus": "all",
  "referralStatus": "all",
  "safetyReferralOnly": false,
  "shortageStatus": "all",
  "availabilityOfAlternatives": "all",
  "decisionType": "all",
  "regulatoryOutcome": "all",
  "opinionStatus": "all",
  "postAuthorisationProcedureStatus": "all",
  "postAuthorisationOpinionStatus": "all",
  "maxItems": 20
}' |
apify call crawlerbros/ema-medicines-database-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=crawlerbros/ema-medicines-database-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

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