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.

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.
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.
What you can build with it1
What can you do with it?4 ideas
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.
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.
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.
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
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
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
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
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/
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

Do the records match the official figures?
Count death records per municipality and year and compare them with CBS mortality figures. Differences show which archives are not (yet) fully online.

Where can I find more about this person?
Find someone in Open Archives and then search the National Archives finding aids, for example military or colonial records.
Similar sources
National Archives of the Netherlands, finding aids and scansDescribes whole central government archives (finding aids and scans), not the people in them.
- WWieWasWie 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 StatLineOfficial 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
No key. The API asks for a descriptive User-Agent and is throttled per IP address to 4 requests per second. from the description
records in 200 archives according to stats/records.json (16 Oct 2026) tested
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. - GET
https://sparql.openarchieven.nl/{oa-a2a|oa-pico|oa-pico-recon}Three SPARQL endpoints (QLever): records (A2A), person observations in PiCo, and reconstructed persons. - GET
https://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.
Parameters 13
name | Search query: name, also two names with & and a year or period. | from the description |
archive_code | Archive code from stats/archives (saa, gra, bhi …). In breakdown a leading ! excludes it. | from the description |
sourcetype | Source type (e.g. 'BS Overlijden', 'DTB Dopen'). | from the description |
eventplace / birthplace | Place of the event or birthplace. | from the description |
relationtype | Role in the record (Bride, Groom, Registered …). | from the description |
country_code | Country: nl, be, fr, sr … | from the description |
number_show | Results per page, max 100 (breakdown: max 500 groups). | from the description |
start | Offset, max 10,000; above that HTTP 400 with error_code 50. | tested |
sort | 1=name, 2=role, 3=event, 4=date, 5=place, 6=source; negative = descending. | from the description |
group_by | Breakdown only: archive, sourcetype, eventtype, place or year. | from the description |
year_start / year_end | Breakdown and statistics only: 1500 to 1960. | from the description |
lang | nl or en: language of archive names and labels. | from the description |
callback | JSONP function name. | from the description |
Fields in the responses (selection) 11
| Name | Type | Meaning |
|---|---|---|
response.number_found | getal | Totaal aantal treffers |
response.docs[].personname | tekst | Naam zoals in de akte |
response.docs[].identifier | uuid | Record-id, samen met archive_code nodig voor show.json |
response.docs[].archive_code / archive | tekst | Archiefcode en naam |
response.docs[].eventtype / relationtype | tekst | Soort gebeurtenis en rol (labels in lang=) |
response.docs[].eventdate | object | Datum als {day, month, year} |
response.docs[].eventplace | lijst | Plaats(en) van de gebeurtenis |
response.docs[].sourcetype | tekst | Brontype |
response.docs[].url | url | Recordpagina op openarchieven.nl |
Source.SourceReference (show.json) | object | Archief, toegang, inventarisnummer en folio van de akte |
pico:PersonObservation (SPARQL) | klasse | Persoon 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.
- Open Archieven Persoonsreconstructies2026-10-10
- Dataset genealogische metadata Erfgoed Leiden en omstreken via Open Archieven2026-09-29
- Dataset genealogische metadata Noord-Veluws Archief via Open Archieven2026-08-24
- Dataset genealogische metadata AlleFriezen via Open Archieven2026-08-24
- Dataset genealogische metadata Stadsarchief Deventer via Open Archieven2026-08-24
- Dataset genealogische metadata Stadsarchief Amsterdam via Open Archieven2026-08-24
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
