EU medicines watch: EMA authorisations and shortages
Pricing
from $10.00 / 1,000 change returneds
EU medicines watch: EMA authorisations and shortages
EU medicines regulatory watch: authorisations, withdrawals and shortages for your substances, twice a day. Reads EMA's published JSON files, diffs against your last run and returns only what changed, matched against your substances, ATC codes and marketing-authorisation holders.
Pricing
from $10.00 / 1,000 change returneds
Rating
0.0
(0)
Developer
Kittiwake Data
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
EU medicines regulatory watch: authorisations, withdrawals and shortages for your substances, twice a day.
The European Medicines Agency publishes its full register of centrally authorised medicines, and its list of supply shortages, as downloadable files that it refreshes about twice a day. The files are public. What they do not tell you is what changed since you last looked.
This Actor reads both files, compares them with your previous run, and returns only the changes, matched against the substances, ATC codes and companies you care about.
What it is for
- Generic and biosimilar developers: see a reference product's withdrawal or a competitor's new authorisation the day EMA publishes it.
- Distributors, parallel importers and hospital pharmacy buyers: new and resolved shortages for the substances you handle.
- Regulatory-intelligence and market-access teams: a change feed by ATC class or by marketing-authorisation holder, into your own systems.
What you get
| change | when |
|---|---|
new-medicine | a product number appears in EMA's medicines file for the first time |
status-changed | its status moved, e.g. Opinion → Authorised, Authorised → Withdrawn; previousStatus holds the old one |
updated | a field you receive changed without a status change (e.g. additional monitoring added) |
removed-from-file | a product number no longer appears in the file |
new-shortage, shortage-status-changed, shortage-updated, shortage-removed | the same, for EMA's shortages file |
watchlist-baseline | first run only: the current state of everything on your watchlist, so you start with a picture rather than an empty table |
A change to EMA's "last updated" date on its own is not returned: EMA touches that date without changing anything in the fields you receive.
Quick start
Watch two substances and an ATC class, every change on your watchlist:
{"watchSubstances": ["semaglutide", "adalimumab"],"watchAtcCodes": ["L01FX"],"onlyWatchlistMatches": true}
Every change in the EU register, medicines only:
{ "includeShortages": false }
Schedule it twice a day. Each run compares with the last run of the same saved task, so two tasks with different watchlists never consume each other's changes.
Input
| field | type | default | what it does |
|---|---|---|---|
watchSubstances | string[] | — | Active substances or INNs. Case-insensitive substring |
watchAtcCodes | string[] | — | ATC codes. Prefix match: L01 catches L01FX22 |
watchHolders | string[] | — | Marketing-authorisation holders. Case-insensitive substring |
onlyWatchlistMatches | boolean | false | Return only watchlist hits |
includeShortages | boolean | true | Also read the shortages file |
Output
One row per change. Every row has the same fields; the ones that do not apply are null.
{"emaProductNumber": "EMEA/H/C/004127","medicineName": "Zonisamide Viatris (previously Zonisamide Mylan)","inn": "zonisamide","activeSubstance": "zonisamide","atcCode": "N03AX15","category": "Human","medicineStatus": "Withdrawn","marketingAuthorisationHolder": "Viatris Limited","generic": true,"withdrawalOrLapseDate": "2026-09-20","medicineUrl": "https://www.ema.europa.eu/en/medicines/human/EPAR/zonisamide-viatris","shortageStatus": null,"changeType": "status-changed","previousStatus": "Authorised","watchlistMatch": { "matchedOn": "substance", "value": "zonisamide" },"source": "Source: European Medicines Agency (EMA), https://www.ema.europa.eu/en/documents/report/medicines-output-medicines_json-report_en.json"}
Also returned: therapeuticArea, opinionStatus, biosimilar, orphan, conditionalApproval,
additionalMonitoring, opinionAdoptedDate, marketingAuthorisationDate, ecDecisionDate,
lastUpdatedDate, and for shortages shortageStart, expectedResolution and
alternativesAvailable. Dates are ISO YYYY-MM-DD; a date EMA leaves blank is null.
What you pay for
| event | price | when |
|---|---|---|
| Change returned | $0.01 | one change row written to the dataset |
| EMA file read | $0.01 | one file fetched, parsed and compared. Only when all of that succeeds |
| Watchlist match | $0.05 | a change matched your watchlist. Zero if you supply no watchlist |
Nothing is charged for a failed run. If a run reaches your spending limit, the changes it did not return are kept and come back on the next run.
What this Actor does not do
- No personal data. It returns medicine, substance, status and company fields only. EMA's free-text indication and any person-level field are never copied.
- No logins, proxies or retries. Two requests per run, ten seconds apart, with one identifying User-Agent. If EMA refuses a request, the run fails and says so; it does not try again.
- No advice. EMA's pages are the authority; every row links to the official page.
Source and attribution
Data comes from the European Medicines Agency's published JSON files
(ema.europa.eu/en/about-us/about-website/download-website-data-json-data-format). This Actor
reformats and compares what EMA publishes and adds nothing to it.
EMA's legal notice allows reproduction "for non-commercial and commercial purposes … provided that
EMA is always acknowledged as the source of the material. Such acknowledgement must be included in
each copy of the material." So every row carries it, in the source field:
Source: European Medicines Agency (EMA), <the EMA file URL the row came from>
Support
Use the Issues tab on this Actor. Include the run id and the input you used.