.claude/skills/online-begraafplaatsen/SKILL.md
Search Dutch cemetery and grave records on Online Begraafplaatsen (online-begraafplaatsen.nl), a database of 1.2M+ persons across 1,700+ Dutch cemeteries with gravestone photos. Uses direct HTTP calls (autocomplete JSON API + form POST + HTML parsing) instead of browser automation. Use this skill whenever looking for burial records, grave locations, gravestone inscriptions or photos, death dates from cemetery records, or family graves that might reveal unknown family members. Triggers on: "check the cemetery records", "find the grave", "search begraafplaatsen", "gravestone photo", "/online-begraafplaatsen", or any request to look up burial/grave information in the Netherlands. No login required.
npx skillsauth add rdeknijf/ai-genealogy-kit online-begraafplaatsen-optimizedInstall 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 1.2 million+ persons across 1,700+ Dutch cemeteries. Many entries include gravestone photos. Updated daily by volunteers.
No login required for searching and viewing records/photos.
Many Dutch graves are cleared (geruimd) after 20-30 years, so older ancestors may not be found. Jewish cemeteries are never cleared. Family graves (familiegraven) may list multiple generations on one stone — useful for discovering unknown family members.
For simple surname lookups, use the public JSON API directly:
curl -s 'https://api.online-begraafplaatsen.nl/bgp/V1/PERSselect?term=Knijf'
Returns up to 25 results as JSON:
[
{"label": "Knijf de, Jacob (1924-1968)", "value": 1194484},
{"label": "Knijf de, Jan (-1970)", "value": 1061177}
]
label — person name with prefix, first name, and yearsvalue — person ID (use for detail page lookup)Cemetery autocomplete also available:
curl -s 'https://api.online-begraafplaatsen.nl/bgp/V1/BGPselect?term=Bennekom'
For searches with separate surname/prefix/first name/cemetery fields and unlimited results, replicate the search form via curl:
Step 1: Get CSRF token + session cookie
COOKIE_JAR=$(mktemp)
CSRF=$(curl -s -c "$COOKIE_JAR" 'https://www.online-begraafplaatsen.nl/zoeken.asp' \
| grep -oP 'CSRFToken" value="\K[^"]+')
Step 2: POST the search form
curl -s -b "$COOKIE_JAR" \
'https://www.online-begraafplaatsen.nl/zoeken.asp?command=zoekform' \
-X POST \
-d "CSRFToken=$CSRF&Achternaam=Knijf&tussenvoegsel=de&voornaam=Jan&Select1=0&submitbutton=Zoek"
Form fields:
| Field | Parameter | Notes |
|-------|-----------|-------|
| Surname | Achternaam | WITHOUT prefix. Wildcards * and ? supported |
| Prefix | tussenvoegsel | "de", "van der", etc. Single space = no prefix |
| First name | voornaam | Wildcards supported |
| Cemetery | Select1 | Value 0 = all cemeteries |
Step 3: Parse HTML results
Results are in <tr> rows. Each row contains:
| Column | Content | |--------|---------| | naam | Person name with links to detail page | | geboren | Birth date (dd-mm-yyyy) | | overleden | Death date (dd-mm-yyyy) | | lftd | Age at death | | e.v. | Spouse surname | | opmerking | Remarks | | idnr | Person ID | | aand | Grave plot designation | | begraafplaats | Cemetery name/location |
Each result has a canonical link: /graf/{grafid}/{persid}/{Slug}
Footer shows total: "Er zijn {N} records gevonden in {time} sec."
Fetch the canonical URL directly — no browser needed:
WebFetch → https://www.online-begraafplaatsen.nl/graf/{grafid}/{persid}/{Slug}
Ask WebFetch to extract: person names, birth/death dates, ages, cemetery name and location, plot designation, photo availability, and other persons on the same grave (family grave members).
The canonical URL is found in search results as href="/graf/{grafid}/{persid}/{Slug}".
If you only have a person ID from the autocomplete API, use the redirect:
WebFetch → https://www.online-begraafplaatsen.nl/zerken.asp?p={persid}&redir=canonical
Use browser only when:
showfoto.asp)browser_navigate → https://www.online-begraafplaatsen.nl/zoeken.asp
| Field | HTML id | Type | Notes |
|-------|---------|------|-------|
| Achternaam (Surname) | Achternaam | text | WITHOUT prefix. Wildcards * and ? supported |
| Tussenvoegsel (Prefix) | tussenvoegsel | text | "de", "van der", etc. Single space = no prefix |
| Voornaam (First name) | voornaam | text | Wildcards supported |
| Begraafplaats (Cemetery) | Select1 | select | Value 0 = all cemeteries. 1000+ options |
Click the "Zoek" button. Results appear on the same page.
Results table and detail page structure are the same as described in the HTTP method above.
Click a name to go to the grave detail page.
URL pattern: /graf/{grafid}/{persid}/{Slug}
The detail page shows:
Photo section:
Person data table:
Grave metadata:
showfoto.asp with signed hashes.
Cannot be hotlinked; must view in browser.## Online Begraafplaatsen Result
**Person:** [name]
**Born:** [date]
**Died:** [date], age [age]
**Spouse:** [name if shown]
**Cemetery:** [name and location]
**Plot:** [designation]
**Photo:** [available / not available]
**Other persons on grave:** [list if family grave — names, birth/death dates]
**Confidence:** Tier B — volunteer-indexed cemetery record
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.