EudraGMDP Pharma Registry (EMA) - WDA, MIA, GMP, GDP, API avatar

EudraGMDP Pharma Registry (EMA) - WDA, MIA, GMP, GDP, API

Pricing

from $2.50 / 1,000 document returneds

Go to Apify Store
EudraGMDP Pharma Registry (EMA) - WDA, MIA, GMP, GDP, API

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

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

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 / hospital
supplier (makes the (stores and distributes)
medicine)
API registration MIA licence WDA licence
+ GMP cert. + GDP cert.
You'll see...It means...Everyday analogy
WDALicence to be a wholesale distributor of medicinesA licence to run a logistics warehouse
MIALicence to manufacture or import medicinesA factory's operating licence
GMP certificateA factory passed its Good Manufacturing Practice inspectionA passed MOT/ITV, for a factory
GDP certificateA warehouse/distributor passed its Good Distribution Practice inspection (storage, temperature, traceability)A passed MOT/ITV, for a warehouse
Non-complianceThe inspection failed seriously — often means suspension or product recallsA failed MOT, made public
API registrationRegistration to make, import or distribute active ingredients (the raw chemical)A raw-material supplier register
SiteOne physical location (a plant, a warehouse). A company can have manyA branch / building
ORG-… / LOC-…The EMA's official ID for a company (ORG) and for a site (LOC)Company tax ID / building reference
NCAThe national authority that issued the documentThe issuing office

Which dataset do I need?

Pick one or more in "What do you want to download?".

If you want...ChooseRecords (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 importersManufacturers & importers (MIA)~7,400~1 min
To check whether factories passed inspection, or find failed onesFactory inspection certificates (GMP)~14,000 (EEA) + non-EEA sites (India, China, US...)~2.5–8 min
To check whether distributors/warehouses passed inspectionWarehouse inspection certificates (GDP)~500 per mid-size country~3.5 min per country
Active-ingredient makers, importers and tradersActive 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)

  1. What do you want to download? → e.g. Wholesale distributors.
  2. Countries → e.g. Spain, or All EEA countries.
  3. 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

ColumnPlain meaningExample
moduleWhich dataset the row comes fromWDA
docIdUnique ID of the document in EudraGMDP — use it to deduplicate29276
documentTypeExact document type (see table below)WDA, GMPC, GMPNC, GDPWDA...
documentNumberLicence / certificate number given by the authorityED-023-CL
holder.nameCompany that holds the licenceLeon Research S.L.
holder.omsOrganisationIdOfficial company ID (ORG-…) — best key to group a company's sitesORG-100027271
site.name, site.street, site.city, site.postcode, site.country, site.countryCodeWhere the site isLeon, 24009, ES
site.omsLocationIdOfficial site ID (LOC-…) — best key to join with other dataLOC-100054103
dates.authorisation / dates.issueWhen the licence was granted / certificate issued2026-10-07
dates.inspectionEndDate of the last inspection (certificates)2023-05-25
dates.lastUpdatedLast time the authority changed the record2026-10-09T14:01:03
permalinkLink to the official page on the EMA website
_flagsData-quality warnings (see below)["non_compliance"]

documentType decoded

ValueMeaning
WDAWholesale distribution licence
MIAManufacturing / import licence
GMPCFactory passed inspection
GMPNCFactory failed inspection (non-compliance)
GDPWDAWholesaler warehouse passed inspection
GDPAPIActive-ingredient distributor passed inspection
GDPNCWDA / GDPNCAPIDistributor failed inspection
API-REGActive ingredient registration

Filled only with "Include full licence details"

ColumnPlain meaning
issuingAuthorityAuthority that signed the document (e.g. Junta de Castilla y León)
legalBasisLaws the licence is granted under
scope.productTypesHuman and/or veterinary medicines
scope.distributionOperationsWhat a distributor may do: procurement (buy), holding (store), supply (sell), export, other
scope.specialRequirementProductsProducts needing special handling: cold chain, immunologicals/vaccines, blood products, narcotics, radiopharmaceuticals
scope.manufacturingOperationsWhat a factory may make/test (sterile, tablets, packaging, quality control...)
scope.activeSubstancesActive ingredients a registered supplier handles
linkedAuthorisationNumberFor GDP certificates: the WDA licence they certify
remarksFree-text remarks from the authority (e.g. validity date)
nonComplianceDetailsFor failed inspections: what went wrong and what action was taken

_flags — warnings, never filters

We never delete rows; we label them so you decide:

FlagMeaning
non_complianceFailed inspection
gmp_older_than_3y / gdp_older_than_5yInspection older than the certificate's own validity guidance — check before relying on it
uk_legacy_pre2021UK document frozen since Brexit (only Northern Ireland is still updated)
encoding_suspectGarbled characters in the source (some Czech addresses); kept as published
address_unparsedCity or postcode couldn't be separated from the address
confidential_fieldsThe source hides names/signatures as "Confidential" (we never collect them)
detail_fetch_failedDetails 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

ParameterTypeDefaultDescription
modulesarray of strings (required)["WDA"]Datasets to download: WDA, MIA, GMP, GDP, API_REG (beta).
countriesarray of strings["EEA"] (pre-filled: ["ES"])EEA, ALL (GMP/GDP include non-EEA sites), THIRD (non-EEA only), or any 2-letter country code.
fetchDetailsbooleanfalseInclude full licence details (authority, inspection dates, activities, special products). About 2-3 seconds per document.
maxItemsinteger (min 1)1000 (pre-filled: 50)Stop after this many records.
holderNameContainsstringemptyCompany or site name contains (case-insensitive, partial match).
includeNonCompliancebooleantrueInspection certificates only: also return statements of non-compliance (flag non_compliance).
gdpOperationstringALLWarehouse certificates (GDP) only: ALL, GDPWDA or GDPAPI.
dateFromdate stringemptyInspection certificates only: issued on or after this date (for example 2025-01-01).
dateTodate stringemptyInspection certificates only: issued on or before this date.
modestringfullfull or delta. With delta each run remembers what it returned (key-value store eudragmdp-registry-state) and outputs only new or updated documents.
updatedSincedate stringemptyReturn only documents updated on or after this date (for example 2026-09-01).
maxConcurrencyinteger (1-2)2Parallel requests, capped at 2 out of respect for the public EMA website.
proxyConfigurationobjectApify Proxy offNot 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

FieldTry one of these
Company name containsAlliance 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
CountriesES, DE, FR, IT, NL, PL; EEA (all of Europe); THIRD (non-EEA sites inspected by EU authorities, GMP/GDP only)
Issued from / until2025-01-01 → 2025-12-31 (one year of certificates)
Only updated sincee.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):

EventFreeBronzeSilverGold+
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):

RunRowsCost
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 countryusually < 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).