EudraGMDP Pharma Registry (EMA) - WDA, MIA, GMP, GDP, API
Pricing
from $2.50 / 1,000 document returneds
EudraGMDP Pharma Registry (EMA) - WDA, MIA, GMP, GDP, API
Official EU pharma compliance data from EMA EudraGMDP: wholesale distribution (WDA), manufacturing (MIA), GMP/GDP certificates, non-compliance statements and active substance registrations.
Pricing
from $2.50 / 1,000 document returneds
Rating
0.0
(0)
Developer
Rastriq — Structured data from the world
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
EudraGMDP Pharma Registry — EU pharma licences & inspection certificates as clean data
Download the official European register of pharmaceutical licences and inspections (EMA EudraGMDP) as a clean table: who is allowed to make, import, store and distribute medicines in Europe, and which sites passed or failed their inspections.
No pharma background needed — this page explains everything in plain words.
New to pharma regulation? The 60-second version
In Europe, nobody can make or move medicines without permission from a national regulator (e.g. Spain's AEMPS, Germany's regional authorities). Regulators also inspect factories and warehouses and publish the result. All of this goes into one EU database run by the European Medicines Agency: EudraGMDP.
Think of it as the official business register of the medicines supply chain:
Active ingredient ──► Factory ──► Warehouse / wholesaler ──► Pharmacy / hospitalsupplier (makes the (stores and distributes)medicine)API registration MIA licence WDA licence+ GMP cert. + GDP cert.
| You'll see... | It means... | Everyday analogy |
|---|---|---|
| WDA | Licence to be a wholesale distributor of medicines | A licence to run a logistics warehouse |
| MIA | Licence to manufacture or import medicines | A factory's operating licence |
| GMP certificate | A factory passed its Good Manufacturing Practice inspection | A passed MOT/ITV, for a factory |
| GDP certificate | A warehouse/distributor passed its Good Distribution Practice inspection (storage, temperature, traceability) | A passed MOT/ITV, for a warehouse |
| Non-compliance | The inspection failed seriously — often means suspension or product recalls | A failed MOT, made public |
| API registration | Registration to make, import or distribute active ingredients (the raw chemical) | A raw-material supplier register |
| Site | One physical location (a plant, a warehouse). A company can have many | A branch / building |
| ORG-… / LOC-… | The EMA's official ID for a company (ORG) and for a site (LOC) | Company tax ID / building reference |
| NCA | The national authority that issued the document | The issuing office |
Which dataset do I need?
Pick one or more in "What do you want to download?".
| If you want... | Choose | Records (whole EEA) | Typical run time |
|---|---|---|---|
| A list of medicine distributors and logistics warehouses (sales prospects, logistics partners) | Wholesale distributors (WDA) | ~11,000 | ~1.5 min |
| A list of factories and importers | Manufacturers & importers (MIA) | ~7,400 | ~1 min |
| To check whether factories passed inspection, or find failed ones | Factory inspection certificates (GMP) | ~14,000 (EEA) + non-EEA sites (India, China, US...) | ~2.5–8 min |
| To check whether distributors/warehouses passed inspection | Warehouse inspection certificates (GDP) | ~500 per mid-size country | ~3.5 min per country |
| Active-ingredient makers, importers and traders | Active ingredient suppliers (beta) | ~4,800 rows (EEA) | ~2.5 min per country |
Tip: for "which distributors handle cold-chain products, vaccines or blood products?", choose Wholesale distributors and switch on Include full licence details.
Prefer one row per building/site with all its licences grouped together? Use our sister actor EU Pharma Sites Graph.
How to run it (3 steps)
- What do you want to download? → e.g. Wholesale distributors.
- Countries → e.g. Spain, or All EEA countries.
- Click Start. Download the results as Excel, CSV or JSON from the Output tab.
Optional:
- Include full licence details — adds authority, inspection dates, authorised activities and special product types. Slower (2–3 s per document).
- Filters — company name, failed inspections on/off, certificate dates.
- Recurring runs → Return only changes — schedule it weekly and get only new or updated documents (great for alerts).
What you get: field-by-field guide
Every dataset uses the same columns, so you can mix them in one spreadsheet. Columns that don't apply to a dataset are empty.
Always filled
| Column | Plain meaning | Example |
|---|---|---|
module | Which dataset the row comes from | WDA |
docId | Unique ID of the document in EudraGMDP — use it to deduplicate | 29276 |
documentType | Exact document type (see table below) | WDA, GMPC, GMPNC, GDPWDA... |
documentNumber | Licence / certificate number given by the authority | ED-023-CL |
holder.name | Company that holds the licence | Leon Research S.L. |
holder.omsOrganisationId | Official company ID (ORG-…) — best key to group a company's sites | ORG-100027271 |
site.name, site.street, site.city, site.postcode, site.country, site.countryCode | Where the site is | Leon, 24009, ES |
site.omsLocationId | Official site ID (LOC-…) — best key to join with other data | LOC-100054103 |
dates.authorisation / dates.issue | When the licence was granted / certificate issued | 2026-10-07 |
dates.inspectionEnd | Date of the last inspection (certificates) | 2023-05-25 |
dates.lastUpdated | Last time the authority changed the record | 2026-10-09T14:01:03 |
permalink | Link to the official page on the EMA website | |
_flags | Data-quality warnings (see below) | ["non_compliance"] |
documentType decoded
| Value | Meaning |
|---|---|
WDA | Wholesale distribution licence |
MIA | Manufacturing / import licence |
GMPC | Factory passed inspection |
GMPNC | Factory failed inspection (non-compliance) |
GDPWDA | Wholesaler warehouse passed inspection |
GDPAPI | Active-ingredient distributor passed inspection |
GDPNCWDA / GDPNCAPI | Distributor failed inspection |
API-REG | Active ingredient registration |
Filled only with "Include full licence details"
| Column | Plain meaning |
|---|---|
issuingAuthority | Authority that signed the document (e.g. Junta de Castilla y León) |
legalBasis | Laws the licence is granted under |
scope.productTypes | Human and/or veterinary medicines |
scope.distributionOperations | What a distributor may do: procurement (buy), holding (store), supply (sell), export, other |
scope.specialRequirementProducts | Products needing special handling: cold chain, immunologicals/vaccines, blood products, narcotics, radiopharmaceuticals |
scope.manufacturingOperations | What a factory may make/test (sterile, tablets, packaging, quality control...) |
scope.activeSubstances | Active ingredients a registered supplier handles |
linkedAuthorisationNumber | For GDP certificates: the WDA licence they certify |
remarks | Free-text remarks from the authority (e.g. validity date) |
nonComplianceDetails | For failed inspections: what went wrong and what action was taken |
_flags — warnings, never filters
We never delete rows; we label them so you decide:
| Flag | Meaning |
|---|---|
non_compliance | Failed inspection |
gmp_older_than_3y / gdp_older_than_5y | Inspection older than the certificate's own validity guidance — check before relying on it |
uk_legacy_pre2021 | UK document frozen since Brexit (only Northern Ireland is still updated) |
encoding_suspect | Garbled characters in the source (some Czech addresses); kept as published |
address_unparsed | City or postcode couldn't be separated from the address |
confidential_fields | The source hides names/signatures as "Confidential" (we never collect them) |
detail_fetch_failed | Details couldn't be loaded; the basic row is still there |
Example (real record, with details)
{"module": "WDA","docId": 29276,"documentType": "WDA","documentNumber": "ED-023-CL","holder": { "name": "Leon Research S.L.", "omsOrganisationId": "ORG-100027271" },"site": { "omsLocationId": "LOC-100054103", "city": "Leon", "postcode": "24009", "countryCode": "ES" },"issuingAuthority": "Junta De Castilla Y Leon","dates": { "authorisation": "2026-10-07", "lastUpdated": "2026-10-09T14:01:03" },"scope": {"distributionOperations": [{ "code": "2.2", "label": "Holding" },{ "code": "2.5", "label": "Other", "text": "Contract warehouse" }],"specialRequirementProducts": [{ "code": "3.3", "label": "Other", "text": "Immunological medicines" }]},"permalink": "https://eudragmdp.ema.europa.eu/inspections/exc/sites/doc/WDA/29276"}
Reading it: a licensed warehouse in León that stores medicines under contract, including vaccines/immunologicals (which need refrigeration).
EudraGMDP Pharma Registry input parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
modules | array of strings (required) | ["WDA"] | Datasets to download: WDA, MIA, GMP, GDP, API_REG (beta). |
countries | array of strings | ["EEA"] (pre-filled: ["ES"]) | EEA, ALL (GMP/GDP include non-EEA sites), THIRD (non-EEA only), or any 2-letter country code. |
fetchDetails | boolean | false | Include full licence details (authority, inspection dates, activities, special products). About 2-3 seconds per document. |
maxItems | integer (min 1) | 1000 (pre-filled: 50) | Stop after this many records. |
holderNameContains | string | empty | Company or site name contains (case-insensitive, partial match). |
includeNonCompliance | boolean | true | Inspection certificates only: also return statements of non-compliance (flag non_compliance). |
gdpOperation | string | ALL | Warehouse certificates (GDP) only: ALL, GDPWDA or GDPAPI. |
dateFrom | date string | empty | Inspection certificates only: issued on or after this date (for example 2025-01-01). |
dateTo | date string | empty | Inspection certificates only: issued on or before this date. |
mode | string | full | full or delta. With delta each run remembers what it returned (key-value store eudragmdp-registry-state) and outputs only new or updated documents. |
updatedSince | date string | empty | Return only documents updated on or after this date (for example 2026-09-01). |
maxConcurrency | integer (1-2) | 2 | Parallel requests, capped at 2 out of respect for the public EMA website. |
proxyConfiguration | object | Apify Proxy off | Not needed: the source is public. |
Pre-filled input (Spanish wholesale distributors, 50 records):
{"modules": ["WDA"], "countries": ["ES"], "maxItems": 50}
Example record without full details (real output)
With fetchDetails off, fields that come only from the detail page stay empty. In this real WDA record, status, holder.omsOrganisationId and site.omsLocationId are null and detailFetched is false:
{"module": "WDA","docId": 7503,"documentType": "WDA","documentNumber": "ED-017-CL","status": null,"holder": {"name": "Cofares Noroeste Y Del Cantabrico S.A.","omsOrganisationId": null},"site": {"name": "Cofares Noroeste Y Del Cantabrico S.A.","omsLocationId": null,"ncaReferenceKey": null,"duns": null,"addressRaw": "Parcela 69b Calle Muela Quebrada, Po Ind La Hiniesta, Zamora, 49024, Spain","street": "Parcela 69b Calle Muela Quebrada, Po Ind La Hiniesta","city": "Zamora","postcode": "49024","county": null,"country": "Spain","countryCode": "ES"},"issuingAuthority": null,"legalBasis": [],"dates": {"authorisation": "2026-07-21","issue": null,"inspectionEnd": null,"lastUpdated": null},"linkedAuthorisationNumber": null,"miaNumber": null,"scope": null,"remarks": null,"nonComplianceDetails": null,"permalink": "https://eudragmdp.ema.europa.eu/inspections/exc/sites/doc/WDA/7503","source": "EudraGMDP (EMA) — content provided by EEA National Competent Authorities","scrapedAt": "2026-10-12T08:59:40Z","detailFetched": false,"_flags": []}
Ready-to-use examples
Copy any of these into the JSON input tab, or open the matching saved example from the Examples tab.
1. All licensed medicine wholesalers in Spain
{ "modules": ["WDA"], "countries": ["ES"], "maxItems": 1000 }
2. Cold-chain / vaccine distributors in Germany (details on, then filter scope.specialRequirementProducts)
{ "modules": ["WDA"], "countries": ["DE"], "fetchDetails": true, "maxItems": 500 }
3. Failed factory inspections worldwide (India, China, US...)
{ "modules": ["GMP"], "countries": ["THIRD"], "includeNonCompliance": true, "maxItems": 2000 }
4. Everything one company holds across Europe
{ "modules": ["WDA", "MIA", "GMP", "GDP"], "countries": ["EEA"], "holderNameContains": "Alliance Healthcare" }
5. Weekly alert: new or changed GMP certificates in France
{ "modules": ["GMP"], "countries": ["FR"], "mode": "delta" }
6. Active-ingredient (API) suppliers in Italy
{ "modules": ["API_REG"], "countries": ["IT"], "maxItems": 1000 }
Example values for the empty fields
| Field | Try one of these |
|---|---|
| Company name contains | Alliance Healthcare, Phoenix, Sanacorp, Novo Nordisk, Sanofi, Sandoz, Teva, Zentiva, Takeda, Fresenius Kabi, Octapharma, Linde, Air Liquide, Laboratorios Normon — or generic words like Logistics, Pharma, Apotheke |
| Countries | ES, DE, FR, IT, NL, PL; EEA (all of Europe); THIRD (non-EEA sites inspected by EU authorities, GMP/GDP only) |
| Issued from / until | 2025-01-01 → 2025-12-31 (one year of certificates) |
| Only updated since | e.g. 2026-09-01 for last month's changes |
Use cases for EU pharma licence and GMP/GDP certificate data
- Sales prospecting — every licensed distributor or manufacturer in a country, with official IDs.
- Pharma logistics — find warehouses handling cold-chain, vaccine or blood products.
- Supplier checks — does a supplier hold a valid certificate? When was it last inspected?
- Risk alerts — weekly run with Return only changes to catch new failed inspections.
- Market mapping — count factories and warehouses by country or region.
How much does it cost to scrape EudraGMDP pharma licences?
Pay per result, no subscription. Prices per 1,000 events (Apify plan discounts applied automatically):
| Event | Free | Bronze | Silver | Gold+ |
|---|---|---|---|---|
| Document returned (one row) | $4.00 | $3.50 | $3.00 | $2.50 |
| Full details loaded (only with Include full licence details) | $3.00 | $2.50 | $2.00 | $1.50 |
Failed detail loads are never charged. Typical costs (Free plan):
| Run | Rows | Cost |
|---|---|---|
| Wholesale distributors, Spain | ~590 | ~$2.40 |
| Factory certificates (GMP), Spain | ~670 | ~$2.70 |
| Wholesale distributors, whole EEA | ~11,000 | ~$44 |
| Weekly "only changes" alert, one country | usually < 50 | < $0.20 |
Worked example (BRONZE tier): 100 wholesale-distributor rows with Include full licence details on: 100 x $0.0035 = $0.35 for the rows, plus 100 x $0.0025 = $0.25 for the details, plus the $0.00005 Actor start event (512 MB = one event). Total: about $0.60. Without details: about $0.35.
Set Max records to cap your spend on any run.
EudraGMDP data source and limitations
- Source: EudraGMDP is run by the EMA; content is provided by national authorities, and the EMA accepts no liability for it. Questions about a document should go to the issuing authority.
- No personal data: names and signatures are hidden by the source and never collected.
- Suspended or withdrawn licences are not shown by the public website, so they are not included.
- Wholesale distributors without details don't include the official IDs (ORG/LOC) — the source doesn't list them; switch on details or use EU Pharma Sites Graph.
- Warehouse certificates (GDP) are served 10 per page by the source, so all of Europe takes a few hours.
- We query the EMA website politely (max 2 parallel requests).
FAQ
Is this data official? Yes — it comes from the EU database fed by national regulators; every row links to the official page.
How fresh is it? Live: each run reads the EMA website directly.
Can I get only what changed? Yes: Recurring runs → Return only changes.
What's the difference with EU Pharma Sites Graph? This actor gives one row per document; Sites Graph gives one row per building/site with all its documents grouped.
How much does a test run cost? The pre-filled input (Spanish WDA, 50 records) on the Free plan is 50 x $0.004 = $0.20, plus the $0.00005 Actor start event. Max records caps any run.
Why are status or the ORG/LOC IDs null? In the real wholesale-distributor record above (details off) status is null, and the source list does not include the official ORG/LOC IDs for wholesale distributors. Switch on fetchDetails, or use EU Pharma Sites Graph.
Do I need proxies? No. The source is public and the Actor queries it politely (max 2 parallel requests).
Related Rastriq actors
- EU Pharma Sites Graph - one row per pharma site with all its licences grouped.
- FDA Drug Establishments (DECRS) - drug establishments registered with the US FDA, with daily changes and removals.
- Europages Scraper - European B2B company directory.