303,525 datasets indexed1,419 publishers
Open Data IndexThe index of open data about the Netherlands
Sources›Government
Publicatiebureau van de Europese Unie
International, relevant to the Netherlands

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.

GovernmentOpenAPISearch serviceEurope · dataset (metadata)
Up to date · updated 16 hours ago · checked 17:23

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.

Source: data.europa.eu, zoek-API (POST {"filters":["dataset"],"limit":0,"facets":{"country":["nl"]}}) · opgehaald 25 oktober 2026 · selection: country: nlOpen the table Single block

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.

Source: data.europa.eu, zoek-API (POST {"filters":["dataset"],"limit":0,"facets":{}}) · opgehaald 25 oktober 2026Open the table Single block

What can you do with it?4 ideas

Getting started

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.

Getting started

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).

Advanced

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.

Advanced

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

  1. 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
  2. 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"]}}'
  3. 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
  4. 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.nl

    The Dutch source itself, with the owner per dataset (authority) and more Dutch-specific fields.

  • Nationaal 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

StandardREST (JSON, POST-zoeken) en SPARQLdocs
Access no key

Reading and searching without a key. Write actions in the OpenAPI (creating, changing datasets) need a key and are for catalogue managers. tested

Size30,132

datasets with country nl (16 Oct 2026); 213 catalogues in total tested

Formats

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.
  • POSThttps://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).

facetsqANDOR

Parameters 10

qSearch term (in the JSON body). laadpalen + country nl returned 13 datasets.tested
filtersDocument type: ["dataset"], ["catalogue"], also dataservice, datasetseries …tested
facetsFilter 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 / aggregationFieldsOnly count the facets you name: "aggregationAllFields": false, "aggregationFields": ["catalog","license"].tested
aggregationfalse = no facets (much smaller response).tested
includesOnly these fields per result, e.g. ["id","title.nl","modified","catalog.id"]: 1 kB instead of 500 kB.tested
sortA list, not a string: ["modified+desc"]. As a string: 400 ValidationException.tested
pagePage number (from 0).from the description
limitAccording 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, searchAfterListed 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

NameTypeMeaning
result.countintegerAantal treffers
result.facets[].items[].id / countlijstTellingen per facetwaarde (land, catalogus, licentie …)
results[].idtekstDataset-id; voor data.overheid.nl gelijk aan de CKAN-name
results[].titleobjectTitel per taal (nl, en, de …), meestal machinaal vertaald
results[].catalog.idtekstCatalogus waaruit de dataset komt
results[].publisher.resourceurlUitgever als URI (bij NL alleen een OWMS-URI, geen naam)
results[].distributions[]lijstBestanden en diensten: format, access_url, license
results[].is_hvdbooleanHoogwaardige dataset volgens de EU
results[].translation_metaobjectPer taal of de tekst machinaal vertaald is en uit welke taal
results[].modifieddatumLaatste 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