EMA Drug Approval Watch
Pricing
Pay per event
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
Maintained by CommunityActor 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, andchangedFields - π 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 type | Input value | Typical use |
|---|---|---|
| Centrally authorised medicines | medicines | Approved, refused, withdrawn, suspended, or authorised medicines |
| Post-authorisation procedures | postAuthorisation | Variations and lifecycle changes after authorisation |
| Referrals | referrals | EU referral procedures and outcomes |
| Orphan designations | orphanDesignations | Orphan medicinal product designations |
| Medicine shortages | shortages | Shortage and availability monitoring |
| Herbal medicines | herbalMedicines | Herbal medicine data when available |
| Opinions outside the EU | opinionsOutsideEu | CHMP 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.
| Field | Description |
|---|---|
recordId | Stable row ID derived from report type and natural keys |
reportType | Selected report identifier |
reportTitle | Human-readable report title |
medicineName | Medicine or product name |
activeSubstance | Active substance / INN when available |
therapeuticArea | Therapeutic area, condition, or indication text |
applicantOrMah | Applicant, sponsor, or marketing authorisation holder |
procedureNumber | EMA product, procedure, application, or designation number |
authorisationStatus | Status or outcome from the workbook |
decisionDate | Normalized decision/authorisation date when detected |
opinionDate | Normalized opinion date when detected |
productCategory | Human/veterinary/category values when present |
country | Country/member-state value when present |
shortageStatus | Shortage status when present |
rawFields | Original workbook fields after whitespace cleanup |
isNew | True if the row was not in the previous monitor snapshot |
isUpdated | True if a known row changed since the previous monitor snapshot |
changedFields | Raw workbook columns that changed |
sourceUrl | Direct EMA workbook URL |
scrapedAt | Extraction 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
- Choose one or more EMA report types.
- Set
maxItemsto your desired output cap. - Optionally add
textSearchfor a medicine, substance, applicant, or condition. - Optionally enable
monitorModefor recurring delta output. - 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:
ranibizumaboncologyPfizershortage
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"}
Example input: substance search
{"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:
- Run once with monitor mode enabled.
- Review the output and snapshot key.
- Schedule the actor at your preferred cadence.
- Send changed rows to Slack, email, Google Sheets, BigQuery, or your internal data warehouse.
Tips for better results
- Use
textSearchfor portfolio monitoring by substance, applicant, or disease area. - Keep separate
snapshotKeyvalues for separate teams or workflows. - Select only the reports you need to reduce runtime and output noise.
- Use
includeUnchanged: truewhen you need a complete current-state export plus delta flags. - Use
sinceDatefor 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
isUpdatedis 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 ApifyClientclient = 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.
Related scrapers
Explore related automation-lab actors for healthcare and regulatory intelligence on Apify:
- https://apify.com/automation-lab/fda-drug-approval-watch
- https://apify.com/automation-lab/medical-device-recall-scraper
- https://apify.com/automation-lab/who-medical-news-scraper
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.