# EU Health & Compliance Data API (`lentic_clockss/eu-health-compliance-search`) Actor

Search 17 EU health and compliance data sources in parallel — EMA authorized medicines, EUDAMED medical devices, CTIS clinical trials, ECDC disease surveillance, EFSA food safety, EU Ecolabel, EMAS environmental registrations, and E-PRTR industrial emissions. Official European regulatory data.

- **URL**: https://apify.com/lentic\_clockss/eu-health-compliance-search.md
- **Developed by:** [kane liu](https://apify.com/lentic_clockss) (community)
- **Categories:** Lead generation, MCP servers
- **Stats:** 1 total users, 0 monthly users, 0.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-usage

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## EU Health & Compliance Data Search

Search **17 official European health and compliance data sources** in a single API call — EMA authorized medicines, EUDAMED medical devices (1.48 million entries), CTIS clinical trials, ECDC disease surveillance, EFSA food safety data, EU Ecolabel products, and industrial emissions. All data comes directly from European regulatory agencies through the SIP Public Data Gateway.

### What is EU Health & Compliance Data Search?

EU Health & Compliance Data Search is an Apify Actor that queries official European health and environmental compliance databases. Instead of navigating EMA, EUDAMED, CTIS, ECDC, and EFSA portals separately, you search them all at once with a single keyword.

The Actor calls the **SIP Public Data Gateway** — a unified API that normalizes responses from 17 EU health and compliance data products. No browser, no scraping — just HTTPS API calls to official regulatory sources.

### Why use EU Health & Compliance Data Search?

- **One search, 17 sources** — Query EMA medicines, EUDAMED devices, clinical trials, and compliance registers simultaneously
- **Official regulatory data** — All sources are public databases from EMA, ECDC, EFSA, and the European Commission
- **1.48 million medical devices** — EUDAMED is the largest EU medical device database, mandatory under MDR/IVDR
- **Drug safety monitoring** — EMA PSUSAs, safety communications, shortages, and post-authorisation data in one place
- **No upstream API keys** — SIP handles authentication with all EU health APIs; you only need one SIP key

#### Use cases

| Who | What |
|-----|------|
| **Pharma regulatory affairs** | Monitor EMA authorizations, EPAR documents, orphan designations, and drug shortages |
| **Medical device companies** | Search EUDAMED for registered devices, compliance status under MDR/IVDR |
| **Clinical research organizations** | Find EU clinical trials in CTIS, track paediatric investigation plans |
| **Pharmacovigilance teams** | Monitor PSUSAs, safety communications, and post-authorisation studies |
| **Environmental compliance** | Search EU Ecolabel, EMAS registrations, E-PRTR emissions data |
| **Food safety analysts** | Access EFSA OpenFoodTox chemical hazard data |
| **RegTech companies** | Bulk-query EU health registers for regulatory monitoring |

### What data can EU Health & Compliance Data Search extract?

| Source | Data type | Example fields |
|--------|-----------|----------------|
| EMA medicines | EU-authorized human medicines | medicine_name, active_substance, therapeutic_area, authorisation_status |
| EMA EPAR | European public assessment reports | product_name, document_type, date |
| EMA herbal medicines | Traditional herbal medicines | herbal_substance, indication, therapeutic_area |
| EMA orphan designations | Rare disease drug designations | medicine_name, condition, sponsor, designation_status |
| EMA paediatric plans | Paediatric investigation plans | medicine_name, decision_type, condition |
| EMA post-authorisation | Post-marketing studies and data | medicine_name, study_type, status |
| EMA shortages | Medicine supply shortages | medicine_name, shortage_type, start_date |
| EMA PSUSAs | Periodic safety update assessments | active_substance, outcome, date |
| EMA safety comms | Safety communications and referrals | title, category, date |
| EUDAMED devices | 1.48M registered medical devices | device_name, manufacturer, risk_class, udi |
| CTIS clinical trials | 11,000+ EU clinical trials | trial_title, sponsor, status, therapeutic_area |
| ECDC surveillance | Communicable disease surveillance | disease, country, cases, rate |
| EU Ecolabel | Eco-certified products | product_name, category, licence_number |
| EFSA OpenFoodTox | Chemical hazard data | substance, endpoint, species, value |
| EMAS registrations | Environmental management registrations | organisation, country, nace_code |
| E-PRTR emissions | Industrial pollutant releases | facility, pollutant, quantity, country |
| ESMA sanctions | Financial market sanctions | entity, sanction_type, date |

### How to search EU health data

1. Open the Actor in Apify Console
2. Enter search terms (e.g. "ibuprofen", "pacemaker", "clinical trial diabetes")
3. Select data categories — medicines and devices are enabled by default
4. Click **Start** — the Actor queries all enabled sources in parallel
5. Download results as JSON, CSV, or Excel

#### Example input

```json
{
  "searchTerms": ["ibuprofen", "paracetamol"],
  "includeEmaMedicines": true,
  "includeMedicalDevices": false,
  "includeClinicalTrials": true,
  "includeEnvironmentalCompliance": false,
  "maxResultsPerSource": 50
}
````

### Output

Each row is a record from an EU health or compliance source:

```json
{
  "medicine_name": "Ibuprofen Lannacher",
  "active_substance": "ibuprofen",
  "therapeutic_area": "Pain, inflammation",
  "authorisation_status": "Authorised",
  "_product_id": "eu_ema_medicines",
  "_source": "ema_medicines",
  "_search_term": "ibuprofen",
  "_collected_at": "2026-04-08T12:00:00Z"
}
```

### How much does it cost?

Pay-per-event pricing based on records returned:

- **Quick drug lookup** (1 term, EMA only): ~$0.01–0.10
- **Device compliance scan** (5 terms, all sources): ~$0.50–3.00

No browser overhead. Control costs with `maxResultsPerSource`.

### Data sources (17 EU products)

| Category | Sources | Count |
|----------|---------|-------|
| EMA medicines & drug safety | Medicines, EPAR, herbal, orphan, paediatric, post-auth, shortages, PSUSAs, safety comms | 9 |
| Medical devices | EUDAMED (1.48M devices) | 1 |
| Clinical trials & surveillance | CTIS, ECDC atlas | 2 |
| Environmental & food compliance | Ecolabel, EFSA OpenFoodTox, EMAS, E-PRTR, ESMA sanctions | 5 |

### FAQ

**What is EUDAMED?**
The European Database on Medical Devices — mandatory registration under MDR (2017/745) and IVDR (2017/746). Contains 1.48 million device entries with manufacturer, risk class, and UDI information. Full compliance required by May 2026.

**How current is EMA data?**
EMA databases update continuously as new authorizations, safety signals, and shortage reports are published. SIP caches responses briefly but always fetches from official EMA APIs.

**Can I monitor drug shortages?**
Yes. Search for a medicine name with `includeEmaMedicines` enabled to find active shortage reports, safety communications, and PSUSA outcomes.

**Is ECDC surveillance data real-time?**
ECDC Surveillance Atlas data is updated weekly to monthly depending on the disease. It provides epidemiological indicators, not real-time case counts.

### Use as MCP Tool (AI Agent Integration)

This Actor works as an MCP tool — AI agents (Claude, GPT, Cursor) can discover and run it automatically.

#### Quick setup (Claude Desktop / Cursor / VS Code)

Add to your MCP config:

```json
{
  "mcpServers": {
    "apify": {
      "url": "https://mcp.apify.com",
      "headers": {
        "Authorization": "Bearer YOUR_APIFY_TOKEN"
      }
    }
  }
}
```

Then ask your AI: *"Search for ibuprofen in EU health databases"*

#### Direct API call

```python
from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("lentic_clockss/eu-health-compliance-search").call(
    run_input={"searchTerms": ["ibuprofen"], "maxResultsPerSource": 50}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

### Other Data API Actors

- [US Healthcare Provider Data API](https://apify.com/lentic_clockss/us-healthcare-search)
- [Israel Government Data API](https://apify.com/lentic_clockss/israel-data-search)
- [Taiwan Government Data API](https://apify.com/lentic_clockss/taiwan-data-search)

# Actor input Schema

## `searchTerms` (type: `array`):

Drug names, device types, substances, or keywords to search (e.g. 'ibuprofen', 'cardiac', 'pacemaker'). Each term is searched across all enabled EU health and compliance sources in parallel.

## `includeEmaMedicines` (type: `boolean`):

Search EMA authorized medicines, EPAR assessment documents, herbal medicines, orphan drug designations, paediatric plans, post-authorisation data, drug shortages, PSUSAs, and safety communications (9 sources).

## `includeMedicalDevices` (type: `boolean`):

Search the EU medical device database EUDAMED — 1.48 million registered devices under MDR/IVDR regulation (1 source).

## `includeClinicalTrials` (type: `boolean`):

Search CTIS Clinical Trials Information System (11,000+ EU trials) and ECDC disease surveillance atlas (1 source each).

## `includeEnvironmentalCompliance` (type: `boolean`):

Search EU Ecolabel products, EFSA OpenFoodTox chemical hazards, EMAS environmental registrations, E-PRTR industrial emissions, and ESMA sanctions (5 sources).

## `maxResultsPerSource` (type: `integer`):

Maximum records to return per data source (gateway caps at 200).

## Actor input object example

```json
{
  "searchTerms": [
    "ibuprofen"
  ],
  "includeEmaMedicines": true,
  "includeMedicalDevices": true,
  "includeClinicalTrials": true,
  "includeEnvironmentalCompliance": false,
  "maxResultsPerSource": 50
}
```

# Actor output Schema

## `healthRecords` (type: `string`):

Dataset containing medicines, medical devices, clinical trials, disease surveillance, food safety, and environmental compliance data from 17 EU sources.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "searchTerms": [
        "ibuprofen"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("lentic_clockss/eu-health-compliance-search").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = { "searchTerms": ["ibuprofen"] }

# Run the Actor and wait for it to finish
run = client.actor("lentic_clockss/eu-health-compliance-search").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "searchTerms": [
    "ibuprofen"
  ]
}' |
apify call lentic_clockss/eu-health-compliance-search --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=lentic_clockss/eu-health-compliance-search",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "EU Health & Compliance Data API",
        "description": "Search 17 EU health and compliance data sources in parallel — EMA authorized medicines, EUDAMED medical devices, CTIS clinical trials, ECDC disease surveillance, EFSA food safety, EU Ecolabel, EMAS environmental registrations, and E-PRTR industrial emissions. Official European regulatory data.",
        "version": "0.1",
        "x-build-id": "8ThD9sMrK0Rwe4BHP"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/lentic_clockss~eu-health-compliance-search/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-lentic_clockss-eu-health-compliance-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/lentic_clockss~eu-health-compliance-search/runs": {
            "post": {
                "operationId": "runs-sync-lentic_clockss-eu-health-compliance-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/lentic_clockss~eu-health-compliance-search/run-sync": {
            "post": {
                "operationId": "run-sync-lentic_clockss-eu-health-compliance-search",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "searchTerms"
                ],
                "properties": {
                    "searchTerms": {
                        "title": "Search terms",
                        "type": "array",
                        "description": "Drug names, device types, substances, or keywords to search (e.g. 'ibuprofen', 'cardiac', 'pacemaker'). Each term is searched across all enabled EU health and compliance sources in parallel.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "includeEmaMedicines": {
                        "title": "Include EMA medicines & drug safety",
                        "type": "boolean",
                        "description": "Search EMA authorized medicines, EPAR assessment documents, herbal medicines, orphan drug designations, paediatric plans, post-authorisation data, drug shortages, PSUSAs, and safety communications (9 sources).",
                        "default": true
                    },
                    "includeMedicalDevices": {
                        "title": "Include EUDAMED medical devices",
                        "type": "boolean",
                        "description": "Search the EU medical device database EUDAMED — 1.48 million registered devices under MDR/IVDR regulation (1 source).",
                        "default": true
                    },
                    "includeClinicalTrials": {
                        "title": "Include clinical trials & disease surveillance",
                        "type": "boolean",
                        "description": "Search CTIS Clinical Trials Information System (11,000+ EU trials) and ECDC disease surveillance atlas (1 source each).",
                        "default": true
                    },
                    "includeEnvironmentalCompliance": {
                        "title": "Include environmental & food compliance",
                        "type": "boolean",
                        "description": "Search EU Ecolabel products, EFSA OpenFoodTox chemical hazards, EMAS environmental registrations, E-PRTR industrial emissions, and ESMA sanctions (5 sources).",
                        "default": false
                    },
                    "maxResultsPerSource": {
                        "title": "Max results per source",
                        "minimum": 1,
                        "maximum": 200,
                        "type": "integer",
                        "description": "Maximum records to return per data source (gateway caps at 200).",
                        "default": 50
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
