EMA Drug Approval Watch avatar

EMA Drug Approval Watch

Pricing

Pay per event

Go to Apify Store
EMA Drug Approval Watch

EMA Drug Approval Watch

Monitor official EMA medicine approvals, post-authorisation changes, referrals, orphan designations, and shortages from public XLSX reports.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Share

Monitor official European Medicines Agency (EMA) medicine data from public XLSX reports. The actor downloads EMA workbooks, normalizes regulatory rows, and can emit change-monitoring flags for recurring workflows.

What does EMA Drug Approval Watch do?

EMA Drug Approval Watch turns the EMA medicine-data download page into structured Apify dataset rows.

  • πŸ“₯ Downloads official EMA XLSX reports over HTTP
  • 🧾 Parses centrally authorised medicines, post-authorisation procedures, referrals, orphan designations, and shortages
  • πŸ” Supports recurring monitor mode with isNew, isUpdated, and changedFields
  • πŸ”Ž Filters by medicine name, active substance, applicant, condition, status, or any workbook text
  • πŸ“… Filters records by date-like columns such as decision, opinion, authorisation, or update dates
  • 🧩 Preserves raw workbook fields for auditability

Who is it for?

This actor is designed for teams that need repeatable EU regulatory intelligence.

  • Regulatory affairs teams tracking EMA approvals and variations
  • Competitive intelligence teams monitoring competitor medicine portfolios
  • Market access teams watching new products and indication movements
  • Pharmacovigilance teams following shortages and safety-relevant status changes
  • Business development teams scanning orphan designations and therapeutic areas
  • Data vendors building healthcare intelligence feeds

Why use this actor?

The EMA publishes useful XLSX files, but the workbooks have different columns, metadata rows, and report-specific formats. This actor provides a single normalized dataset that is easier to schedule, diff, export, and integrate.

Official EMA data sources

The actor starts from the public EMA page:

https://www.ema.europa.eu/en/medicines/download-medicine-data

It discovers linked XLSX report URLs and falls back to known official file names if the page layout changes.

Supported report types

Report typeInput valueTypical use
Centrally authorised medicinesmedicinesApproved, refused, withdrawn, suspended, or authorised medicines
Post-authorisation procedurespostAuthorisationVariations and lifecycle changes after authorisation
ReferralsreferralsEU referral procedures and outcomes
Orphan designationsorphanDesignationsOrphan medicinal product designations
Medicine shortagesshortagesShortage and availability monitoring
Herbal medicinesherbalMedicinesHerbal medicine data when available
Opinions outside the EUopinionsOutsideEuCHMP opinions for medicines used outside the EU when available

Data you can extract

Each output row includes normalized fields where they are present in the source workbook.

FieldDescription
recordIdStable row ID derived from report type and natural keys
reportTypeSelected report identifier
reportTitleHuman-readable report title
medicineNameMedicine or product name
activeSubstanceActive substance / INN when available
therapeuticAreaTherapeutic area, condition, or indication text
applicantOrMahApplicant, sponsor, or marketing authorisation holder
procedureNumberEMA product, procedure, application, or designation number
authorisationStatusStatus or outcome from the workbook
decisionDateNormalized decision/authorisation date when detected
opinionDateNormalized opinion date when detected
productCategoryHuman/veterinary/category values when present
countryCountry/member-state value when present
shortageStatusShortage status when present
rawFieldsOriginal workbook fields after whitespace cleanup
isNewTrue if the row was not in the previous monitor snapshot
isUpdatedTrue if a known row changed since the previous monitor snapshot
changedFieldsRaw workbook columns that changed
sourceUrlDirect EMA workbook URL
scrapedAtExtraction timestamp

How much does it cost to monitor EMA drug approvals?

The actor uses pay-per-event pricing: a small start fee plus a per-record charge. You control cost with maxItems, report selection, and filters.

For scheduled monitoring, start with a focused report list and a specific textSearch or sinceDate filter. Increase maxItems only after confirming the output volume you need.

How to run

  1. Choose one or more EMA report types.
  2. Set maxItems to your desired output cap.
  3. Optionally add textSearch for a medicine, substance, applicant, or condition.
  4. Optionally enable monitorMode for recurring delta output.
  5. Run the actor and export the Apify dataset as JSON, CSV, Excel, RSS, or through the API.

Input options

reportTypes

Array of report identifiers. If omitted, the actor uses a practical default set.

maxItems

Maximum number of dataset rows to save. In monitor mode, the actor can scan the full selected source and save up to this number of changed rows while updating the snapshot.

textSearch

Optional case-insensitive search across all workbook cells. Examples:

  • ranibizumab
  • oncology
  • Pfizer
  • shortage

sinceDate

Optional date filter. Use an ISO-style date such as 2026-01-01. The actor checks date-like source columns and keeps records with relevant dates on or after the value.

monitorMode

When true, the actor stores a snapshot in the key-value store and marks future records as new or updated.

includeUnchanged

When false in monitor mode, the actor outputs only new or updated rows. When true, it outputs matching current rows with delta flags.

snapshotKey

Advanced setting for independent monitoring workflows. Use a different key for different report/filter combinations.

Example input: approval watch

{
"reportTypes": ["medicines"],
"maxItems": 250,
"sinceDate": "2026-01-01",
"monitorMode": true,
"snapshotKey": "ema-medicines-approvals"
}

Example input: shortages monitor

{
"reportTypes": ["shortages"],
"maxItems": 500,
"monitorMode": true,
"includeUnchanged": false,
"snapshotKey": "ema-shortages-watch"
}
{
"reportTypes": ["medicines", "postAuthorisation", "orphanDesignations"],
"textSearch": "ranibizumab",
"maxItems": 100
}

Output example

{
"reportType": "medicines",
"medicineName": "Rexatilux",
"activeSubstance": "ranibizumab",
"authorisationStatus": "Authorised",
"decisionDate": "2026-06-19",
"isNew": true,
"isUpdated": false,
"changedFields": []
}

Monitor and delta workflow

Use Apify schedules for daily or weekly monitoring. On the first monitor run, rows are usually marked isNew because no snapshot exists. Later runs compare the current workbook rows with the stored snapshot.

Recommended pattern:

  1. Run once with monitor mode enabled.
  2. Review the output and snapshot key.
  3. Schedule the actor at your preferred cadence.
  4. Send changed rows to Slack, email, Google Sheets, BigQuery, or your internal data warehouse.

Tips for better results

  • Use textSearch for portfolio monitoring by substance, applicant, or disease area.
  • Keep separate snapshotKey values for separate teams or workflows.
  • Select only the reports you need to reduce runtime and output noise.
  • Use includeUnchanged: true when you need a complete current-state export plus delta flags.
  • Use sinceDate for recent approvals or recent procedure changes.

Integrations

EMA Drug Approval Watch works with Apify integrations and webhooks.

  • Send new approvals to Slack with a dataset webhook
  • Append shortage updates to Google Sheets
  • Load normalized EMA rows into BigQuery or Snowflake
  • Trigger an internal review workflow when isUpdated is true
  • Combine with other automation-lab healthcare actors for wider regulatory monitoring

API usage

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/ema-drug-approval-watch').call({
reportTypes: ['medicines'],
maxItems: 100,
monitorMode: true
});
console.log(run.defaultDatasetId);

Python

from apify_client import ApifyClient
client = ApifyClient('MY-APIFY-TOKEN')
run = client.actor('automation-lab/ema-drug-approval-watch').call(run_input={
'reportTypes': ['shortages'],
'maxItems': 100,
'monitorMode': True,
})
print(run['defaultDatasetId'])

cURL

curl -X POST 'https://api.apify.com/v2/acts/automation-lab~ema-drug-approval-watch/runs?token=MY-APIFY-TOKEN' \
-H 'Content-Type: application/json' \
-d '{"reportTypes":["medicines"],"maxItems":100}'

MCP usage

Use this actor through Apify MCP in Claude Desktop or Claude Code:

https://mcp.apify.com/?tools=automation-lab/ema-drug-approval-watch

Claude Code setup:

$claude mcp add apify-ema-drug-approval-watch https://mcp.apify.com/?tools=automation-lab/ema-drug-approval-watch

Claude Desktop JSON config:

{
"mcpServers": {
"apify-ema-drug-approval-watch": {
"url": "https://mcp.apify.com/?tools=automation-lab/ema-drug-approval-watch"
}
}
}

Example prompts:

  • β€œRun the EMA Drug Approval Watch for medicine shortages and summarize new rows.”
  • β€œFind EMA records mentioning ranibizumab and return active substance, status, and decision date.”
  • β€œMonitor EMA orphan designations weekly and flag updated rows.”

Data quality notes

EMA workbooks are official public sources, but each report can have different columns. The actor keeps normalized fields conservative and preserves rawFields so analysts can verify any record against the original workbook.

Limitations

  • The actor does not interpret clinical significance.
  • It does not replace legal or regulatory review.
  • Some optional report links may change or be temporarily unavailable.
  • Field availability depends on the selected EMA workbook.

Troubleshooting

Why did the first monitor run output many new rows?

The first monitor run creates the snapshot, so matching rows are new by definition. Later runs only flag rows that are new or changed.

Why are some normalized fields null?

EMA report schemas differ. If a workbook does not contain a matching column, the normalized field is null and the source value remains available in rawFields.

Why did a text search return fewer rows than expected?

textSearch searches exact cell text after whitespace cleanup. Try a broader substance, applicant, or disease keyword.

Legality

This actor downloads public EMA files. Users are responsible for using the data in accordance with applicable laws, regulations, EMA terms, and internal compliance policies.

FAQ

Does this actor use the official EMA source?

Yes. It downloads workbooks linked from the official EMA medicine-data download page.

Can I schedule it as a monitor?

Yes. Enable monitorMode, choose a stable snapshotKey, and run it on an Apify schedule.

Can I export the output to Excel?

Yes. Apify datasets can be exported as Excel, CSV, JSON, XML, RSS, or accessed through the API.

Explore related automation-lab actors for healthcare and regulatory intelligence on Apify:

Changelog

Initial version: public EMA XLSX download parsing, normalized records, and KV snapshot monitor mode.

Support

If EMA changes a workbook format or you need an additional normalized field, open an Apify issue with the report type, source row, and expected output.