303,525 datasets indexed1,419 publishers
Open Data IndexThe index of open data about the Netherlands
Sources›Heritage and culture

NDE Dataset Register

The Dataset Register of the Dutch Digital Heritage Network is the catalogue of Dutch heritage data: archives, museums, libraries and municipalities register their dataset descriptions, the register harvests and validates them and loads them into a SPARQL endpoint. On 16 October 2026 it held 3,401 datasets with a valid registration from 159 publishers. The register contains descriptions, not the data itself: each description points to downloads or APIs (OAI-PMH, SPARQL, IIIF) at the institution. It is maintained by the National Archives.

Heritage and cultureOpenAPISearch serviceNetherlands · dataset
Up to date · updated 4 hours ago · checked 17:23

Everything that's in it3,409

All datasets in the Dataset Register of the Dutch Digital Heritage Network, by institution, fetched every night. Every dataset has its own page with licence and distributions (download, SPARQL, OAI-PMH).

3,409datasets
3,407with an API or map service
851updated in the past 30 days

Heritage datasets in the NDE Dataset Register by licence: most CC BY 4.0 (1,833 datasets), then CC0 1.0 and CC BY-SA 4.0

Heritage datasets in the NDE Dataset Register by licence, October 2026, in datasets. Total: 3,409; the largest 12 of 14 categories are shown. CC BY 4.0 is 54% of the total. The licence applies to the dataset description (the metadata), not necessarily to the collection items themselves. Variants of the same licence URI (http or https, with or without slash) are counted together.

Source: Netwerk Digitaal Erfgoed, Datasetregister (SPARQL) · opgehaald 25 oktober 2026 · selection: alleen datasetbeschrijvingen met een geldige registratie (zoals de teller op de voorpagina)Open the table Single block

What can you do with it?4 ideas

Getting started

What heritage data exist about my town?

Search titles and keywords for a place name. You will find archives of societies, notaries and companies, photo collections and museum catalogues, each with its own download or API.

Getting started

What am I allowed to do?

Every description names a licence. Of the 3,401 datasets, 1,832 are under CC BY 4.0, 1,098 under CC0 and 436 under CC BY-SA 4.0. That licence covers the description; for the items themselves check with the institution.

Advanced

All linked data entry points in heritage

Filter the distributions on dct:conformsTo: 147 datasets have a SPARQL endpoint, 94 an OAI-PMH endpoint, 17 IIIF. That gives you a list of machine-readable entry points for your own search service.

Advanced

Who publishes what?

Count datasets per publisher: Het Utrechts Archief (1,572), Stadsarchief Rotterdam (696) and Streekarchief Voorne-Putten (346) describe each archive as a separate dataset; museums often register one large collection. Dataset counts therefore say little about size.

How to process it3 steps

  1. Search the website or via SPARQL

    The search page turns your query into a SPARQL query that you can open and adjust. The endpoint is freely accessible; ask for application/sparql-results+json to get JSON.

    https://datasetregister.netwerkdigitaalerfgoed.nl/sparql
  2. Only valid registrations

    The register counts a dataset when its registration is valid: schema:subjectOf/schema:additionalType is …/registry/valid. Without that condition you also get gone and invalid descriptions: 3,461 instead of 3,401.

  3. From description to data

    Each dataset has one or more dcat:distribution with dcat:accessURL or dcat:downloadURL, a media type and sometimes dct:conformsTo (the protocol). Those addresses belong to the institution; the register stores no data.

Interesting combinations

Similar sources

  • Europeana

    Europeana aggregates the objects themselves (with images) from European institutions, but requires a key. The Dataset Register only describes datasets, without a key.

  • data.overheid.nl

    The same set-up (a catalogue of descriptions) for government data. Heritage datasets rarely appear there.

  • Open Archives (Open Archieven)

    Open Archives holds the person records themselves, searchable by name; in the register Open Archives appears with 306 dataset descriptions: genealogical metadata and linksets per participating archive.

What to watch out for

  • A dataset is not always the same size

    Some archives register every archive group separately (Het Utrechts Archief: 1,572 datasets), others one whole collection. Do not compare institutions by number of datasets.

  • Licence of the description

    According to the register itself, the licence applies to the metadata. The underlying collection items may fall under a different, sometimes stricter licence.

  • Dates missing or in the future

    124 of the 3,401 datasets have no dct:modified. Only use complete dates up to today when looking at freshness.

APISPARQL 1.1 (QLever) en REST · read 16 Oct 2026

StandardSPARQL 1.1 (QLever) en RESTdocs
Access no key

Reading (SPARQL) without a key. Registering is for institutions; the register keeps an allow list of domains (/api/allowed-domains). tested

Size3,392

datasets with a valid registration (SPARQL count, 16 Oct 2026 around 23:45; 3,401 earlier that day) tested

Formats

sparql-results+jsoncsvtsvjson-ldturtle

Base URL

https://datasetregister.netwerkdigitaalerfgoed.nl/sparql

Endpoints 7

  • GET/sparql?query=…SPARQL query in the URL. With Accept: application/json or application/sparql-results+json the standard JSON, text/csv a table. The response also has meta.query-time-ms.
  • POST/sparqlThe same query as form field query= (handy for long queries).
  • GET/api/datasets?url=…REST: is a description at this URL already registered?
  • POST/api/datasetsREST: register a dataset description (for institutions; see allowed-domains).
  • POST/api/datasets/validateREST: validate a description in the body against the NDE requirements; PUT with a URL validates what is at that address.
  • GET/api/shaclREST: the SHACL shape used to validate descriptions.
  • GET/api/allowed-domains?url=…REST: is the domain on the allow list?

Filtering tested

SPARQL 1.1 with prefixes dcat: <http://www.w3.org/ns/dcat#>, dct: <http://purl.org/dc/terms/>, schema: <https://schema.org/> (https). FILTER(CONTAINS(LCASE(?title), "…")) for text search.

SELECTFILTERCONTAINSGROUP BYCOUNT(DISTINCT)OPTIONALpad/padGRAPH

Parameters 3

queryThe SPARQL query (GET in the URL or POST as form field).tested
Acceptapplication/sparql-results+json (also for application/json), text/csv.tested
schema:subjectOf/schema:additionalTypeRegistration status: <https://data.netwerkdigitaalerfgoed.nl/registry/valid> for valid descriptions; without this filter you also count gone and invalid ones.tested

Predicates of a dataset and its distributions (selection) 14

NameTypeMeaning
dcat:DatasetklasseEen datasetbeschrijving (IRI van de instelling zelf)
dct:title / dct:descriptiontekstTitel en beschrijving (vaak in meerdere talen)
dct:publisher / dct:creatoruriUitgever en maker (organisatie-IRI)
dct:licenseuriLicentie; CC0 komt zowel met http:// als https:// voor
dcat:keyword / dcat:themetekstTrefwoorden en thema's
dct:modified / dct:created / dct:issueddatumDatums volgens de instelling; ontbreken soms of liggen in de toekomst
dct:spatial / dct:temporaltekstGebied en periode (bij een minderheid)
dcat:distributionuriVerwijzing naar een distributie (18.623 in totaal, ruim 5 per dataset)
dcat:distribution / dcat:accessURL, dcat:downloadURLurlAdres van de data bij de instelling
dcat:distribution / dcat:mediaType, dct:conformsTotekstFormaat en protocol (SPARQL, OAI-PMH, IIIF …)
dcat:distribution / dcat:byteSizegetal · byteGrootte van de download
schema:subjectOf / schema:additionalTypeuriStatus van de registratie (…/registry/valid)
Show all 14
NameTypeMeaning
schema:contentRatinguriBeoordeling van de beschrijving door het register
schema:dateRead / nde:dateCrawleddatetimeWanneer het register de beschrijving het laatst ophaalde

Limits and pitfalls

  • No documented limit or key. Counts over the whole register took 50 to 70 ms. tested
  • robots.txt only disallows search.php, show.php and viaurl.php of the old app; /sparql and /api are allowed. tested
  • Count only valid registrations (schema:subjectOf/schema:additionalType …/registry/valid): 3,392 on 16 Oct 2026 around 23:45, while 3,401 were counted earlier that day. The number fluctuates because the register keeps re-fetching descriptions. tested
  • schema: here is https://schema.org/ (https), dct: is http://purl.org/dc/terms/ (with a slash). Different from the KB. tested
  • Each registered description sits in its own graph (the registration URL); besides that there are graphs with registrations, ratings, SHACL results and distribution reachability (…/sparql/distribution-health). tested
  • Counting licences by URI: CC0 appears as http:// (1,063) and https:// (34). Normalise before adding up. tested
  • The register holds descriptions, not collection data: fetch the data from the institution via dcat:accessURL or dcat:downloadURL. from the description

Try it HTTP 200 · 391 ms · 16 Oct

https://datasetregister.netwerkdigitaalerfgoed.nl/sparql?query=PREFIX dcat%3A <http%3A%2F%2Fwww.w3.org%2Fns%2Fdcat%23> PREFIX dct%3A <http%3A%2F%2Fpurl.org%2Fdc%2Fterms%2F> PREFIX schema%3A <https%3A%2F%2Fschema.org%2F> SELECT %3Flicentie (COUNT(DISTINCT %3Fd) AS %3Fdatasets) WHERE { %3Fd a dcat%3ADataset %3B dct%3Alicense %3Flicentie %3B schema%3AsubjectOf%2Fschema%3AadditionalType <https%3A%2F%2Fdata.netwerkdigitaalerfgoed.nl%2Fregistry%2Fvalid> } GROUP BY %3Flicentie ORDER BY DESC(%3Fdatasets) LIMIT 5
{
  "head": {
    "vars": [
      "licentie",
      "datasets"
    ]
  },
  "results": {
    "bindings": [
      {
        "licentie": {
          "type": "uri",
          "value": "http://creativecommons.org/licenses/by/4.0/"
        },
        "datasets": {
          "datatype": "http://www.w3.org/2001/XMLSchema#int",
          "type": "literal",
          "value": "1832"
        }
      },
      {
        "licentie": {
          "type": "uri",
          "value": "http://creativecommons.org/publicdomain/zero/1.0/"
        },
        "datasets": {
          "datatype": "http://www.w3.org/2001/XMLSchema#int",
          "type": "literal",
          "value": "1063"
        }
      }
    ]
  },
  "meta": {
    "query-time-ms": 42,
    "result-size-total": 5
  }
}

Shortened response, saved at harvest time. Click the URL for the real, current response.

Read from NDE requirements for dataset descriptions (DCAT / schema.org) · OpenAPI 3.0.3 description of the REST API (register, validate, SHACL) · FAQ for users. 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 -H "Accept: application/sparql-results+json" --data-urlencode 'query=PREFIX dcat: <http://www.w3.org/ns/dcat#> PREFIX schema: <https://schema.org/> SELECT (COUNT(DISTINCT ?d) AS ?n) WHERE { ?d a dcat:Dataset ; schema:subjectOf/schema:additionalType <https://data.netwerkdigitaalerfgoed.nl/registry/valid> }' https://datasetregister.netwerkdigitaalerfgoed.nl/sparql

More from NDE in our index

1 datasets in NDE Datasetregister. These changed most recently.

    All about NDE

    More in this topic

    See how this page is built
    bron: nde-datasetregister
    blokken: []
    secties:
      - ideeen
      - verwerken
      - koppelingen
      - vergelijkbaar
      - beperkingen
      - code
    cache:
      tag: bron:nde-datasetregister
      ververs: na statuscheck, als de bron nieuwer is
    statuscheck:
      methode: "SPARQL: aantal datasets met een geldige registratie en de nieuwste
        dct:modified (niet in de toekomst)"
      verwacht: dagelijks
    

    Source: content/bronnen/nde-datasetregister.yaml · Markdown