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

Open Archives (Open Archieven)

Open Archives by Coret Genealogie combines the genealogical data of 200 archives and societies, mostly Dutch, also Belgian and French. On 16 October 2026 the statistics API counted 368,475,032 records across 199 source types: civil registration of deaths, births and marriages, population registers, church baptism, marriage and burial registers, notarial records and more. A keyless REST API, SPARQL, OAI-PMH and file exports under CC BY 4.0.

Heritage and culturePopulationOpenAPIDownloadSearch serviceNetherlands · person in a record
Up to date · updated in August 2026 · checked 17:23
openarchieven.nl
Screenshot of openarchieven.nl

Everything that's in it1,360

All archives connected to Open Archives, by country, with the number of records per source type (baptism registers, population registers, memorial cards …), fetched every night. The country follows from the ISIL code or, without one, from the website's domain.

1,360in total
1,151collections
209archives
369 mrecords in total

Nederland1,209

België117

Suriname9

Duitsland2

Frankrijk2

Indonesië2

Verenigde Staten1

Land niet vastgesteld18

Records in Open Archives by Dutch archive: most Brabants Historisch Informatie Centrum (25,449,700 records), then Stadsarchief Amsterdam and Stadsarchief Rotterdam

Records in Open Archives by Dutch archive, October 2026, in records. Total: 286,471,667; the largest 12 of 154 categories are shown. Brabants Historisch Informatie Centrum is 9% of the total. Dutch archives and societies only (ISIL code NL- or a website in the nl domain); all 200 participants together hold 368,619,131 records.

Source: Open Archieven, API v1.1 (stats/records en stats/archives) · opgehaald 25 oktober 2026 · selection: archieven met een ISIL-code NL- of een homepage op .nlOpen the table Single block

What you can build with it1

What can you do with it?4 ideas

Getting started

Where does a surname come from?

Search a name and look by place: Huizinga returns 60,905 mentions, 5,891 of them with Groningen as the place. Put the places on a map.

Getting started

Which archives hold the most?

The Brabant Historical Information Centre (25.4 million records), Amsterdam City Archives (24.6 million) and Rotterdam City Archives (23.0 million) supply the most. Compare per province how much is online.

Advanced

Historical demography

Count death records per year and place via SPARQL (PiCo model) and look for peaks such as epidemics or war years. Compare with that day's weather via related/weather.

Advanced

Occupations over time

stats/professions returns the most frequently mentioned occupations for a place and period (1500 to 1960). Compare periods to see which occupations disappear and which emerge.

How to process it5 steps

  1. Search by name

    records/search.json with name=, eventplace=, sourcetype= and archive_code=; number_show up to 100 per page and start for the next page (above 10,000 returns HTTP 400). The total is in response.number_found.

    https://api.openarchieven.nl/1.1/records/search.json?name=Huizinga&eventplace=Groningen&number_show=10&lang=nl
  2. Count without searching

    The statistics endpoints return in one call the counts per archive (stats/records), per source type (stats/sources) and the list of archives with ISIL code and website (stats/archives).

    https://api.openarchieven.nl/1.1/stats/sources.json?lang=nl
  3. Big questions with SPARQL

    Three SPARQL endpoints (QLever): oa-a2a (records), oa-pico (people in the PiCo model, 369,474,740 PersonObservations) and oa-pico-recon (reconstructed persons).

    https://sparql.openarchieven.nl/oa-pico
  4. Everything at once

    A compressed CSV, XML or N-Triples file per archive and source type under CC BY 4.0. The latest exports are from 23 and 24 August 2026.

    https://www.openarchieven.nl/exports/csv/
  5. Full API description

    The API has an OpenAPI 3.1 description as YAML (openapi.json does not exist). There is also an MCP server at mcp.openarchieven.nl.

    https://api.openarchieven.nl/openapi.yaml

Interesting combinations

Similar sources

  • National Archives of the Netherlands, finding aids and scans

    Describes whole central government archives (finding aids and scans), not the people in them.

  • WieWasWie not in the index yet

    Also a search service for person records from Dutch archives, partly from the same sources. Compare the coverage for your place.

  • CBS StatLine

    Official population figures (births, deaths, marriages) from around 1900, but no names.

What to watch out for

  • Not only the Netherlands

    Of the 368.5 million records, 286.5 million come from Dutch archives (ISIL code NL- or a website in the nl domain). The largest participant is INSEE (France, 27.0 million); Reclaim The Records (US) and Belgian state archives also take part.

  • Masked names

    Some entries show a first name as ####, for example in a patient register. Do not assume every name is complete.

  • Records are not people

    One person appears in many records (birth, marriage, death, population register). Record counts say nothing about the number of people; use oa-pico-recon for that, and even that is a reconstruction.

  • Uneven coverage

    What is included depends on what each archive has transcribed and supplied. A place with few records may simply belong to an archive that does not (yet) take part.

  • Statistics sometimes empty

    stats/events.json returned an empty list on 16 October 2026. Later that day (around 10:00) stats/sources.json and stats/breakdown.json also returned nothing; stats/records.json per archive still worked and added up to 367,231,659 records in 209 archives.

APIREST (JSON), SPARQL 1.1, OAI-PMH 2.0 · read 16 Oct 2026

StandardREST (JSON), SPARQL 1.1, OAI-PMH 2.0docs
Access no key

No key. The API asks for a descriptive User-Agent and is throttled per IP address to 4 requests per second. from the description

Size368,618,982

records in 200 archives according to stats/records.json (16 Oct 2026) tested

Formats

jsonjsonpxmlgedcomturtlen-triplescsv

Base URL

https://api.openarchieven.nl/1.1

Endpoints 14

  • GET/records/search.jsonSearch by name (also two names with & and a year or period); filters on archive, source type, place, birthplace, role and country. Total in response.number_found.
  • GET/records/show.jsonOne record in the A2A model (archive + identifier). Also as .xml, .gedcom, .ttl and .nt by changing the extension.
  • GET/records/match.jsonMatch a person (name + birth year) to birth and death records.
  • GET/records/getBirths.json, /getDeaths.json, /getMarriages.jsonBirth, death and marriage records by name, year and place.
  • GET/stats/archives.jsonAll archives with archive_code, ISIL code, name and website.
  • GET/stats/records.jsonNumber of records per archive and per source type within it (archive_code= for one archive).
  • GET/stats/sources.json, /stats/events.json, /stats/comments.jsonCounts per source type, per event and comments. Returned an empty list on 16 Oct 2026.
  • GET/stats/breakdown.jsonCross-tab: count per archive, source type, event, place or year (1500 to 1960) with filters. Returned HTTP 503 (error_code 52) on 16 Oct 2026.
  • GET/stats/familynames.json, /stats/firstnames.json, /stats/professions.jsonMost frequent surnames, first names and occupations for a place and period.
  • GET/related/weather.jsonHistorical KNMI weather on a date and location (values in tenths, with a label per field).
  • GET/related/census.jsonDutch census data for a place and year.
  • GET/transcriptions/search.json, /browse.json, /show.jsonFull-text search of transcribed pages, browse by archive and inventory, fetch one transcription.
  • GEThttps://sparql.openarchieven.nl/{oa-a2a|oa-pico|oa-pico-recon}Three SPARQL endpoints (QLever): records (A2A), person observations in PiCo, and reconstructed persons.
  • GEThttps://api.openarchieven.nl/oai-pmh/?verb=…OAI-PMH 2.0, format oai_a2a, 115 sets (one per archive), dates as YYYY-MM-DD.

Filtering from the description

Separate query parameters per endpoint (name, archive_code, sourcetype, eventplace …). For questions about relations and counts across everything: SPARQL at sparql.openarchieven.nl.

veld=waarde& (twee namen)! (uitsluiten, breakdown)SPARQL

Parameters 13

nameSearch query: name, also two names with & and a year or period.from the description
archive_codeArchive code from stats/archives (saa, gra, bhi …). In breakdown a leading ! excludes it.from the description
sourcetypeSource type (e.g. 'BS Overlijden', 'DTB Dopen').from the description
eventplace / birthplacePlace of the event or birthplace.from the description
relationtypeRole in the record (Bride, Groom, Registered …).from the description
country_codeCountry: nl, be, fr, sr …from the description
number_showResults per page, max 100 (breakdown: max 500 groups).from the description
startOffset, max 10,000; above that HTTP 400 with error_code 50.tested
sort1=name, 2=role, 3=event, 4=date, 5=place, 6=source; negative = descending.from the description
group_byBreakdown only: archive, sourcetype, eventtype, place or year.from the description
year_start / year_endBreakdown and statistics only: 1500 to 1960.from the description
langnl or en: language of archive names and labels.from the description
callbackJSONP function name.from the description

Fields in the responses (selection) 11

NameTypeMeaning
response.number_foundgetalTotaal aantal treffers
response.docs[].personnametekstNaam zoals in de akte
response.docs[].identifieruuidRecord-id, samen met archive_code nodig voor show.json
response.docs[].archive_code / archivetekstArchiefcode en naam
response.docs[].eventtype / relationtypetekstSoort gebeurtenis en rol (labels in lang=)
response.docs[].eventdateobjectDatum als {day, month, year}
response.docs[].eventplacelijstPlaats(en) van de gebeurtenis
response.docs[].sourcetypetekstBrontype
response.docs[].urlurlRecordpagina op openarchieven.nl
Source.SourceReference (show.json)objectArchief, toegang, inventarisnummer en folio van de akte
pico:PersonObservation (SPARQL)klassePersoon zoals genoemd in één bron, met schema:name, givenName, familyName, birthPlace, deathPlace, hasOccupation, pico:hasRole, prov:hadPrimarySource

Limits and pitfalls

  • 4 requests per second per IP address (OpenAPI description); more by arrangement. from the description
  • Search: max 100 per page and offset up to 10,000 (above that HTTP 400, error_code 50). For everything: OAI-PMH or the file exports. tested
  • SPARQL: heavy queries (GROUP BY over all triples of oa-a2a or oa-pico) returned HTTP 502 (proxy) after 30 seconds. A LIMIT query or a query about one subject answers within a second. tested
  • On 16 Oct 2026 stats/sources.json returned an empty list after 10 seconds and stats/breakdown.json HTTP 503 with error_code 52 ('Service temporarily unavailable'). stats/records.json worked and counts per archive and per source type. tested
  • Errors come as JSON with error_code and error_description; the HTTP status is correct (400, 503). tested
  • API version 1.1 uses archive_code; older examples with archive= do not work for search.json. from the description
  • Records are not people: one person appears in many records. Reconstructed persons are in oa-pico-recon (schema:spouse, parent, children, sibling). tested
  • There is also an MCP server (mcp.openarchieven.nl) and OpenSearch descriptions per language. from the description

Try it HTTP 200 · 397 ms · 16 Oct

https://api.openarchieven.nl/1.1/records/search.json?name=Huizinga&eventplace=Groningen&number_show=3&lang=nl
{
  "query": {
    "eventplace": "Groningen",
    "name": "Huizinga",
    "only_results_with_scans": false,
    "start": 0,
    "number_show": 3,
    "sort": 1,
    "language": "nl"
  },
  "response": {
    "number_found": 5891,
    "docs": [
      {
        "pid": "Person1",
        "identifier": "182dc2c2-3c73-4103-a6bf-1eedb05dc8b1",
        "archive_code": "gra",
        "archive_org": "AlleGroningers",
        "archive": "AlleGroningers",
        "personname": "A. Huizinga",
        "relationtype": "Geregistreerde",
        "_relationtype": "Geregistreerde",
        "eventtype": "Registratie",
        "_eventtype": "Registratie",
        "eventplace": [
          "Groningen"
        ],
        "sourcetype": "Inschrijving gevangene",
        "url": "https://www.openarchieven.nl/gra:182dc2c2-3c73-4103-a6bf-1eedb05dc8b1"
      },
      {
        "pid": "Person1",
        "identifier": "AA10953C-AAB1-41D9-9365-C608085BD972",
        "archive_code": "gra",
        "archive_org": "AlleGroningers",
        "archive": "AlleGroningers",
        "personname": "A. Huizinga",
        "relationtype": "Geregistreerde",
        "_relationtype": "Geregistreerde",
        "eventtype": "Registratie",

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

Read from OpenAPI 3.1 description (YAML only; openapi.json does not exist), 21 GET endpoints · Developer page: REST API, OpenSearch, exports, SPARQL, MCP · OAI-PMH data provider (A2A model). 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 -A "mijnproject/1.0 (mailto:jij@voorbeeld.nl)" "https://api.openarchieven.nl/1.1/records/search.json?name=Huizinga&number_show=5&lang=nl"

More from Open Archieven in our index

306 datasets in NDE Datasetregister. These changed most recently.

All about Open Archieven

More in this topic

See how this page is built
bron: open-archieven
blokken: []
secties:
  - ideeen
  - verwerken
  - koppelingen
  - vergelijkbaar
  - beperkingen
  - code
cache:
  tag: bron:open-archieven
  ververs: na statuscheck, als de bron nieuwer is
statuscheck:
  methode: "Exportpagina (CSV): nieuwste aanmaakdatum van de exports; plus het
    totaal aantal records uit stats/sources"
  verwacht: elk kwartaal

Source: content/bronnen/open-archieven.yaml · Markdown