
PDOK Location API en Locatieserver gebruiken
PDOK biedt gratis geocodeerservices van het Kadaster. Met de Location API zoekt u via één endpoint in meerdere officiële registraties, met de Locatieserver (v3_1) in adressen, percelen en gebieden. Beide draaien op 11 oktober 2026 naast elkaar. Hieronder staan getest voorbeeld-requests, de antwoordvelden, limieten en valkuilen.

Wat is PDOK en wat levert het?
PDOK is het platform voor publieke geodata van de Nederlandse overheid. Sinds 2018 exploiteert het Kadaster het dataportaal zelfstandig, in opdracht van VRO. Het platform levert kaartlagen, downloads en geocodeerservices voor bronnen als de BAG, de BGT en de CBS Wijken en Buurten. Een overzicht van alle bronnen staat bij open data.
De PDOK diensten zijn gebaseerd op open data en daarom voor iedereen vrij beschikbaar.
Bron: PDOK, Over PDOK, gelezen op 11 oktober 2026.
Voor het zoeken van locaties zijn twee services relevant. De Locatieserver bestaat uit vier RESTful API's (suggest, free, lookup en reverse) en zoekt in adressen, percelen, wegen, hectometerpalen, woonplaatsen, wijken, buurten en waterschappen. De Location API is nieuwer, volgt de standaard OGC API Common en geeft compacte resultaten die verwijzen naar de bron-API met de volledige geometrie.
| Eigenschap | Locatieserver v3_1 | Location API v1 |
|---|---|---|
| Beheerder | Kadaster (PDOK) | Kadaster (PDOK) |
| Basis-URL | https://api.pdok.nl/bzk/locatieserver/search/v3_1 | https://api.pdok.nl/kadaster/location-api/v1 |
| Endpoints | /suggest, /free, /lookup, /reverse | /search, /collections |
| Coördinaatstelsels | RD (EPSG:28992) en WGS84 beide in het antwoord | CRS84, RD (EPSG:28992), Web Mercator (EPSG:3857), ETRS89 (EPSG:4258) |
| Uitvoer | JSON (Solr-stijl) | GeoJSON, JSON-FG, HTML |
| Filteren | Solr-syntax in q en fq | Geen AND/OR-filtering naast autocomplete |
| Licentie van de data | Per bronregistratie | Per bronregistratie, vermeld per collectie |
Is de Location API de opvolger van de Locatieserver?
Nog niet volledig. In de handout van PDOK staat dat de Location API "naast de huidige locatieserver" wordt aangeboden en "nog geen volledige vervanger" is. PDOK schat dat de eerste versie ongeveer 80 procent van de use cases dekt, en gebruikt de Locatieserver zelf nog in de PDOK-viewer, met de bedoeling over te stappen.
Op 11 oktober 2026 is op pdok.nl, in de handout en in de OpenAPI-beschrijving van v3_1 geen einddatum of uitfaseringsbesluit voor de Locatieserver gevonden. De v3_1-endpoints antwoordden bij de test van deze pagina gewoon met status 200.
De handout noemt vier verschillen die bij een migratie tellen:
- er is geen aparte suggest-, free- en lookup-service; details haalt u op met een tweede request naar de OGC API Features van de bron
- AND/OR-filtering en attribuutfiltering naast autocomplete ontbreken
- een bulkdownload via de API is er nog niet; voor veel data biedt PDOK een Atom-downloadservice
- enkele collecties ontbreken nog, zoals de wijken en buurten van het CBS, het Nationaal Wegenbestand en waterschapsgrenzen
Kies voor nieuwe toepassingen de Location API als u de herkomst van elke collectie wilt kunnen aanwijzen. Kies de Locatieserver als u wijken, buurten of attribuutfilters nodig hebt.
Adres zoeken met de Locatieserver in curl en JavaScript
De free-service is klassiek geocoderen: u geeft een zoektekst en krijgt de beste treffers terug. Met fq=type:adres beperkt u de resultaten tot adressen, met fl kiest u de velden en met rows het aantal treffers.
curl -s -G "https://api.pdok.nl/bzk/locatieserver/search/v3_1/free" \
--data-urlencode "q=Stationsplein 12 Amersfoort" \
--data-urlencode "fq=type:adres" \
--data-urlencode "fl=id,weergavenaam,centroide_ll,centroide_rd" \
--data-urlencode "rows=1"
Antwoord op 11 oktober 2026, ingekort tot het relevante deel:
{"response":{"numFound":286047,"docs":[{
"weergavenaam":"Stationsplein 12, Amersfoort",
"id":"adr-4f43a691bebb2eb9198d11e86db9b4fc",
"centroide_ll":"POINT(5.37553215 52.15266021)",
"centroide_rd":"POINT(154201.236 462720.566)"}]}}
Dezelfde aanroep in JavaScript (Node 18 of nieuwer, of een browser). Let op de volgorde in centroide_ll: eerst lengtegraad, dan breedtegraad.
const BASE = 'https://api.pdok.nl/bzk/locatieserver/search/v3_1';
async function geocode(zoekterm) {
const url = new URL(BASE + '/free');
url.searchParams.set('q', zoekterm);
url.searchParams.set('fq', 'type:adres');
url.searchParams.set('fl', 'id,weergavenaam,centroide_ll,centroide_rd');
url.searchParams.set('rows', '1');
const res = await fetch(url);
if (!res.ok) throw new Error('PDOK gaf status ' + res.status);
const { response } = await res.json();
return response.docs[0] ?? null;
}
const hit = await geocode('Stationsplein 12 Amersfoort');
console.log(hit.weergavenaam, hit.centroide_rd);
Het antwoord bevat naast de gekozen velden een numFound, de totale hoeveelheid overeenkomsten, en een score per treffer als u die in fl opvraagt. Gebruik de eerste treffer alleen als de zoektekst eenduidig was; laat de gebruiker anders kiezen uit de lijst die suggest geeft.
De PDOK-service stuurt de header Access-Control-Allow-Origin: * mee, dus de aanroep werkt ook rechtstreeks vanuit een browser.
Suggest, lookup en reverse geocoderen
Voor een zoekveld met autocomplete gebruikt u twee stappen. suggest geeft tijdens het typen korte treffers met een id. Zodra de gebruiker kiest, haalt lookup de gewenste velden van dat ene object op.
# stap 1: suggesties
curl -s -G "https://api.pdok.nl/bzk/locatieserver/search/v3_1/suggest" \
--data-urlencode "q=stationsplein 12 amers" \
--data-urlencode "fq=type:adres" --data-urlencode "rows=2"
# stap 2: details van de gekozen treffer
curl -s -G "https://api.pdok.nl/bzk/locatieserver/search/v3_1/lookup" \
--data-urlencode "id=adr-4f43a691bebb2eb9198d11e86db9b4fc" \
--data-urlencode "fl=weergavenaam,gemeentenaam,provincienaam,centroide_rd"
De lookup gaf op 11 oktober 2026 onder meer gemeentenaam: Amersfoort, provincienaam: Utrecht en centroide_rd: POINT(154201.236 462720.566).
Reverse geocoderen werkt andersom: u geeft een coördinaat en krijgt de dichtstbijzijnde objecten. De service accepteert RD (X en Y) of WGS84 (lat en lon), met type en optioneel distance in meters.
curl -s -G "https://api.pdok.nl/bzk/locatieserver/search/v3_1/reverse" \
--data-urlencode "X=154201" --data-urlencode "Y=462720" \
--data-urlencode "type=adres" --data-urlencode "rows=1" \
--data-urlencode "fl=weergavenaam,afstand"
Het antwoord was "Stationsplein 12, Amersfoort" op een afstand van 0,61 meter. De invoer was afgerond op hele meters, dus een afstand onder een meter is te verwachten. Wilt u een RD-punt zelf omrekenen, zie dan de RD-naar-WGS84-tool.
Adres zoeken met de Location API
De Location API vraagt altijd om een collectie met versie. Zonder die parameter geeft de service status 400 met de melding dat u minimaal één collectie moet opgeven. De collectienamen staan op /collections; op 11 oktober 2026 waren dat onder meer adres, gebouw, perceel, woonplaats, gemeentegebied en wegdeel.
curl -s -G "https://api.pdok.nl/kadaster/location-api/v1/search" \
--data-urlencode "q=Stationsplein 12 Amersfoort" \
--data-urlencode "adres[version]=1" \
-d limit=1 -d f=json
Het resultaat is een GeoJSON FeatureCollection. Elk feature heeft een display_name, een highlight met de gevonden termen, een punt en een href naar het volledige object bij de bron. Vraagt u RD-coördinaten, voeg dan crs=http://www.opengis.net/def/crs/EPSG/0/28992 toe; de punten komen dan terug als [154201.236, 462720.566].
const L = 'https://api.pdok.nl/kadaster/location-api/v1/search';
const u = new URL(L);
u.searchParams.set('q', 'Stationsplein 12 Amersfoort');
u.searchParams.set('adres[version]', '1');
u.searchParams.set('limit', '1');
u.searchParams.set('f', 'json');
const fc = await (await fetch(u)).json();
const feature = fc.features[0];
console.log(feature.properties.display_name, feature.geometry.coordinates);
// tweede request: volledige BAG-gegevens via de href
const detail = await (await fetch(feature.properties.href[0])).json();
console.log(detail.properties.huisnummer, detail.properties.woonplaats_naam);
Dat tweede request is het ontwerp van de service: het zoekresultaat blijft klein en de details komen uit de OGC API Features van de bron, hier de BAG. Meerdere collecties combineert u door per collectie een versie mee te geven, bijvoorbeeld adres[version]=1&woonplaats[version]=1.
Welke velden krijgt u terug?
De Locatieserver geeft Solr-documenten met een vast stel velden die u kiest met fl. De Location API geeft compacte features. De tabel noemt de velden die u in de praktijk het vaakst nodig hebt, zoals ze op 11 oktober 2026 in de tests terugkwamen.
| Service | Veld | Betekenis |
|---|---|---|
| Locatieserver | weergavenaam | Leesbare naam van de treffer |
| Locatieserver | id | Sleutel voor lookup, met voorvoegsel zoals adr- of weg- |
| Locatieserver | centroide_ll | WKT-punt in WGS84, lengtegraad eerst |
| Locatieserver | centroide_rd | WKT-punt in RD New (EPSG:28992), in meters |
| Locatieserver | nummeraanduiding_id, adresseerbaarobject_id | BAG-identificaties, om aan andere BAG-data te koppelen |
| Locatieserver | afstand | Alleen bij reverse: afstand in meters |
| Location API | display_name, highlight | Naam en gemarkeerde zoektermen |
| Location API | collection_id, collection_version | Uit welke collectie de treffer komt |
| Location API | href | Verwijzing naar het volledige object bij de bron-API |
| Location API | score | Relevantie, bedoeld om treffers te rangschikken |
Limieten, voorwaarden en licentie
De OpenAPI-beschrijving van de Locatieserver legt voor rows bij free een maximum van 100 op, met 10 als standaardwaarde; suggest staat meer toe. Bij de test van free met rows=500 en rows=10000 weigerde de service het verzoek met de melding dat het getal hoogstens 100 mag zijn. Wilt u meer dan 100 treffers, dan pagineert u met start.
Een gepubliceerde limiet voor het aantal verzoeken per seconde of per dag staat niet op de pagina's van PDOK, in de handout of in de OpenAPI-beschrijving. Ga er daarom niet van uit dat de service onbeperkt is. Bouw een cache in, vraag niet bij elke toetsaanslag een nieuwe lookup en test uw verwachte belasting vooraf met PDOK via het contact dat op de site staat. Hoe u dat aanpakt, staat bij PDOK fair use en caching. De Location API stuurt Cache-Control: public, max-age=3600, no-transform mee; dat is een aanwijzing voor caching, geen afspraak over limieten.
Over de licentie moet u twee dingen scheiden. PDOK noemt de services open en gratis. De licentie van de data hangt af van de bronregistratie. De BAG-collecties in de OGC API van PDOK verwijzen in hun metadata bijvoorbeeld naar de Public Domain Mark 1.0. Lees voor andere datasets de licentie in de metadata van die dataset en leg die vast in uw eigen bronvermelding.
Valkuilen bij het gebruik van PDOK-geocodering
- Coördinaatvolgorde. WKT in
centroide_llnoteert lengtegraad voor breedtegraad. Veel kaartbibliotheken verwachten[lon, lat]in GeoJSON, maar Leaflet verwacht[lat, lon]voor zijn eigen LatLng-objecten. - Postcode ontbreekt soms. Voor Stationsplein 12 in Amersfoort gaf de Location API
postcode: null, en de Locatieserver toonde geen postcode in de weergavenaam. Bouw formulieren die daar niet op stuk gaan. - Collectie en versie verplicht. Een request naar de Location API zonder
adres[version]=1of een andere collectie geeft status 400. - Hoeveelheid treffers.
numFoundtelt ook onscherpe overeenkomsten. Voor "Stationsplein 12 Amersfoort" meldde de service 286.047 treffers, waarvan de eerste de juiste was. Neem dus de eerste treffer pas over als de score of de gekozen suggestie dat rechtvaardigt. - Spellingscorrectie in suggest. Een zoekopdracht zonder treffers geeft een lege
docs-lijst met eenspellcheck-blok. Toon dat voorstel aan de gebruiker in plaats van een foutmelding. - Actualiteit van de data. De services lopen achter op de bron. PDOK meldt voor de BAG-service een dagelijkse actualisatie. Gebruikt u het adres in een besluit, controleer het dan bij de bronhouder.
Wanneer PDOK-geocodering niet de goede keuze is
Een geocodeerservice zoekt een locatie en geeft een punt terug. Voor andere taken is hij niet gemaakt.
- Alle adressen van een gemeente laden. Gebruik het BAG Extract via de Atom-download of de BAG OGC API, geen duizenden zoekrequests.
- Kaartweergave. Gebruik WMTS, vector tiles of OGC API Tiles voor de achtergrondkaart. Geocoderen levert alleen de locatie.
- Complexe attribuutfilters. Zoekt u alle panden gebouwd vóór een jaartal in een buurt, dan hoort die vraag bij de OGC API Features of WFS van de dataset zelf.
- Juridisch bindende gegevens. Voor een formeel besluit hoort de authentieke bron bij de bronhouder.
Hoe u geocodering inzet in een kaartviewer voor een gemeente, staat op de pagina over de GIS-viewer voor gemeenten. Wilt u eigen of PDOK-datasets publiceren naast andere open data, kijk dan naar het open-dataplatform en de bredere GIS- en kaartoplossingen. Voor RD-coördinaten die u uit de Locatieserver haalt, leest u op de RD-naar-WGS84-pagina hoe nauwkeurig een omrekening is.
Veelgestelde vragen
Is de PDOK Locatieserver uitgefaseerd?
Op 11 oktober 2026 staat op pdok.nl, in de handout van de Location API en in de OpenAPI-beschrijving geen einddatum voor de Locatieserver. PDOK noemt de Location API wel nog geen volledige vervanger. Controleer de PDOK-site en het Geoforum voordat u een migratiedatum afspreekt.
Wat is het verschil tussen de Locatieserver en de Location API?
De Locatieserver heeft vier services (suggest, free, lookup, reverse) en zoekt met Solr-syntax. De Location API volgt OGC API Common, geeft compacte GeoJSON met een verwijzing naar de bron en vraagt altijd om een collectie met versie. Filteren met AND/OR en enkele collecties, zoals wijken en buurten van het CBS, ontbreken er nog.
Kan ik PDOK-geocodering gratis in een commerciële toepassing gebruiken?
PDOK noemt de services open en gratis. Of de data zelf vrij is voor commercieel gebruik, hangt af van de licentie van de bronregistratie; lees die in de metadata van de dataset. Een gepubliceerde limiet op het aantal verzoeken is niet gevonden, dus test uw belasting en gebruik caching.
Hoe krijg ik RD-coördinaten in plaats van WGS84?
De Locatieserver geeft zowel centroide_ll (WGS84) als centroide_rd (RD New) mee. Bij de Location API voegt u crs=http://www.opengis.net/def/crs/EPSG/0/28992 toe. Zo hoeft u zelf niet om te rekenen en vermijdt u de afwijking van een benaderingsformule. Alleen als u eigen RD-punten naar WGS84 moet omzetten, hebt u een transformatie nodig.
Hoeveel resultaten kan ik per verzoek opvragen?
Bij de free-service van de Locatieserver is rows maximaal 100, met 10 als standaard. Een hogere waarde levert een foutmelding op. Voor meer treffers pagineert u met start. Wilt u een volledige gegevensset, gebruik dan een download zoals het BAG Extract in plaats van zoekrequests.
Werken de voorbeelden ook rechtstreeks vanuit de browser?
Ja, voor de geteste endpoints. De Location API stuurt Access-Control-Allow-Origin: * mee en de Locatieserver-antwoorden bevatten dezelfde header, dus fetch in de browser werkt zonder tussenserver. Een eigen proxy is nuttig voor caching en om een eventuele sleutel of limiet te verbergen.
Bronnen
- PDOK — Locatieserver (OpenAPI-beschrijving v3_1) (gelezen op )
- PDOK — Locatieserver (gelezen op )
- PDOK — Location API (gelezen op )
- PDOK — Handout Location API (verschillen met de Locatieserver) (gelezen op )
- PDOK — Location API v1 (landingspagina en collecties) (gelezen op )
- PDOK — Over PDOK (gelezen op )
- PDOK — BAG OGC API v2 (licentieverwijzing in landingspagina) (gelezen op )
- PDOK — Basisregistratie Adressen en Gebouwen (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