# Nationaal Archief, archiefinventarissen en scans

Het Nationaal Archief zet zijn archiefinventarissen als open data (CC0) klaar via OAI-PMH, in EAD-XML. Op 16 oktober 2026 waren dat 7.411 inventarissen (7.442 sets), elk met de beschrijving van het archief en de inventarisnummers. Waar scans zijn, staat per inventarisnummer een METS-bestand met links naar de beelden (publiek domein of CC0). Inventarissen die door derden zijn gemaakt (2,8 procent) zijn geen open data.

- Uitgever: Nationaal Archief
- Gebied: Nederland · Laagste detail: inventarisnummer
- Periode: per archief verschillend (zie de inventaris) · Ververst: dagelijks
- Toegang: Open · Licentie: CC0 (inventarissen; 2,8% uitgezonderd), publiek domein of CC0 (scans)
- Koppelsleutels: toegangsnummer (bv. 1.04.02 of 2.05.170), inventarisnummer
- Status: ok (2026-10-16) · 7.411 inventarissen; 12 gewijzigd in de laatste 3 dagen
- URL: https://www.nationaalarchief.nl/onderzoeken/open-data/archiefinventarissen-digitale-objecten-en-scans-van-archieven

## Wat kun je ermee?
- **Wat zit er in een archief?.** Haal één inventaris op met GetRecord en het toegangsnummer, bijvoorbeeld 2.21.205.69 (Collectie W.D. Walkate, 1945-1985). Je krijgt de beschrijving, de periode en alle inventarisnummers.
- **Scans uit de koloniale archieven.** De inventaris van de Schepenbank te Batavia (1.04.18.03) verwijst bij 68 inventarisnummers naar METS-bestanden met scans. Daarmee bouw je een galerij van originele stukken.
- **Wat is er deze maand veranderd?.** ListIdentifiers met from= geeft de inventarissen die sinds een datum zijn bijgewerkt: 269 sinds 1 oktober 2026. Volg zo welke archieven worden aangevuld of herzien.
- **Een kaart van de rijksarchieven.** Oogst alle inventarissen (7.411 records, 50 per pagina) en tel per hoofdgroep van het toegangsnummer en per periode. Dat is zwaar werk; doe het eenmalig en bewaar het resultaat.

## Zo verwerk je het
1. **Eén inventaris ophalen.** Het toegangsnummer is de identifier. Let op: het adres bevat een uitroepteken; zet het in de shell tussen enkele aanhalingstekens.
   `https://service.archief.nl/gaf/oai/!open_oai.OAIHandler?verb=GetRecord&metadataPrefix=oai_ead&identifier=2.21.205.69`
2. **Wat is er nieuw?.** ListIdentifiers met from en until geeft identifiers en datestamps, 50 per pagina. Het totaal staat in completeListSize van de resumptionToken.
   `https://service.archief.nl/gaf/oai/!open_oai.OAIHandler?verb=ListIdentifiers&metadataPrefix=oai_ead&from=2026-10-01T00:00:00Z`
3. **Van inventarisnummer naar scan.** In de EAD staat bij een inventarisnummer met scans een link naar een METS-bestand (service.archief.nl/gaf/api/mets/v1/…). Daarin staan de adressen van de afzonderlijke beelden als JPEG.
   `https://service.archief.nl/gaf/api/mets/v1/48f1f22f-1228-4b00-9720-5816a07b4003`
4. **Welke inventarissen zijn niet open?.** Het Nationaal Archief houdt een lijst bij van inventarissen waarvan het auteursrecht bij derden ligt, ook als CSV. Controleer die voor je een inventaris hergebruikt.
   `https://www.nationaalarchief.nl/onderzoeken/open-data/archiefinventarissen-digitale-objecten-en-scans-van-archieven`

## Interessante koppelingen
- Wat werd er gedrukt terwijl dit archief ontstond? → [kb-linked-data](https://www.opendataindex.nl/bron/kb-linked-data.md) via jaar en onderwerp. Zet de periode van een archief naast de titels in de STCN uit dezelfde jaren, bijvoorbeeld pamfletten uit 1672 naast de archieven van de Staten-Generaal.
- Wie staat er in dit archief? → [open-archieven](https://www.opendataindex.nl/bron/open-archieven.md) via naam en plaats. Open Archieven maakt personen uit veel archieven doorzoekbaar op naam. Gebruik het om iemand te vinden en zoek daarna het bijbehorende archief in de inventarissen.

## Vergelijkbare bronnen
- [open-archieven](https://www.opendataindex.nl/bron/open-archieven.md): Personen uit akten en registers van honderden archieven, doorzoekbaar op naam; het Nationaal Archief beschrijft hele archieven.
- [Archieven.nl](https://www.archieven.nl): Zoekportaal over de inventarissen van veel regionale en gemeentelijke archiefdiensten, voor wie verder zoekt dan het rijk.
- [NDE Datasetregister](https://datasetregister.netwerkdigitaalerfgoed.nl): Catalogus van erfgoeddatasets, beheerd door het Nationaal Archief binnen het Netwerk Digitaal Erfgoed.

## Waar je op moet letten
- **Alleen de beschrijving, niet de inhoud.** De inventarissen beschrijven wat er in de archieven zit. De stukken zelf zie je alleen waar scans zijn. Het METS-bestand van de Schepenbank Batavia bevat alleen beelden (JPEG) en JSON-LD, geen tekstlaag; handschriftherkenning doet het Nationaal Archief apart in zijn Datalab.
- **Geen geschiedenis van wijzigingen.** earliestDatestamp is 26 februari 2024 en elke inventaris heeft alleen de datum van zijn laatste wijziging. Hoe vaak een inventaris eerder is bijgewerkt, zie je niet.
- **Veel losse bestanden.** De inventaris van de collectie Walkate is 24 kB, die van de Schepenbank Batavia 68 kB; elk METS-bestand met scans komt daar los bij (116 kB voor het voorbeeld van de Schepenbank). Oogst in rustig tempo, 50 identifiers per pagina.
- **Niet alles is open.** 2,8 procent van de inventarissen is geen open data omdat ze door derden zijn gemaakt. Ook archieven met persoonsgegevens kunnen (deels) niet openbaar zijn; dat staat in de inventaris.

## API (OAI-PMH 2.0 (EAD), METS, IIIF)

- Basis: https://service.archief.nl/gaf/oai/!open_oai.OAIHandler
- Toegang: Geen sleutel of account nodig (getest)
- Formaten: xml, EAD 2002, RDF/XML (EDM), METS, JPEG, IIIF info.json
- Omvang: 7442 inventarissen (EAD-records) in OAI-PMH, plus 1.199.153 records in oai_dc (16 okt 2026) (getest)
- Filteren: Alleen de OAI-PMH-filters: metadataPrefix, set en een datumvenster from/until. Zoeken op inhoud kan niet; dat doe je na het oogsten.; metadataPrefix, set, from, until

### Endpoints
- `GET ?verb=Identify`: Over de dienst: earliestDatestamp 2024-02-26, granulariteit YYYY-MM-DDThh:mm:ssZ, verwijderde records transient.
- `GET ?verb=ListMetadataFormats`: oai_ead (inventarissen) en oai_dc (losse objecten, vooral foto's, als RDF met EDM-klassen).
- `GET ?verb=ListSets`: Sets: één per toegangsnummer (7.442) plus EAD_ALL; 50 per pagina.
- `GET ?verb=ListIdentifiers&metadataPrefix=oai_ead&from=…&until=…`: Toegangsnummers en datestamps die in een periode zijn gewijzigd; totaal in completeListSize.
- `GET ?verb=GetRecord&metadataPrefix=oai_ead&identifier={toegangsnummer}`: Eén volledige inventaris in EAD (bv. 2.21.205.69, 24 kB; 1.04.18.03 Schepenbank Batavia, 68 kB).
- `GET ?verb=ListRecords&metadataPrefix=oai_dc&set={set}`: Losse objecten (fotorecords) met maker, rechten en beeldadressen; identifier als NL-HaNA_<set>_<uuid>.
- `GET https://service.archief.nl/gaf/api/mets/v1/{uuid}`: METS-bestand van één inventarisnummer met scans: de adressen van de afzonderlijke beelden (/api/file/v1/default/{uuid}).
- `GET https://service.archief.nl/iip/…/{file-uuid}.jp2/info.json`: IIIF Image API 3.0 voor een beeld (afmetingen, tegels); het adres staat als nao:webserviceIIIF in het oai_dc-record.

### Parameters
- `verb`: Identify, ListMetadataFormats, ListSets, ListIdentifiers, ListRecords, GetRecord (hoofdlettergevoelig). (platform)
- `metadataPrefix`: oai_ead of oai_dc. (getest)
- `identifier`: oai_ead: het toegangsnummer (2.21.205.69). oai_dc: NL-HaNA_<set>_<uuid>. Een toegangsnummer met oai_dc geeft idDoesNotExist. (getest)
- `from / until`: Wijzigingsdatum, YYYY-MM-DDThh:mm:ssZ. Sinds 1 okt 2026: 274 inventarissen (oai_ead) en 662.979 records (oai_dc). (getest)
- `set`: Toegangsnummer (1.04.18.03) of EAD_ALL; bij oai_dc een collectiecode als 2-20-46ntfoto. (getest)
- `resumptionToken`: Volgende pagina; een uur geldig (expirationDate). Leeg element = laatste pagina. (getest)

### Elementen in de antwoorden (selectie) (10)
`header/identifier` tekst, `header/datestamp` datetime, `header/setSpec` tekst, `ead/eadheader/filedesc/titlestmt/titleproper` tekst, `archdesc/did/unitdate` tekst, `c/did/unitid` tekst, `c/did/unittitle` tekst, `c/dao/@href` url, `nao:Recordaggregatie / dct:creator` uri, `edm:hasView / nao:webserviceIIIF` url

### Limieten en valkuilen
- 50 records of identifiers per pagina; de resumptionToken verloopt na een uur. (getest)
- Geen gedocumenteerde rate limit en geen robots.txt op service.archief.nl (404). Oogst in rustig tempo. (getest)
- Met de kop Accept: text/xml geeft de dienst HTTP 406, ook al is het antwoord XML. Stuur Accept: */* of laat de kop weg. (getest)
- Het adres bevat een uitroepteken (!open_oai.OAIHandler): zet het in de shell tussen enkele aanhalingstekens. (getest)
- oai_dc is iets anders dan de naam doet vermoeden: 1,2 miljoen losse objecten (vooral foto's) als RDF met EDM-klassen, met beelden via IIIF. Niet dezelfde records als de inventarissen. (getest)
- Fouten komen als OAI-foutcode met HTTP 200 (idDoesNotExist, noRecordsMatch). Controleer altijd op een <error>-element. (getest)
- Elk record heeft alleen de datum van de laatste wijziging; earliestDatestamp is 26 februari 2024, eerdere geschiedenis is er niet. (getest)

### Voorbeeld
```
https://service.archief.nl/gaf/oai/!open_oai.OAIHandler?verb=ListIdentifiers&metadataPrefix=oai_ead&from=2026-10-01T00:00:00Z&until=2026-10-02T00:00:00Z
```

## Zo haal je het op

### curl
```bash
curl 'https://service.archief.nl/gaf/oai/!open_oai.OAIHandler?verb=GetRecord&metadataPrefix=oai_ead&identifier=2.21.205.69'
```

### python
```python
import re, requests

oai = "https://service.archief.nl/gaf/oai/!open_oai.OAIHandler"
r = requests.get(oai, params={"verb": "ListIdentifiers", "metadataPrefix": "oai_ead",
                              "from": "2026-10-01T00:00:00Z"})
print(re.search(r'completeListSize="(\d+)"', r.text).group(1), "inventarissen bijgewerkt")
for ident, datum in re.findall(r"<identifier>([^<]+)</identifier><datestamp>([^<]+)", r.text)[:5]:
    print(ident, datum)
```

## Wat je ermee kunt bouwen
- [Stamboomzoeker: van één akte naar je overgrootouders](https://www.opendataindex.nl/bouwen/stamboomzoeker.md): Begin bij een geboorteakte en laat de app via de huwelijksakten generatie na generatie terugzoeken in honderden Nederlandse archieven, met een link naar de inventaris van het Nationaal Archief.


## Voorbeelden met echte cijfers (1)

Per voorbeeld de bevinding, de peildatum en de aanroep die precies deze cijfers ophaalt.

- **Archiefinventarissen van het Nationaal Archief naar jaar van de laatste wijziging: 2024 is het grootste deel, 58% in oktober 2026** (oktober 2026). Tabel OAI-PMH ListIdentifiers (oai_ead). [Voorbeeld](https://www.opendataindex.nl/voorbeeld/nationaal-archief-laatste-wijziging)
  - `https://service.archief.nl/gaf/oai/!open_oai.OAIHandler?verb=ListIdentifiers&metadataPrefix=oai_ead`
  - `https://service.archief.nl/gaf/oai/!open_oai.OAIHandler?verb=ListIdentifiers&metadataPrefix=oai_ead&from=2024-01-01T00:00:00Z&until=2024-12-31T23:59:59Z`
  - `https://service.archief.nl/gaf/oai/!open_oai.OAIHandler?verb=ListIdentifiers&metadataPrefix=oai_ead&from=2025-01-01T00:00:00Z&until=2025-12-31T23:59:59Z`
