EUDAMED EU Medical Device Registry Scraper
Independent tool. Trademarks referenced on this page are the property of their respective owners and are used only to identify the public website this tool reads. No affiliation or endorsement.
EUDAMED EU Medical Device Registry Scraper
Pull the European Union's mandatory medical device registry — EUDAMED — in full. Returns UDI-DI device records (make, model, risk class, legislation, device status, manufacturer) and notified-body certificates, joined on the manufacturer's EU Single Registration Number (SRN) so you can answer "which notified body certified this manufacturer, under what certificate, valid until when" in one dataset instead of two lookups.
EUDAMED Scraper Features
- Walks the entire public registry instead of answering one search at a time — the device endpoint alone reports 3.5M+ records
- Emits notified-body certificates alongside device records, joined by manufacturer/actor SRN
- Derives the manufacturer's registered country from its SRN prefix, so you don't have to parse it yourself
- Translates the registry's internal reference codes (risk class, device status, certificate status) into plain labels instead of raw codes
- Carries version and status fields (
latest_version,version_number,last_update_date) so a device's history is diffable across runs - Choose device records, certificates, or both in a single run
- No account or login required — EUDAMED is a public EU registry
Who Uses EU Medical Device Registry Data?
- Regulatory-affairs teams — check whether a competitor's device is already MDR/IVDR certified, by whom, and under which certificate
- Competitive intelligence — track a competitor's device portfolio and watch it change over time via the version/status fields
- Distributor and importer prospecting — the manufacturer SRN is the legal entity you'd contract with; use it directly instead of resolving a company name
- Notified-body and consultancy practices — cross-reference certificate coverage across manufacturers and device classes
- Supply-chain risk teams — monitor when a device moves to "no longer placed on the market"
How EUDAMED Scraper Works
- Choose which record types you want — device records, certificates, or both (default: both).
- It walks the registry's device and/or certificate listings from the start, page by page.
- Reference codes (risk class, device status, certificate status, manufacturer status) are translated into plain labels, and the manufacturer's country is derived from its SRN.
- Every record lands in your dataset as clean, consistently-shaped JSON — device rows and certificate rows share one schema, joinable on
manufacturer_srn/actor_srn.
Input
{
"maxItems": 100,
"recordTypes": ["device", "certificate"]
}
| Field | Type | Default | Description |
|---|---|---|---|
maxItems |
integer | 10 | Maximum number of records to save across all selected record types. Set 0 to pull the entire selected corpus. |
recordTypes |
array | ["device", "certificate"] |
Which record types to include: device (UDI-DI registrations) and/or certificate (notified-body certifications) |
Pulling only certificates
{
"maxItems": 500,
"recordTypes": ["certificate"]
}
EUDAMED Scraper Output Fields
{
"record_type": "device",
"uuid": "2e40ce1c-8ce2-4711-be82-98a2f5dd6cbe",
"ulid": "01M3106VVG2JM2X3N99PRPXQMF",
"basic_udi": "B-WB-IFIgE-454(AT)28",
"primary_di": "D-WB-IFIgE-454(AT)28",
"issuing_agency": null,
"trade_name": "Inhalant-Food Allergen-specific IgE Antibodies Rapid Test kit (Immunoblotting)",
"device_name": null,
"device_model": null,
"reference": "WB-IFIgE-454",
"risk_class": "IVD General",
"applicable_legislation": null,
"device_status": "On The Market",
"sterile": null,
"multi_component": null,
"container_package_count": 0,
"device_criterion": null,
"manufacturer_name": "Hangzhou Alltest Biotech.Co.,Ltd.",
"manufacturer_srn": "CN-MF-000010710",
"manufacturer_status": "Active",
"manufacturer_country": "CN",
"authorised_representative_name": "VidaQuick Biotech S.L.",
"authorised_representative_srn": "ES-AR-000048138",
"notified_body_srn": null,
"certificate_number": null,
"certificate_type": null,
"certificate_valid_from": null,
"certificate_valid_to": null,
"certificate_status": null,
"actor_name": null,
"actor_srn": null,
"latest_version": true,
"version_number": 1,
"last_update_date": null,
"scraped_at": "2026-09-21T13:12:23.260Z"
}
| Field | Type | Description |
|---|---|---|
record_type |
string | device or certificate |
uuid / ulid |
string | Registry-internal identifiers for this record |
basic_udi / primary_di |
string | Device rows only — Basic UDI-DI and Primary DI |
issuing_agency |
string | Device rows only — UDI issuing agency (GS1, HIBCC, ICCBBA, IFA), when published |
trade_name / device_name / device_model |
string | Device rows only — as published by the manufacturer |
reference |
string | Device rows only — manufacturer's internal reference |
risk_class |
string | Device rows only — MDR/IVDR risk classification (Class I / IIa / IIb / III, IVD General/A–D) |
applicable_legislation |
string | Device rows only — MDR 2017/745 or IVDR 2017/746, when published |
device_status |
string | Device rows only — e.g. "On The Market", "No Longer Placed On The Market" |
sterile / multi_component |
boolean | Device rows only — as published; frequently unpublished (null) on a given device |
container_package_count |
integer | Device rows only |
device_criterion |
string | Device rows only |
manufacturer_name / manufacturer_srn |
string | Device rows only — the legal manufacturer and its EU Single Registration Number |
manufacturer_status |
string | Device rows only — the manufacturer's registration status |
manufacturer_country |
string | Device rows only — ISO 3166-1 alpha-2 code, derived from the manufacturer SRN prefix |
authorised_representative_name / authorised_representative_srn |
string | Device rows only — EU authorised representative, when the manufacturer is outside the EU |
notified_body_srn |
string | Certificate rows only — the certifying notified body's identifier |
certificate_number / certificate_type / certificate_status |
string | Certificate rows only |
certificate_valid_from / certificate_valid_to |
string | Certificate rows only — ISO-8601 validity window |
actor_name / actor_srn |
string | Certificate rows only — the certificate holder and its SRN (equivalent to manufacturer_name/manufacturer_srn on a device row) |
latest_version |
boolean | Whether this is the current version of the record |
version_number |
integer | Registry version counter for this record |
last_update_date |
string | Device rows only — when the registry last updated this record |
scraped_at |
string | ISO-8601 timestamp when this record was scraped |
Device-only fields are null on certificate rows and vice versa — join a device row to a certificate row on manufacturer_srn == actor_srn to see which notified body certified that manufacturer.
Reference-data codes are translated into plain labels (e.g. refdata.risk-class.class-iia → Class IIa). An unrecognised future code falls back to a generic title-cased label rather than the raw code.
Resuming a large crawl
Every run emits a resumeCursor in its Output. If a large crawl stops before it finishes — because it hit maxItems, your spend cap (maxTotalChargeUsd), or was aborted — start a new run with the same input plus that resumeCursor to continue from where it left off. The crawl resumes from the queued work the previous run didn't reach.
- You are not re-charged for records the earlier run already delivered.
- Resume within your account's run-retention window — on the free tier, roughly your 10 most recent runs. Once the source run is pruned, its
resumeCursoris no longer valid. resumeCursoris opaque — supply it unmodified.
FAQ
How do I scrape the full EUDAMED registry?
Set maxItems to 0 and leave recordTypes at its default to pull every device record and every certificate. A full pull is several million records, so budget your run's time and spend cap accordingly, or pull it incrementally with resumeCursor.
Can I get just the certificates, not the devices?
Yes. Set recordTypes to ["certificate"].
How do I join a device to its notified-body certificate?
Match a device row's manufacturer_srn to a certificate row's actor_srn. Both are the same EU Single Registration Number scheme.
Does this cover IVD devices as well as medical devices?
Yes. risk_class reports both the MDR classes (I, IIa, IIb, III) and the IVDR classes (IVD General, A–D) exactly as the registry publishes them.
Does EUDAMED Scraper require an account or subscription?
No. EUDAMED is a public EU registry — no account, no login, nothing to sign up for.
Need More Features?
Need additional fields or a different filter? File an issue or get in touch.
Why Use EUDAMED Scraper?
- Full-registry coverage — walks the entire public device and certificate listing instead of answering one search box query at a time.
- The certificate join — the only EUDAMED actor that emits notified-body certificates linked to devices by manufacturer SRN.
- Diffable output — version and status fields let you track a manufacturer's portfolio changing over time instead of re-buying a snapshot.