
BGT downloaden via PDOK: Download API en OGC API
De BGT, de grootschalige basiskaart van Nederland, haalt u gratis en zonder key bij PDOK. Voor een kaartvenster gebruikt u de OGC API Features, voor een gebied of heel Nederland de Download API met CityGML, GML-light of StUF-Geo. De data valt onder CC0 en bevat ook beëindigde voorkomens, die u zelf moet uitfilteren.

Wat is de BGT en wie beheert hem?
De Basisregistratie Grootschalige Topografie (BGT) is een gedetailleerde digitale kaart van Nederland met objecten als gebouwen, wegen, water, spoorlijnen en groen. Het Kadaster bouwt en beheert de Landelijke Voorziening (LV-BGT). De bronhouders zijn gemeenten, provincies, waterschappen, ProRail en drie ministeries. Elke bronhouder is verantwoordelijk voor een eigen deel van de kaart.
In de Basisregistratie Grootschalige Topografie (BGT|IMGeo) standaarden staat beschreven hoe overheidsorganisaties de inrichting van de buitenruimte - wegen, water, groen, bebouwing - in Nederland digitaal vastleggen.
Bron: Geonovum, BGT | IMGeo, gelezen op 11 oktober 2026.
| Eigenschap | Waarde |
|---|---|
| Beheerder | Kadaster (LV-BGT); bronhouders leveren de objecten |
| Licentie | CC0 1.0, volgens de OGC API-landingspagina |
| OGC API Features | https://api.pdok.nl/kadaster/bgt/ogc/v1, versie 1.0.0, 49 collecties |
| Download API | https://api.pdok.nl/kadaster/bgt/download/v1_0 |
| Coördinaatstelsels OGC API | CRS84, RD (EPSG:28992, opslag), Web Mercator, ETRS89 (EPSG:4258) |
| Downloadformaten | CityGML, GML-light, StUF-Geo |
| Actualiteit downloads | per objecttype; op 11 oktober 2026 stond de laatste tijdstempel op 10 oktober 22:30 UTC |
Wat is het verschil tussen BGT en IMGeo?
De BGT bevat de verplichte kern, IMGeo is de uitbreiding. Volgens Geonovum is het toepassen van de gegevenscatalogus BGT wettelijk verplicht. IMGeo laat bronhouders daarnaast meer objecten en meer detail uitwisselen, bijvoorbeeld bakken en palen in de openbare ruimte.
In de praktijk ziet u dat terug in de PDOK-collecties. Naast pand, wegdeel en waterdeel bevat de OGC API objecttypen als bak, paal, kast, mast en bord. Welke u gevuld aantreft, hangt af van wat de bronhouder heeft aangeleverd. Omdat IMGeo aanvullend is, hoeft niet elke bronhouder die objecten te leveren. Reken er dus niet op dat collecties als paal of bak landelijk dekkend zijn.
De downloadbestanden verwijzen naar IMGeo-schema versie 2.1 (de XML-namespace in onze testdownload); het model en de bijbehorende documentatie staan bij Geonovum. Wilt u de gegevens in een gemeentelijke kaartviewer tonen, lees dan ook GIS-viewer voor gemeenten.
Welke downloadroute kiest u voor de BGT?
Kies de OGC API voor een kaartvenster en de Download API voor een gebied of het hele land. PDOK biedt daarnaast WMTS en vector tiles voor weergave, maar die leveren plaatjes of tegels, geen objecten voor analyse.
| Route | Geschikt voor | Let op |
|---|---|---|
| OGC API Features | Objecten in een kaartvenster, enkele collecties tegelijk | Maximaal 1.000 per verzoek; geen attribuutfilter |
| Download API, predefined | Heel Nederland, alle objecttypen, kant-en-klaar zipbestand | Groot bestand; ook een variant zonder plaatsbepalingspunten |
| Download API, custom | Eigen gebied en eigen objecttypen, asynchroon | Geofilter is niet exact |
| Download API, delta | Een eigen kopie periodiek bijwerken | Eerst een beginstand halen, daarna alleen wijzigingen |
| Vector tiles en WMTS | Weergave in een kaart | Geen volledige attributen om mee te rekenen |
De volledige procedure voor de downloadvarianten staat in de OpenAPI-beschrijving van de Download API en in het stappenplan van PDOK. Een eigen kopie van de BGT hosten en bijwerken is een beheertaak; zie GIS-beheer en hosting.
BGT-objecten in een kaartvenster opvragen met de OGC API
De OGC API Features werkt zonder key en geeft GeoJSON. Met bbox en bbox-crs geeft u een venster in RD op. Standaard komen de coördinaten terug in WGS84 (CRS84); met crs vraagt u RD. Het voorbeeld is op 11 oktober 2026 met Node 24 gedraaid.
const url = new URL('https://api.pdok.nl/kadaster/bgt/ogc/v1/collections/pand/items');
url.searchParams.set('f', 'json');
url.searchParams.set('bbox', '154150,462680,154250,462760');
url.searchParams.set('bbox-crs', 'http://www.opengis.net/def/crs/EPSG/0/28992');
url.searchParams.set('limit', '100');
const res = await fetch(url);
if (!res.ok) throw new Error('PDOK gaf status ' + res.status);
const fc = await res.json();
const actueel = fc.features.filter((f) => f.properties.eind_registratie === null);
console.log(fc.numberReturned, 'voorkomens,', actueel.length, 'actueel');
console.log(actueel.map((f) => f.properties.bag_pnd));
Uitvoer:
15 voorkomens, 6 actueel
[ '0307100000311531', '0307100000347585', '0307100000338918',
'0307100000341963', '0307100000308303', '0307100000595635' ]
Het venster is 100 bij 80 meter bij het station van Amersfoort. De service gaf vijftien voorkomens terug, waarvan zes zonder einddatum. Een pand kan namelijk meerdere versies hebben; het eerste feature in het antwoord had een eind_registratie in 2017, terwijl een nieuwere versie van hetzelfde BAG-pand (0307100000338918) wel actueel was. De eigenschap bag_pnd koppelt het BGT-pand aan het pand in de BAG.
Een attribuutfilter bestaat niet. Een CQL-filter gaf status 400 met de melding "CQL support is not enabled for this API", en een onbekende queryparameter (bag_pnd=…) gaf eveneens 400. Selecteer dus ruimtelijk en filter in uw eigen code. Wie koppelt met de BAG, kan het 2D-pand daarna combineren met de 3D BAG voor hoogte.
Een BGT-extract downloaden met de Download API
Een custom download is asynchroon. U doet een POST met de objecttypen, het formaat en een optioneel geofilter, wacht tot de status COMPLETED is en haalt dan het zipbestand op. Het geofilter is een WKT-polygoon in RD; alleen Polygon en MultiPolygon zijn toegestaan en gaten (inner rings) worden niet ondersteund. De API verwacht format en featuretypes, en de formaatwaarden zijn citygml, gmllight en stufgeo.
BASE=https://api.pdok.nl/kadaster/bgt/download/v1_0
# 1. aanvraag: alleen panden, gebied als WKT-polygoon in RD (EPSG:28992)
RESP=$(curl -s -X POST "$BASE/full/custom" \
-H "Content-Type: application/json" \
-d '{"featuretypes":["pand"],"format":"citygml","geofilter":"POLYGON((154150 462680,154250 462680,154250 462760,154150 462760,154150 462680))"}')
ID=$(echo "$RESP" | grep -o '"downloadRequestId":"[^"]*"' | cut -d'"' -f4)
# 2. wachten tot de status COMPLETED is
until curl -s "$BASE/full/custom/$ID/status" | grep -q COMPLETED; do sleep 2; done
# 3. downloadlink uit de status halen en het zipbestand ophalen
LINK=$(curl -s "$BASE/full/custom/$ID/status" | grep -o '"href":"[^"]*extract.zip"' | cut -d'"' -f4)
curl -s -o bgt-pand.zip "https://api.pdok.nl$LINK"
unzip -l bgt-pand.zip
De POST gaf status 202 met een downloadRequestId. Het hele script duurde bij de test op 11 oktober 2026 ongeveer 41 seconden. Het zipbestand was 4.402.285 bytes groot en bevatte één bestand, bgt_pand.gml, van 67.690.421 bytes.
Waarom is mijn download veel groter dan het gebied?
Het geofilter is niet exact. De OpenAPI-beschrijving zegt dat het filter het gebied limiteert, maar dat de download een overshoot aan objecten buiten de selectie kan bevatten. Bij onze test van 100 bij 80 meter was die overshoot groot. Het GML-bestand bevatte 25.385 BuildingPart-elementen. De eerste coördinaat van de elementen zonder einddatum lag tussen x 153.953 en 156.010 en tussen y 461.967 en 464.023, dus verspreid over ongeveer twee bij twee kilometer.
Daarnaast bevat het bestand ook beëindigde voorkomens. Van die 25.385 elementen hadden er 12.467 geen eindRegistratie; de rest is historie. Controleer de bestandsgrootte en het aantal objecten dus altijd, knip het gebied zelf exact bij met uw GIS-pakket en filter op eindRegistratie voordat u telt of toont. Gebruikt u dit voor een rapportage over één wijk, bouw dan die twee stappen vast in uw script.
Het spreidingsbereik is bepaald op het eerste punt van elk element. Zie het als een indicatie van de omvang van de overshoot, niet als maat voor een analyse.
Wat zijn de overige valkuilen bij de BGT?
- Lijnen, punten en vlakken zijn aparte collecties. Een object als
kunstwerkdeelstaat in de OGC API alskunstwerkdeel_lijn,kunstwerkdeel_puntenkunstwerkdeel_vlak. In de Download API is het één objecttype. - Historie in alle routes. Zowel de OGC API als de download leveren voorkomens met einddatum. Filter op
eind_registratie(OGC API) ofeindRegistratie(GML). - Standaard WGS84. De OGC API geeft zonder
crslengte-breedtegraden terug, terwijl het geofilter van de Download API RD verwacht. Zet beide expliciet. - Trage grote verzoeken. Een verzoek met
limit=1000duurde bij onze test ongeveer elf seconden. Vraag kleine vensters en cache de antwoorden, zoals beschreven bij PDOK fair use en caching. - Fouten in de kaart. PDOK verwijst voor wijzigingen naar de voorziening Verbeter de kaart; zie terugmelden bij basisregistraties.
Wanneer is de BGT niet de goede bron?
De BGT beschrijft de fysieke buitenruimte, niet wie waar woont of eigenaar is. Voor adressen gebruikt u de BAG, voor percelen en eigendom de BRK en kadastrale kaart. Een achtergrondkaart voor een website bouwt u met WMTS of vector tiles, niet met feature-downloads. Hoogte komt uit de AHN of de 3D BAG.
Drie toepassingen laten zien hoe de BGT als ondergrond werkt. Een bomenregister vult de plek en het type uit de BGT aan met soort, aanlegjaar en beheergegevens. Een kaart van afvalcontainers legt containerlocaties tegen de standplaatsen in de BGT. Een begraafplaatsregister gebruikt de paden, het groen en het water op de begraafplaats als detailkaart.
Wilt u BGT-data omzetten naar een formaat dat uw systemen lezen, dan is GDAL het gebruikelijke gereedschap. Voor een viewer met BGT als ondergrond, zie GIS- en kaartoplossingen. Het overzicht van andere bronnen staat op de hub open data.
Veelgestelde vragen
Is de BGT gratis te gebruiken?
Ja. PDOK vermeldt CC0 1.0 bij de BGT OGC API; dat is de Creative Commons-verklaring waarmee de rechthebbende afstand doet van zijn rechten. Het Kadaster schrijft dat iedereen de informatie uit de BGT vrij kan gebruiken. Voor overheden en andere wettelijke gebruikers is het gebruik van de BGT bovendien verplicht.
Welk formaat moet ik kiezen, CityGML, GML-light of StUF-Geo?
Kies het formaat dat uw software kan lezen. PDOK biedt GML (CityGML), GML-light en StUF-Geo; de beschrijving van de downloadformaten staat bij Geonovum. Wij hebben alleen CityGML getest. StUF-Geo hoort volgens Geonovum bij de uitwisseling tussen bronhouder en landelijke voorziening.
Hoe haal ik de BGT voor één gemeente op?
Er is geen filter op gemeentecode in de Download API. Teken de gemeentegrens als WKT in RD, stuur die mee als geofilter en knip het resultaat daarna exact bij. In de OGC API bestaan wel collecties zoals buurt en wijk, maar geen filter op gemeente.
Hoe houd ik een eigen kopie van de BGT actueel?
Haal met het delta-endpoint eerst een beginstand en daarna periodiek de wijzigingen. PDOK beschrijft dat in drie stappen in de OpenAPI-beschrijving: beginstand, delta-id's opvragen, en voor elk nieuw delta-id de mutaties ophalen. Dagelijks bijwerken heeft de voorkeur van PDOK. Filter bij elke mutatie op eindRegistratie, zodat beëindigde voorkomens uit uw actuele tabel verdwijnen.
Bronnen
- PDOK — BGT OGC API v1 (gelezen op )
- PDOK — BGT Download API (OpenAPI-beschrijving) (gelezen op )
- PDOK — Basisregistratie Grootschalige Topografie (gelezen op )
- Kadaster — Basisregistratie Grootschalige Topografie (BGT) (gelezen op )
- Geonovum — BGT | IMGeo (gelezen op )
- Creative Commons — CC0 1.0 Universal (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