
data.europa.eu
The European data portal harvests the catalogues of the EU institutions and of all member states, including the Dutch one. On 15 October 2026 it held 1,752,057 datasets from 212 catalogues, 30,119 of them from the Netherlands. You can search via an API and via SPARQL.
Dutch datasets on data.europa.eu by theme: most environment (4,271 datasets), then economy and finance and transport
Dutch datasets on data.europa.eu by theme, October 2026, in datasets. Total: 30,124; the largest 9 of 9 categories are shown. Environment is 14% of the total. A dataset can have several themes or none; percentages are of all Dutch datasets.
Datasets on data.europa.eu by country: most Germany (850,095 datasets), then France and Austria
Datasets on data.europa.eu by country, October 2026, in datasets. Total: 1,802,624; the largest 12 of 37 categories are shown. Germany is 47% of the total. The Netherlands is number 9 of 37 countries with 30,124 datasets. Plus 55,404 datasets from European institutions. The count mostly reflects how each country organises its catalogue, not how much data exists.
What can you do with it?4 ideas
How open is the Netherlands, compared with its neighbours?
Count datasets per country. On 15 October 2026: Germany 850,606, France 183,233, the Netherlands 30,119. Note: this mostly reflects how each country organises its catalogue, not how much data really exists.
Which Dutch datasets are 'high-value'?
The EU designates high-value datasets that must be free and available via an API. The is_hvd facet finds them; for the Netherlands there were 451 (15 Oct 2026).
The same dataset in other countries
Search a topic (e.g. charging points or air quality) across all countries at once and see which cities or countries do or do not publish it.
Map the licences
The license facet counts licences. Of the Dutch datasets, 9,111 had CC BY 4.0, 5,946 CC0 and 664 'licence unknown' (15 Oct 2026).
How to process it4 steps
View the list of catalogues
212 catalogue ids. The Dutch ones: dataportaal-van-de-nederlandse-overheid (data.overheid.nl), ngr-nl (National Georegister) and nsip-nl (Logius).
https://data.europa.eu/api/hub/search/catalogues
Search and count with a POST
Send a JSON query to /api/hub/search/search. With limit 0 you only get the count and the facets (country, catalogue, format, licence, high-value).
curl -X POST https://data.europa.eu/api/hub/search/search -H 'Content-Type: application/json' -d '{"filters":["dataset"],"limit":0,"facets":{"country":["nl"]}}'Fetch one dataset
With the id you get title (in all EU languages), description, publisher, distributions with format and licence.
https://data.europa.eu/api/hub/search/datasets/83957-cbs-vierkantstatistieken-100m
Count with SPARQL
The /sparql endpoint answers questions about the whole catalogue as linked data (DCAT-AP). Send the query as a POST.
curl -X POST https://data.europa.eu/sparql -H 'Accept: application/sparql-results+json' --data-urlencode 'query=PREFIX dcat: <http://www.w3.org/ns/dcat#> SELECT (COUNT(?d) AS ?n) WHERE { <http://data.europa.eu/88u/catalogue/dataportaal-van-de-nederlandse-overheid> dcat:dataset ?d }'
Interesting combinations
Similar sources
data.overheid.nlThe Dutch source itself, with the owner per dataset (authority) and more Dutch-specific fields.
- NGNationaal Georegister not in the index yet
All Dutch geodata and map services, with the services (WMS/WFS) belonging to each dataset.
What to watch out for
- Counted twice
data.overheid.nl itself also harvests the National Georegister. Because data.europa.eu harvests both catalogues, many Dutch geodatasets appear twice. So don't simply add them up.
- Metadata only
The portal stores descriptions and links, not the data itself. A download always goes to the original publisher.
- Translated by machine
Titles and descriptions exist in all EU languages, but most translations are automatic (field translation_meta). Search Dutch data in Dutch.
- robots.txt forbids search URLs
robots.txt forbids /*search?* and /*?query=*. That covers GET /api/hub/search/search?q=… and GET /sparql?query=…. The POST variants are documented and are not covered.
APIREST (JSON, POST-zoeken) en SPARQL · read 16 Oct 2026
Reading and searching without a key. Write actions in the OpenAPI (creating, changing datasets) need a key and are for catalogue managers. tested
datasets with country nl (16 Oct 2026); 213 catalogues in total tested
jsonsparql-json
Base URL
https://data.europa.eu/api/hub/search
Endpoints 6
- POST
/searchSearch and count with a JSON body: q, filters (dataset, catalogue …), facets (country, catalog, format, license, is_hvd …), page, sort. Response: result.count, results and facets with counts. - GET
/datasets/{id}One dataset: title and description in all EU languages, publisher, catalogue, distributions (format, access_url, licence), keywords, quality measurements. - GET
/cataloguesList of all 213 catalogue ids. - GET
/catalogues/{id}One catalogue with title, country, publisher, homepage, number of datasets (count) and modified. Netherlands: dataportaal-van-de-nederlandse-overheid, ngr-nl, nsip-nl. - POST
https://data.europa.eu/sparqlSPARQL over the whole catalogue (DCAT-AP). Query as form field query, answer with Accept: application/sparql-results+json. - GET
/openapi.yamlThe OpenAPI description (also scroll, feeds per dataset, vocabularies).
Filtering from the description
JSON body with q (free text), filters (document type) and facets (field → list of values). Several values within a facet = OR, facets combined = AND (facetOperator, facetGroupOperator).
Parameters 10
q | Search term (in the JSON body). laadpalen + country nl returned 13 datasets. | tested |
filters | Document type: ["dataset"], ["catalogue"], also dataservice, datasetseries … | tested |
facets | Filter on facets: {"country":["nl"],"catalog":["ngr-nl"],"is_hvd":["true"],"format":["CSV"]}. Facets in the response include country, catalog, publisher, format, license, categories, keywords, is_hvd, hvdCategory, scoring. | tested |
aggregationAllFields / aggregationFields | Only count the facets you name: "aggregationAllFields": false, "aggregationFields": ["catalog","license"]. | tested |
aggregation | false = no facets (much smaller response). | tested |
includes | Only these fields per result, e.g. ["id","title.nl","modified","catalog.id"]: 1 kB instead of 500 kB. | tested |
sort | A list, not a string: ["modified+desc"]. As a string: 400 ValidationException. | tested |
page | Page number (from 0). | from the description |
limit | According to the OpenAPI 0 to 1,000 (more or a string gives 400), but see the notes: the POST always returned 10 results. | tested |
minDate, maxDate, dateType, bbox…, scroll, searchAfter | Listed in the OpenAPI (date and map filters, deep paging). minDate with dateType modified did not change the count for us: verify before relying on it. | tested |
Fields in the search response 10
| Name | Type | Meaning |
|---|---|---|
result.count | integer | Aantal treffers |
result.facets[].items[].id / count | lijst | Tellingen per facetwaarde (land, catalogus, licentie …) |
results[].id | tekst | Dataset-id; voor data.overheid.nl gelijk aan de CKAN-name |
results[].title | object | Titel per taal (nl, en, de …), meestal machinaal vertaald |
results[].catalog.id | tekst | Catalogus waaruit de dataset komt |
results[].publisher.resource | url | Uitgever als URI (bij NL alleen een OWMS-URI, geen naam) |
results[].distributions[] | lijst | Bestanden en diensten: format, access_url, license |
results[].is_hvd | boolean | Hoogwaardige dataset volgens de EU |
results[].translation_meta | object | Per taal of de tekst machinaal vertaald is en uit welke taal |
results[].modified | datum | Laatste wijziging van het record |
Limits and pitfalls
- No key and no documented request limit. A response with all facets is large (600 kB for limit 0): set aggregation to false or name aggregationFields. tested
- Keep it small: includes ["id"] plus aggregationFields turns a count with two facets into 5 kB instead of 500 kB. tested
- robots.txt forbids /*search?* and /*?query=*, i.e. GET /api/hub/search/search?q=… and GET /sparql?query=…. Use the documented POST variants; /datasets/{id} and /catalogues may use GET. tested
- In the POST body, limit 0, 1 and 50 always returned 10 results (16 Oct 2026); page does work. Counts and facets are correct; for large lists use SPARQL or the original source. tested
- Duplicates: data.overheid.nl harvests the NGR itself, and data.europa.eu harvests both. NL counted 30,132 datasets: data.overheid.nl 19,363, ngr-nl 9,333, nsip-nl 1,436. Don't simply add them up. tested
- Licences come as URIs: http://creativecommons.org/licenses/by/4.0/deed.nl (9,117 NL datasets), CC0 (5,954), Public Domain Mark (4,000), licence unknown (665). tested
- Metadata only: downloads go to the original publisher (access_url). tested
- SPARQL counts dcat:dataset per catalogue quickly (ngr-nl: 9,330 in 0.1 s), slightly different from the search facet (9,333). tested
Try it HTTP 200 · 332 ms · 16 Oct
curl -X POST "https://data.europa.eu/api/hub/search/search" \
-d '{"filters":["dataset"],"limit":0,"facets":{"country":["nl"]},"includes":["id"],"aggregationAllFields":false,"aggregationFields":["catalog","license"]}'{
"result": {
"index": "dataset",
"count": 30132,
"results": [
{
"index": "dataset",
"id": "12788-hoogtegegevens-oosterschelde-2m-grid-2019-dtm"
},
{
"index": "dataset",
"id": "5049-jongeren-met-n-of-meerdere-vormen-van-jeugdzorg-in-natura-peildatum"
}
],
"facets": [
{
"id": "catalog",
"title": "Catalogues",
"items": [
{
"count": 19363,
"id": "dataportaal-van-de-nederlandse-overheid",
"title": "Dataportaal van de Nederlandse overheid"
},
{
"count": 9333,
"id": "ngr-nl",
"title": "Nationaal Georegister van Nederland"
}
]
},
{
"id": "license",
"title": "Licenses",
"items": [
{
"count": 9117,
"id": "http://creativecommons.org/licenses/by/4.0/deed.nl",
"title": "http://creativecommons.org/licenses/by/4.0/deed.nl"
},Shortened response, saved at harvest time. Click the URL for the real, current response.
Read from OpenAPI description of the search API (hub-search, YAML) · data.europa.eu: about the SPARQL endpoint. Labels: from the description stated in what the api itself publishes. tested from our own small call. platform applies to every api on this platform, per its documentation. experience learned while building open data index.
How to fetch it
curl -X POST https://data.europa.eu/api/hub/search/search -H 'Content-Type: application/json' -d '{"filters":["dataset"],"limit":0,"facets":{"country":["nl"]}}'More in this topic
See how this page is built
bron: data-europa blokken: [] secties: - ideeen - verwerken - koppelingen - vergelijkbaar - beperkingen - code cache: tag: bron:data-europa ververs: na statuscheck, als de bron nieuwer is statuscheck: methode: laatst bijgewerkte catalogusrecord met land nl (POST-zoekvraag) verwacht: dagelijks
Source: content/bronnen/data-europa.yaml · Markdown



