.claude/skills/openarchieven/SKILL.md
Search the Open Archieven (openarchieven.nl) aggregated genealogy database. Uses the free JSON API (api.openarchieven.nl) as primary method with Playwright browser automation as fallback. Open Archieven aggregates 363M+ records from dozens of Dutch and Belgian archives. Triggers on: "search openarchieven", "check open archives", "look up in the archives", "/openarchieven", or when you want to cast a wide net across all Dutch/Belgian archives rather than searching a specific regional archive. No login or API key required for search.
npx skillsauth add rdeknijf/ai-genealogy-kit openarchievenInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Search 363M+ genealogical records aggregated from dozens of Dutch and Belgian archives. Open Archieven indexes civil registry records (births, marriages, deaths), church records, population registers, and notarial records.
No login or API key required for search, show, and match endpoints.
The Open Archives API at api.openarchieven.nl provides free, structured JSON
access to all records. Rate limit: 4 requests per second per IP.
Use WebFetch or curl to call the search endpoint:
https://api.openarchieven.nl/1.1/records/search.json?name=QUERY&lang=en&number_show=NUMBER
Required parameter:
name -- search query (supports advanced syntax, see below)Optional parameters:
| Parameter | Description | Example values |
|-----------|-------------|----------------|
| number_show | Results per page (max 100) | 10, 50, 100 |
| start | Pagination offset | 0, 10, 20 |
| archive_code | Filter by archive | cod, ghn, nha, ran |
| sourcetype | Filter by source type | BS Geboorte, BS Huwelijk, BS Overlijden |
| eventplace | Filter by event location | Apeldoorn, Amsterdam |
| country_code | Filter by country | nl, be, fr, sr |
| sort | Sort column (negative = desc) | 1=Name, 4=Date, -4=Date desc |
| lang | Language | en, nl |
Name query syntax:
name=Knijfname=Jan+de+Knijfname=Jan+de+Knijf+%26+Maria (use & encoded as %26)name=Knijf+1850name=Knijf+1800-1850Common sourcetype values for filtering:
BS Geboorte -- civil registration birthsBS Huwelijk -- civil registration marriagesBS Overlijden -- civil registration deathsDTB Dopen -- church baptism recordsDTB Trouwen -- church marriage recordsDTB Begraven -- church burial recordsBevolkingsregister -- population registerExample search calls:
# Search for surname "Knijf", first 20 results
curl -s "https://api.openarchieven.nl/1.1/records/search.json?name=Knijf&lang=en&number_show=20"
# Search for marriage records of "Knijf" in Apeldoorn
curl -s "https://api.openarchieven.nl/1.1/records/search.json?name=Knijf&sourcetype=BS+Huwelijk&eventplace=Apeldoorn&lang=en&number_show=20"
# Search for a couple (finds records linking both names)
curl -s "https://api.openarchieven.nl/1.1/records/search.json?name=Jan+de+Knijf+%26+Maria&lang=en&number_show=10"
# Sort by date descending, Netherlands only
curl -s "https://api.openarchieven.nl/1.1/records/search.json?name=Knijf&country_code=nl&sort=-4&lang=en&number_show=20"
Response structure:
{
"query": { "name": "Knijf", "number_show": 10, ... },
"response": {
"number_found": 7756,
"start": 0,
"docs": [
{
"pid": "Person5767150_2",
"identifier": "53df6711-0499-bb12-67ec-08429b85dd1a",
"archive_code": "cod",
"archive_org": "CODA",
"archive": "CODA",
"personname": "Anna E. Knijf",
"relationtype": "Registered",
"eventtype": "Registration",
"eventdate": { "day": "", "month": "", "year": "1927" },
"eventplace": ["Apeldoorn"],
"sourcetype": "Population register",
"url": "https://www.openarchieven.nl/cod:53df6711-.../en"
}
]
}
}
Once you have an archive_code and identifier from search results, fetch the
full record:
https://api.openarchieven.nl/1.1/records/show.json?archive=ARCHIVE_CODE&identifier=IDENTIFIER&lang=en
Example:
curl -s "https://api.openarchieven.nl/1.1/records/show.json?archive=cod&identifier=53df6711-0499-bb12-67ec-08429b85dd1a&lang=en"
The show endpoint returns the complete A2A record including:
Alternative formats (same parameters):
.xml -- A2A XML schema.gedcom -- GEDCOM 5.5.5 format.ttl -- RDF Turtle.nt -- N-TriplesFor finding birth and death records of a specific person:
https://api.openarchieven.nl/1.0/records/match.json?name=NAME&birthyear=YEAR&lang=en
This returns Open Archives URIs for matching birth and death records. Useful for cross-referencing a known person.
To discover valid archive_code values:
curl -s "https://api.openarchieven.nl/1.1/stats/archives.json"
Returns all archives with their codes, names, and homepage URLs.
Common archive codes:
| Code | Archive |
|------|---------|
| cod | CODA (Apeldoorn) |
| ghn | Nationaal Archief |
| nha | Noord-Hollands Archief |
| ran | Regionaal Archief Nijmegen |
| elo | Erfgoed Leiden en omstreken |
| dar | Drents Archief |
| bhi | Brabants Historisch Informatie Centrum |
| hco | Collectie Overijssel |
| gae | Gemeentearchief Ede |
Use start and number_show for pagination:
# Page 1: results 0-99
curl -s "https://api.openarchieven.nl/1.1/records/search.json?name=Knijf&number_show=100&start=0&lang=en"
# Page 2: results 100-199
curl -s "https://api.openarchieven.nl/1.1/records/search.json?name=Knijf&number_show=100&start=100&lang=en"
The number_found field in the response tells you the total number of results.
Use curl or WebFetch to search:
curl -s "https://api.openarchieven.nl/1.1/records/search.json?name=SURNAME&lang=en&number_show=20"
Parse the JSON response. Extract personname, eventtype, eventdate,
eventplace, sourcetype, archive_code, identifier, and url from each
result in response.docs.
From the search results, identify records matching the target person by:
For each relevant record, call the show endpoint:
curl -s "https://api.openarchieven.nl/1.1/records/show.json?archive=ARCHIVE_CODE&identifier=IDENTIFIER&lang=en"
Extract all persons, relationships, and source details from the response.
Format findings using the output format below.
If the API is unavailable, returns errors, or if you need to use the advanced search form with filters not available in the API:
browser_navigate -> https://www.openarchieven.nl/
The homepage has a simple search box that searches across all archives.
For advanced search with filters:
browser_navigate -> https://www.openarchieven.nl/search-ext.php
Simple search (homepage): just type a name in the search box.
Advanced search has these fields:
Results show a list with:
Click a result to see the full record detail page.
Shows structured data similar to WieWasWie:
## Open Archieven Result -- [record type]
**Person:** [name]
**Event:** [type], [date] in [place]
**Father:** [name]
**Mother:** [name]
**Source archive:** [archive name, location]
**Archive ref:** [reference numbers]
**Original record:** [link to source archive if available]
**Open Archieven URL:** [url from API result]
**Confidence:** Tier B -- official archive record via Open Archieven index
tools
Search Dutch civil registry records (births, marriages, deaths) on WieWasWie.nl via direct JSON API calls, with Open Archives API as a secondary source and Playwright browser automation as fallback. Use this skill whenever you need to look up or verify a person in Dutch civil records, check a birth/marriage/death date against official archives, or find parents/spouses from indexed Burgerlijke Stand records. Triggers on: "look up on wiewaswie", "check the birth record", "find the marriage certificate", "verify this date in the civil registry", "/wiewaswie", or any request to search Dutch genealogical records for a specific person. Also use when comparing GEDCOM data against official sources or when a Tier B verification is needed.
development
Search the VOC Opvarenden database for Dutch East India Company crew records (1699-1794). Uses the Nationaal Archief HUB3 API — 853,785 indexed entries with rich detail: name, origin, rank, ship, fate (died/returned/deserted), service dates, VOC chamber, and links to original scans. Use this skill when: "search VOC records", "VOC crew", "VOC opvarenden", "sailed to Batavia", "Dutch East India Company", "VOC soldier", "VOC sailor", "/voc-opvarenden", or when looking for ancestors who may have sailed with the VOC. Also use when checking Daniel Pieterse Knijf (1704, Woerden) or any Knijf/Knijff VOC connections. No login required.
tools
Generate a scan verification page for the user to review AI-extracted genealogy findings against actual document scans. The user clicks through records, confirms or rejects each one, and confirmed records become Tier A evidence in FINDINGS.md. Use this skill when: "verify scans", "show me what needs verifying", "review pending scans", "scan verification", "/verify-scans", or when the user wants to upgrade research findings from Tier C/D to Tier A by visually confirming document scans. Also use after a research session that produced scan-backed findings that need human confirmation.
tools
Search indexed person records at Streekarchief Midden-Holland (samh.nl) via the Memorix Genealogy REST API. No browser automation needed — returns structured JSON in ~50ms per query. Based in Gouda, covers municipalities: Gouda, Haastrecht, Schoonhoven, Waddinxveen, Noord-Waddinxveen, Moerkapelle, Moordrecht, Ammerstol, Broek, Vlist, and surrounding areas in the Midden-Holland region of South Holland. 3M+ person records with DTB (doop/trouw/begraven), BS (geboorte/huwelijk/overlijden), and Inschrijvingaktes. 36 Knijf results found, including Gijsbert de Knijf records in Gouda and van der Knijf in Waddinxveen. Scans available for most records. Triggers on: "search Gouda archive", "Streekarchief Midden-Holland", "SAMH", "Haastrecht records", "Schoonhoven records", "/streekarchief-midden-holland", or any genealogy research in the Gouda/Midden-Holland area. No login required. Parallelizable — run multiple queries simultaneously.