# EU Open Data Portal (data.europa.eu) > The official portal for European open data, operated by the Publications Office of the European Union. > It federates roughly 1.9 million dataset records from EU institutions, the national open data portals of > the member states and international organisations, and republishes them as DCAT-AP metadata. Six > machine-readable APIs sit on top of that corpus. Every read operation is public and anonymous — no key, > no sign-up, no quota. Writing into a catalogue requires credentials granted by the portal team. > > Generated by the API Evangelist enrichment pipeline on 2026-09-07 from the provider's own published > contracts. The provider does not publish an llms.txt (https://data.europa.eu/llms.txt returns 403). ## APIs - [Search API (hub-search) 5.3.11](https://data.europa.eu/api/hub/search/): full-text and faceted search over datasets, data services, dataset series, catalogues, vocabularies and organisations; Atom/RSS feeds; sitemaps; gazetteer autocomplete; CKAN-compatible package API. Base https://data.europa.eu/api/hub/search - [Registry API (piveau hub-repo) 4.3.3](https://data.europa.eu/api/hub/repo/): the DCAT-AP write surface — catalogues, DCAT resources, distributions, drafts, vocabularies, quality metrics, persistent identifiers, in nine RDF serialisations. Base https://data.europa.eu/api/hub/repo - [SPARQL endpoint](https://data.europa.eu/sparql): OpenLink Virtuoso, SPARQL 1.1, one named graph per dataset plus vocabulary, NUTS and quality-measurement graphs. - [MQA Metrics Cache 5.8.3](https://data.europa.eu/api/mqa/cache/): metadata quality scores per catalogue, country, dataset and distribution across findability, accessibility, interoperability, reusability and contextuality (450-point scale), with history. Base https://data.europa.eu/api/mqa/cache - [MQA SHACL Validation 4.4.4](https://data.europa.eu/api/mqa/shacl/): POST an RDF graph, get a SHACL validation report against the official DCAT-AP shapes. Base https://data.europa.eu/api/mqa/shacl - [MQA Metrics Reporter](https://data.europa.eu/api/mqa/reporter/): renders catalogue quality reports by language and format. Base https://data.europa.eu/api/mqa/reporter - [Statistics API v1.3](https://data.europa.eu/api/hub/statistics/): portal-wide counts over time — datasets per category, catalogue, country, format and licence. Base https://data.europa.eu/api/hub/statistics ## Specs - [hub-search OpenAPI 3.0.3](https://data.europa.eu/api/hub/search/openapi.yaml): 56 operations - [hub-repo OpenAPI 3.1.2](https://data.europa.eu/api/hub/repo/openapi.yaml): 69 operations, 33 of them marked deprecated in favour of the general DCAT Resources API - [MQA metrics cache OpenAPI 3.0.3](https://data.europa.eu/api/mqa/cache/openapi.yaml): 24 operations - [MQA SHACL OpenAPI 3.1.2](https://data.europa.eu/api/mqa/shacl/openapi-shacl.yaml): 1 operation - [MQA reporter OpenAPI 3.0.3](https://data.europa.eu/api/mqa/reporter/openapi.yaml): 4 operations - [Statistics Swagger 2.0](https://data.europa.eu/api/hub/statistics/swagger/): 5 operations ## Docs - [API documentation](https://dataeuropa.gitlab.io/data-provider-manual/api-documentation/): the list of APIs and the dataset-management walkthrough - [Access control and tokens](https://dataeuropa.gitlab.io/data-provider-manual/api-documentation/api-access-control/): service accounts, EU Login, UMA party tokens - [Managing files in the store](https://dataeuropa.gitlab.io/data-provider-manual/api-documentation/api-store/) - [SPARQL guide](https://dataeuropa.gitlab.io/data-provider-manual/how-to-search/sparql/): prefixes, named graphs, worked queries - [Data provider manual](https://dataeuropa.gitlab.io/data-provider-manual/) - [FAQ](https://data.europa.eu/en/faq) - [Source code — 71 repositories](https://gitlab.com/dataeuropa): every service is open source, each with a dated CHANGELOG.md - [API usage examples](https://gitlab.com/dataeuropa/api-usage-examples): first-party worked examples in Python, JavaScript, Java and Ruby (last updated 2021) ## How to call it - Search: `GET https://data.europa.eu/api/hub/search/search?q=weather&limit=10` — no credential - Page deep results with `page`/`limit`, or the `scroll` / `searchAfter` / `pitId` cursor - Controlled vocabularies: `GET https://data.europa.eu/api/hub/search/vocabularies` (26 of them; EuroVoc alone carries 7,486 concepts) - CKAN-speaking clients: `GET https://data.europa.eu/api/hub/search/ckan/package_search` - Quality of a catalogue: `GET https://data.europa.eu/api/mqa/cache/catalogues/{id}` - Validate DCAT-AP before publishing: `POST https://data.europa.eu/api/mqa/shacl/validation/report` ## What to know before integrating - Errors are NOT RFC 9457. The contract documents `{"success": false, "message": "..."}`; live responses return `text/plain` bodies ("Bad Request", "dataset not found"). - No rate limits are published and no rate-limit headers are returned. There is no runtime backpressure signal. - No Idempotency-Key mechanism. Publishing is idempotent only because it is a PUT upsert keyed on catalogue id + originalId, which answers 304 when nothing changed; POST creates duplicates. - No status page, no SLA, no deprecation policy — though 33 hub-repo operations carry `deprecated: true` and name their replacement. - No /.well-known/ document is served on any host, and there is no MCP server, no agent card and no first-party SDK on any package registry.