EUDAMED Devices & UDI Registry Scraper
Pricing
Pay per event
EUDAMED Devices & UDI Registry Scraper
π Search and export public EUDAMED device and UDI registry records by identifiers, manufacturer, model, risk class, and status for EU compliance and market research.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Stas Persiianenko
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Search and export public medical-device records from the European Commission's EUDAMED Device and UDI registry.
Turn UDI-DIs, manufacturer names, SRNs, product models, trade names, risk classes, EMDN codes, and status filters into a clean dataset ready for compliance work, market research, and monitoring.
No EUDAMED login or private credentials are required for the public device scope.
What does EUDAMED Devices & UDI Registry Scraper do?
The Actor queries the public EUDAMED device-search service and saves normalized device rows to an Apify dataset.
It can:
- π look up a specific UDI-DI or Basic UDI-DI;
- π find devices associated with a manufacturer name or SRN;
- π₯ search by device name, model, trade name, or reference;
- βοΈ narrow results with legislation, scope, type, risk class, EMDN, and status codes;
- π attach public version-history metadata;
- π paginate through larger result sets;
- π€ export records as JSON, CSV, Excel, XML, or RSS.
Who is it for?
Regulatory affairs and quality teams
Verify public registrations, compare identifiers, and prepare repeatable evidence for internal device files.
Medical-device manufacturers
Review how products and competitors appear in the public EU registry and check manufacturer identifiers.
Distributors and procurement teams
Confirm manufacturer, device status, UDI, and risk-class data before onboarding products.
Compliance consultants
Build reusable client checks without manually copying rows from the EUDAMED interface.
Market-intelligence analysts
Create structured lists of devices and manufacturers for segmentation, product research, and change tracking.
Why use this EUDAMED scraper?
Manual EUDAMED searches are useful for one-off checks, but repetitive research quickly becomes slow and difficult to reproduce.
This Actor provides:
- structured fields instead of copied table cells;
- deterministic filters that can be saved and rerun;
- pagination and result limits;
- machine-readable reference codes;
- readable labels for common status and risk-class codes;
- direct Apify API, webhook, schedule, and integration support;
- normalized timestamps and source links for traceability.
What data can you extract?
| Field | Description |
|---|---|
primaryDi | Primary UDI-DI |
basicUdi | Basic UDI-DI family identifier |
uuid | EUDAMED UUID |
ulid | EUDAMED ULID |
basicUdiUlid | Linked Basic UDI record identifier |
tradeName | Registered trade name |
deviceName | Registered device name |
deviceModel | Device model |
reference | Manufacturer or registry reference |
riskClassCode | Original EUDAMED risk-class code |
riskClass | Human-readable risk class |
deviceStatusCode | Original device-status code |
deviceStatus | Human-readable device status |
manufacturerName | Legal manufacturer name |
manufacturerSrn | Manufacturer Single Registration Number |
manufacturerStatus | Human-readable manufacturer status |
authorisedRepresentativeName | EU authorised representative, when available |
authorisedRepresentativeSrn | Representative SRN, when available |
versionNumber | Registry version number |
latestVersion | Whether this is the latest version |
versions | Optional public version-history metadata |
scrapedAt | UTC extraction timestamp |
How to scrape EUDAMED device records
- Open the Actor input page.
- Enter one or more device, manufacturer, or classification filters.
- Set a small
maxItemsvalue for the first run. - Enable version history only when you need it.
- Click Start.
- Open the Dataset tab to inspect results.
- Export the dataset or connect it to your workflow.
The prefilled pacemaker model search is a low-cost smoke test.
Input options
Device identifiers
primaryDiβ exact or partial primary UDI-DI supported by EUDAMED.basicUdiβ Basic UDI-DI family identifier.referenceβ manufacturer or registry reference.
Names and models
deviceNameβ registered medical-device name.deviceModelβ model or model keyword.tradeNameβ commercial trade name.
Manufacturer filters
manufacturerNameβ legal manufacturer name or keyword.manufacturerSrnβ EUDAMED manufacturer SRN.
Classification filters
legislationCodeβ applicable EUDAMED legislation code.deviceScopeCodeβ device-scope reference code.deviceTypeCodeβ device-type reference code.riskClassCodeβ full risk-class code.emdnCodeβ European Medical Device Nomenclature code.statusCodeβ full device-status code.
Limits and paging
maxItemsβ maximum unique device rows to save.pageSizeβ records requested per source page, from 1 to 300.startPageβ zero-based page for resumable exports.languageβ two-letter EUDAMED language code.includeHistoricalVersionsβ attach public version metadata.additionalFiltersβ advanced official API query parameters.
Input example
{"deviceModel": "pacemaker","statusCode": "refdata.device-model-status.on-the-market","includeHistoricalVersions": false,"maxItems": 25,"pageSize": 25,"language": "en"}
For a manufacturer lookup:
{"manufacturerSrn": "IT-MF-000025272","maxItems": 100}
Output example
{"source": "EUDAMED","sourceUrl": "https://ec.europa.eu/tools/eudamed/#/screen/search-device","primaryDi": "D-899565UN","basicUdi": "B-899565UN","uuid": "f4cf4775-10c5-40f9-b1bf-fabfd8fdfe36","riskClassCode": "refdata.risk-class.class-iia","riskClass": "Class Iia","deviceStatus": "On The Market","manufacturerName": "MED ITALIA BIOMEDICA S.R.L","manufacturerSrn": "IT-MF-000025272","versionNumber": 1,"latestVersion": true,"reference": "899565","scrapedAt": "2026-07-14T00:00:00.000Z"}
A source field can legitimately be null when EUDAMED does not publish it on the matching search row.
How much does it cost to scrape EUDAMED devices?
This Actor uses pay-per-event pricing: a $0.005 start fee plus one charge per saved device.
| Apify tier | Price per device | Approx. 1,000 devices incl. start |
|---|---|---|
| Free | $0.00017037 | $0.1754 |
| Bronze | $0.00014815 | $0.1532 |
| Silver | $0.00011556 | $0.1206 |
| Gold | $0.000088891 | $0.0939 |
| Platinum | $0.000059261 | $0.0643 |
| Diamond | $0.000041483 | $0.0465 |
You pay for produced records rather than a monthly data subscription. Platform compute is covered by the pay-per-event price. The final run cost is visible in the Apify Console.
Use a low maxItems value to validate your filters before a larger export.
Pagination and large exports
EUDAMED uses zero-based result pages.
The Actor automatically advances pages until it reaches maxItems or the final source page. It deduplicates rows by UDI-DI and version number.
For resumable jobs:
- choose a fixed
pageSize; - run from
startPage: 0; - record the last completed page;
- resume with a later
startPage; - merge datasets using UDI-DI plus version number.
Source records can change between runs, so a stable identifier is better than relying on row order.
Historical versions
Set includeHistoricalVersions to true to call the public EUDAMED versions endpoint for every device.
The versions array may include:
- version UUID and ULID;
- version number;
- latest-version flag;
- version state code;
- last-update date.
Version lookup adds one request per device. Leave it disabled for broad discovery when current rows are sufficient.
Tips for reliable EUDAMED searches
- Start with one strong identifier whenever possible.
- Use the full SRN for manufacturer verification.
- Preserve reference codes from previous output for precise reruns.
- Keep the first test to 10β25 records.
- Avoid combining unrelated filters that cannot match the same row.
- Use official full status and risk-class codes.
- Schedule recurring searches with identical input for change detection.
- Compare
primaryDi,versionNumber, andlastUpdateDatebetween snapshots.
Data quality and limitations
The Actor returns data published by the European Commission's public EUDAMED service.
Keep in mind:
- not every field is populated for every device;
- some fields depend on the applicable legislation and record type;
- public EUDAMED coverage evolves as modules and registration obligations change;
- readable labels are derived from official reference codes;
- version history contains metadata exposed by the public version endpoint;
- EUDAMED source availability and behavior can change without notice.
The Actor does not certify a device, assess conformity, or replace professional regulatory advice.
Scheduling and monitoring
Apify schedules can rerun an input hourly, daily, weekly, or monthly.
A practical monitoring workflow is:
- save a manufacturer, model, or UDI search as a task;
- schedule the task;
- send each dataset to a webhook or storage system;
- compare stable identifiers and version fields;
- notify a compliance owner when status or version changes.
For sparse checks, a small scheduled lookup can be more useful than repeatedly exporting a full registry segment.
Integrations
Google Sheets
Send normalized rows to a sheet used by regulatory or procurement teams.
Slack or Microsoft Teams
Post a message when a scheduled device lookup returns a new status or version.
Make and Zapier
Trigger downstream enrichment, approval, or ticket workflows after each run.
Webhooks
Subscribe to run completion and fetch the default dataset through its API URL.
Data warehouses
Export JSON or CSV to BigQuery, Snowflake, PostgreSQL, or an object-storage pipeline.
Use with the Apify API β JavaScript
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('automation-lab/eudamed-devices-udi-registry-scraper').call({deviceModel: 'pacemaker',maxItems: 25,});const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Use with the Apify API β Python
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ['APIFY_TOKEN'])run = client.actor('automation-lab/eudamed-devices-udi-registry-scraper').call(run_input={'manufacturerName': 'MED ITALIA', 'maxItems': 50})items = client.dataset(run['defaultDatasetId']).list_items().itemsprint(items)
Use with the Apify API β cURL
curl -X POST \"https://api.apify.com/v2/acts/automation-lab~eudamed-devices-udi-registry-scraper/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"primaryDi":"D-899565UN","maxItems":10}'
Fetch results using the defaultDatasetId returned by the completed run.
Use EUDAMED data with MCP
Connect the Actor through this Apify MCP endpoint:
https://mcp.apify.com/?tools=automation-lab/eudamed-devices-udi-registry-scraper
Claude Code setup
$claude mcp add --transport http apify "https://mcp.apify.com/?tools=automation-lab/eudamed-devices-udi-registry-scraper"
Provide your Apify token securely when prompted, then ask Claude to run the Actor with structured input.
Claude Desktop setup
Add the server to Claude Desktop's MCP configuration:
{"mcpServers": {"apify-eudamed": {"url": "https://mcp.apify.com/?tools=automation-lab/eudamed-devices-udi-registry-scraper"}}}
Cursor setup
Open Settings β MCP, add a remote HTTP server, and use the same apify-eudamed name and MCP URL. Cursor also accepts the mcpServers JSON shown above.
VS Code setup
Open the MCP server configuration in VS Code, choose an HTTP server, and add the same Apify MCP URL. Store credentials in VS Code's secure input flow rather than committing them.
Example prompts:
- βFind 20 public EUDAMED devices matching the model pacemaker and group them by manufacturer.β
- βLook up this UDI-DI and summarize its manufacturer, risk class, and status.β
- βCompare version metadata for devices associated with this manufacturer SRN.β
Is it legal to scrape EUDAMED?
EUDAMED provides a public search surface for public device information. This Actor accesses that anonymous public scope.
You remain responsible for:
- your lawful purpose and jurisdiction;
- compliance with applicable terms and database rights;
- responsible request volume;
- secure handling of exported data;
- validating information before regulated decisions.
No login-only or private EUDAMED data is accessed.
Frequently asked questions
Do I need an EUDAMED account?
No. The Actor is designed for the anonymous public device-search scope.
Can I search by UDI-DI?
Yes. Use primaryDi or basicUdi depending on the identifier you have.
Can I search by manufacturer?
Yes. Use manufacturerName for text search or manufacturerSrn for a registry identifier.
Does it include certificates?
No. This Actor focuses on device and UDI registry rows. Use the related EUDAMED certificates actor for certificates.
Why are some output values null?
EUDAMED search rows do not populate every field for every record. Null means the public source did not supply that field on the result.
Why did my search return no records?
Check for incompatible filters, remove optional criteria, verify full reference codes, and try one identifier or model keyword first.
Why did a run fail with an HTTP error?
The European Commission service may be temporarily unavailable or filter a request. The Actor retries transient failures; rerun later if the final retry still fails.
How do I monitor changes?
Save the input as an Apify task, schedule it, and compare UDI-DI, version, status, and update fields between datasets.
Related scrapers
- EUDAMED Certificates Scraper β export public EUDAMED certificate records.
- OpenFDA 510(k) Device Clearances Scraper β research US device clearances.
- OpenFDA Device Classification Scraper β retrieve FDA classification records.
Support
If a valid public EUDAMED search behaves differently in this Actor, open an issue from the Actor page and include:
- the input with sensitive data removed;
- the run URL;
- the expected registry result;
- the observed output or error.
That evidence helps reproduce source changes quickly.