
Een stembureaukaart voor de gemeente bouwen op open data
Een stembureaukaart toont kiezers waar ze kunnen stemmen, wanneer een stemlokaal open is en hoe toegankelijk het is. De Kieswet verplicht gemeenten om stemlokalen zo toegankelijk mogelijk te maken en de adressen bekend te maken. Gemeenten leveren hun stembureaus aan bij Waar is mijn stemlokaal, dat de data onder CC0 en via een API beschikbaar stelt.

Wat vraagt de Kieswet van een gemeente over stemlokalen?
Artikel J 4 van de Kieswet regelt het aanwijzen van stemlokalen. Lid 1 laat burgemeester en wethouders voor elk stembureau een geschikt stemlokaal aanwijzen en verplicht de burgemeester om de adressen aan de kiezer mee te delen. Lid 2 gaat over toegankelijkheid:
Burgemeester en wethouders dragen er zorg voor dat alle in de gemeente aangewezen stemlokalen zodanig zijn gelegen en zo zijn ingericht en uitgerust dat kiezers met lichamelijke beperkingen zoveel mogelijk hun stem zelfstandig kunnen uitbrengen.
Bron: Kieswet, artikel J 4, leden 1 en 2, geraadpleegd op 11 oktober 2026. Lid 3 voegt toe dat het college de gemeenteraad informeert als het daar niet aan voldoet.
De Rijksoverheid werkt dat uit voor kiezers. Stembureaus moeten toegankelijk zijn voor mensen in een rolstoel, niet per se voor een scootmobiel. Voor mobiele stemlokalen en stemlokalen op stations gelden andere regels; die zijn soms minder goed bereikbaar. Voor de details over hulpmiddelen, zoals een stemmal met audio-ondersteuning, verwijst de Rijksoverheid naar de site van de gemeente en naar Waarismijnstemlokaal.nl.
Een stembureaukaart is daarmee geen extraatje maar een praktische vorm van de mededeling uit lid 1, aangevuld met de toegankelijkheidsinformatie waar kiezers met een beperking naar zoeken.
Welke open data over stembureaus is er?
De bron is het platform Waar is mijn stemlokaal van de Open State Foundation. Gemeenten leveren daar hun stembureaus aan volgens de Stembureaus Open Data Standaard (ODS) die VNG Realisatie heeft opgesteld. Per verkiezing komt er een dataset in een CKAN-catalogus, met CSV, JSON en een Data Explorer met API. De data staat onder CC0. Het platform waarschuwt dat de stembureaus van gemeenten die zelf niets aanleverden door Open State Foundation zijn verzameld, zodat verplichte velden soms leeg zijn en de juistheid niet gegarandeerd is.
Op data.overheid.nl staan ook stembureaudatasets, maar bij een zoekopdracht op 11 oktober 2026 waren dat vooral oudere bestanden, zoals die van 2019, en enkele gemeentelijke datasets. Voor actuele verkiezingen is de catalogus van Waar is mijn stemlokaal de plek.
| Kenmerk | Waarde |
|---|---|
| Standaard | Stembureaus ODS v1.7 |
| Aantal records | 9.976 |
| Aantal verschillende CBS-gemeentecodes | 340 |
| Toegankelijk voor mensen met een lichamelijke beperking: ja | 9.192 |
| Toegankelijk voor mensen met een lichamelijke beperking: nee | 784 |
| Type stembureau: regulier, mobiel, bijzonder | 9.682, 182 en 112 |
| Records zonder breedtegraad | 0 |
De telling beschrijft wat gemeenten hebben ingevuld, niet de werkelijke toestand van de stemlokalen. Hoe u zulke data zelf publiceert, staat in de gids open data publiceren als gemeente.
Welke velden staan in de Stembureaus Open Data Standaard?
De dataset van 2026 heeft 47 ODS-velden (48 met de technische kolom _id). Voor een kaart zijn ze in vier groepen te verdelen.
| Groep | Velden | Gebruik |
|---|---|---|
| Identificatie | Gemeente, CBS gemeentecode, Nummer stembureau, Naam stembureau, Type stembureau, ID, UUID | Filteren per gemeente, titel van de marker |
| Locatie | BAG Nummeraanduiding ID, adresvelden, X en Y (RD), Latitude en Longitude (WGS84), wijk- en buurtcodes | Plaatsen op de kaart, koppelen aan de BAG |
| Tijd | Openingstijd, Sluitingstijd | Tonen en filteren op open of gesloten |
| Toegankelijkheid | Lichamelijke beperking, ov-halte, toilet, host, geleidelijnen, stemmal met audio, kandidatenlijst in braille en grote letters, gebarentolk, akoestiek, prikkelarm, prokkelduo, extra informatie | Filters en een tekstuele beschrijving per stemlokaal |
Omdat zowel RD- als WGS84-coördinaten in de data staan, hoeft u niet om te rekenen. Wilt u controleren of beide op dezelfde plek uitkomen, gebruik dan de RD naar WGS84 converter. Het BAG-nummer maakt een koppeling met de BAG mogelijk, bijvoorbeeld om het gebruiksdoel van het gebouw te vergelijken met wat de gemeente invulde.
Hoe ziet de architectuur van een stembureaukaart eruit?
De kaart heeft vier stappen: de gemeente voert de stembureaus in, een geplande taak haalt ze op, zet ze om naar GeoJSON en een kaartviewer toont ze met een lijst ernaast.
De ophaaltaak draait aan de serverkant om twee redenen. De datastore-API stuurde bij de test geen Access-Control-Allow-Origin-header mee, zodat een browser het verzoek van een andere site blokkeert. En op de verkiezingsdag wilt u de kaart niet afhankelijk maken van een externe API die op dat moment het drukst bezocht wordt. Een statisch GeoJSON-bestand dat elk kwartier wordt ververst, is genoeg. De kaartlaag zelf kan met MapLibre of OpenLayers, met een achtergrondkaart van PDOK.
Werkend voorbeeld: stembureaus van één gemeente als GeoJSON
Het script haalt alle stembureaus van één gemeente op uit de dataset van de gemeenteraadsverkiezingen 2026, filtert op CBS-gemeentecode en zet ze om naar een GeoJSON FeatureCollection. Getest op 11 oktober 2026 met Node 24.
// stembureaus.mjs — Node 18 of nieuwer, server-side (de API stuurt geen CORS-header)
const API = 'https://data.waarismijnstemlokaal.nl/api/3/action/datastore_search';
const RESOURCE = 'ff973715-2f66-4421-a860-10cc0b8d6295'; // gemeenteraadsverkiezingen 2026
async function stembureaus(gemeentecode) {
const url = new URL(API);
url.searchParams.set('resource_id', RESOURCE);
url.searchParams.set('filters', JSON.stringify({ 'CBS gemeentecode': gemeentecode }));
url.searchParams.set('limit', '1000');
const res = await fetch(url);
if (!res.ok) throw new Error('API gaf status ' + res.status);
const { result } = await res.json();
return result.records;
}
function naarGeoJSON(records) {
return {
type: 'FeatureCollection',
features: records
.filter((r) => r.Longitude != null && r.Latitude != null)
.map((r) => ({
type: 'Feature',
geometry: { type: 'Point', coordinates: [r.Longitude, r.Latitude] },
properties: {
naam: r['Naam stembureau'],
adres: r.Straatnaam + ' ' + r.Huisnummer + (r.Huisletter || '') + ', ' + r.Plaats,
type: r['Type stembureau'],
open: r.Openingstijd,
dicht: r.Sluitingstijd,
toegankelijk: r['Toegankelijk voor mensen met een lichamelijke beperking'],
bag: r['BAG Nummeraanduiding ID'],
},
})),
};
}
const records = await stembureaus('GM0392'); // Haarlem
const fc = naarGeoJSON(records);
const ja = fc.features.filter((f) => f.properties.toegankelijk === 'ja').length;
console.log(records.length + ' stembureaus, ' + ja + ' met toegankelijk = ja');
console.log(JSON.stringify(fc.features[0].properties, null, 2));
Uitvoer op 11 oktober 2026:
88 stembureaus, 82 met toegankelijk = ja
{
"naam": "Het Stadhuis A (ingang Koningstraat)",
"adres": "Grote Markt 2, Haarlem",
"type": "regulier",
"open": "2026-03-18T07:30:00",
"dicht": "2026-03-18T21:00:00",
"toegankelijk": "ja",
"bag": "0392200000022718"
}
Schrijf fc naar een bestand en laat de kaartviewer dat bestand laden. Wilt u liever geen API gebruiken, dan levert https://data.waarismijnstemlokaal.nl/datastore/dump/ gevolgd door dezelfde resource-id de volledige dataset als CSV. Meer over het opzetten van zo'n dataflow staat bij API-koppelingen.
Hoe maakt u de stembureaukaart zelf toegankelijk?
Een kaart over toegankelijke stemlokalen die zelf niet toegankelijk is, mist zijn doel. Voor websites van overheidsinstanties gelden EN 301 549 en daarmee WCAG 2.1 op niveau A en AA. Artikel 2, lid 2, onder d, van het Tijdelijk besluit digitale toegankelijkheid overheid zondert uit: "onlinekaarten en onlinekarteringsdiensten, mits essentiële informatie op navigatiekaarten op een toegankelijke, digitale wijze wordt verstrekt". Onze aanbeveling is om de adressen, openingstijden en toegankelijkheid van de stemlokalen in elk geval ook als tekst te tonen, dan hangt de toegankelijkheid niet af van de vraag of de kaart als navigatiekaart geldt. De uitwerking voor kaarten staat in de gids toegankelijke kaarten. Voor deze toepassing komen daar een paar concrete punten bij.
- Lijst naast de kaart. Toon alle stemlokalen ook als lijst, gesorteerd op afstand of op naam, met adres, openingstijden en toegankelijkheid in gewone tekst.
- Filters op de ODS-velden. Laat filteren op toegankelijkheid, stemmal met audio-ondersteuning, kandidatenlijst in braille of grote letters en gebarentolk, en zet het aantal resultaten in tekst bij het filter.
- Niet alleen kleur. Onderscheid toegankelijke en niet-toegankelijke lokalen met vorm en tekst, niet alleen met groen en rood.
- Tijden voluit. Schrijf "open van 07.30 tot 21.00 uur" in plaats van een ISO-tijdstempel, en meld afwijkende tijden van mobiele en bijzondere stembureaus apart.
- Zoeken op adres. Laat kiezers hun eigen adres invoeren via de PDOK-geocoder; zie adressen zoeken met PDOK.
Welke valkuilen zijn er bij een stembureaukaart?
- Elke verkiezing een nieuwe resource-id. De id in het voorbeeld hoort bij de gemeenteraadsverkiezingen 2026. Haal de id voor een nieuwe verkiezing op van de datapagina en zet hem in configuratie, niet in de code.
- Tijden zonder tijdzone.
Openingstijdkomt terug als2026-03-18T07:30:00, zonder tijdzone. JavaScript leest dat als lokale tijd van de machine. Draait uw server in UTC, zet dan expliciet de Nederlandse tijdzone. - Lege tekst naast null. Niet-ingevulde velden zijn soms
nullen soms een lege string. Behandel beide als "onbekend" en toon dat ook zo, niet als "nee". - Ingevuld is niet gecontroleerd. Een "ja" bij toegankelijkheid is wat de gemeente opgaf. Voor gemeenten die niet zelf aanleverden, heeft Open State Foundation de gegevens verzameld.
- Mobiele stembureaus. Die hebben vaak afwijkende tijden en soms meerdere locaties op één dag. Toon ze apart in de lijst.
- Geen CORS. Rechtstreeks ophalen vanuit de browser lukte niet; gebruik een eigen ophaaltaak of het CSV-bestand.
Wanneer is een eigen stembureaukaart niet nodig?
Voor veel gemeenten is een eigen kaart overbodig. Waar is mijn stemlokaal biedt een embedcode voor de kaart van één gemeente of zelfs één stembureau, die u op de verkiezingspagina van de gemeente kunt plaatsen. Dat is de eenvoudigste vorm van hergebruik en vraagt geen eigen hosting.
Een eigen kaart is zinvol als de gemeente stembureaus wil combineren met eigen lagen, zoals parkeerplaatsen voor mensen met een beperking, tijdelijke verkeersmaatregelen of ov-haltes, of als de kaart moet passen in een bestaande GIS-viewer voor gemeenten. Ook dan blijft de aanlevering bij Waar is mijn stemlokaal de bron, zodat er één plek is waar de gemeente de gegevens bijhoudt. TechinFlow beschrijft hier hoe zo'n kaart te bouwen is; een eigen uitvoering van deze kaart is geen referentie van TechinFlow. Bredere kaartvragen staan bij GIS- en kaartoplossingen.
Veelgestelde vragen
Is een gemeente verplicht om een stembureaukaart te publiceren?
Nee, een kaart is niet verplicht. De Kieswet verplicht de burgemeester wel om de adressen van de stemlokalen aan de kiezer mee te delen, en het college om stemlokalen zo toegankelijk mogelijk te maken. Een kaart met lijst is een praktische manier om die adressen en de toegankelijkheid duidelijk te maken, naast de wettelijke kennisgeving.
Waar vind ik de open data van alle stembureaus?
Op de datapagina van Waar is mijn stemlokaal, met per verkiezing een dataset in CSV en JSON en een Data Explorer met API. De data staat onder CC0 en volgt de Stembureaus Open Data Standaard van VNG Realisatie. Op data.overheid.nl staan vooral oudere stembureaudatasets.
Kan ik de API rechtstreeks vanuit de browser aanroepen?
Bij de test op 11 oktober 2026 stuurde de datastore-API geen CORS-header mee, dus een browser blokkeert het verzoek vanaf een andere site. Haal de data op met een server-side taak, sla die op als GeoJSON en laat de kaart dat bestand laden. Dat ontlast de bron op de verkiezingsdag.
Hoe betrouwbaar is het veld over toegankelijkheid?
Het veld geeft weer wat de gemeente heeft ingevuld. Voor gemeenten die niets aanleverden, heeft Open State Foundation de gegevens verzameld en kunnen verplichte velden leeg zijn. Toon lege velden als onbekend en verwijs voor twijfelgevallen naar de verkiezingspagina van de gemeente.
Welke versie van de standaard moet ik gebruiken?
Volgens Waar is mijn stemlokaal is versie 1.7 van de Stembureaus Open Data Standaard gebruikt voor de gemeenteraadsverkiezingen van 2026 en de herindelingsverkiezingen van dat jaar. Elke verkiezing kan een nieuwe versie gebruiken. Lees de versie uit de datapagina en controleer of veldnamen zijn gewijzigd voordat u een script hergebruikt.
Bronnen
- Kieswet (BWBR0004627), art. J 4 (gelezen op )
- Tijdelijk besluit digitale toegankelijkheid overheid, art. 2 lid 2 sub d (gelezen op )
- Rijksoverheid — Wat is er bij verkiezingen geregeld voor kiezers met een beperking? (gelezen op )
- Waar is mijn stemlokaal — Data (gelezen op )
- Waar is mijn stemlokaal — Over deze website (gelezen op )
- Waar is mijn stemlokaal — dataset stembureaus gemeenteraadsverkiezingen 2026 (gelezen op )
- VNG Realisatie — ODS-Stembureaus (GitHub) (gelezen op )
- Open State Foundation — broncode stembureaus (GitHub) (gelezen op )
- data.overheid.nl — zoekresultaten stembureaus (CKAN-API) (gelezen op )
Meer over TechinFlow
Een nieuw bureau in Haarlem voor maatwerk software, GIS en dataplatforms op open standaarden.
Een vraag of opdracht?
Vertel kort wat er speelt en voor welke organisatie. We reageren per e-mail.
Stuur een bericht