BAG data uitgelegd: de complete gids over de officiële Nederlandse adres database
Terug naar blog
🇳🇱 Nederland

BAG data uitgelegd: de complete gids over de officiële Nederlandse adres database

GeoRex Team20 maart 202514 min leestijd

Alles wat je moet weten over de Basisregistratie Adressen en Gebouwen (BAG): de structuur, objecttypen, actualiteit, en waarom het de beste bron is voor Nederlandse locatiedata.

De BAG (Basisregistratie Adressen en Gebouwen) is de ruggengraat van alle Nederlandse locatiedata. Als je werkt met adressen, gebouwen of geocoding in Nederland, kom je vroeg of laat in aanraking met de BAG. Maar wat is het precies? Hoe is het opgebouwd? En waarom is het zo belangrijk?

In deze uitgebreide gids nemen we je mee door alles wat je moet weten over de BAG: van de wettelijke basis tot praktische implementatie. Of je nu een ontwikkelaar bent die met adresdata werkt, of een data-analist die locatiegegevens verrijkt - na het lezen van dit artikel begrijp je waarom de BAG de gouden standaard is.

Wat is de BAG?

De Basisregistratie Adressen en Gebouwen is een van de tien officiële basisregistraties van de Nederlandse overheid. Deze registratie bevat gegevens over alle adressen en gebouwen in Nederland en wordt beheerd door gemeenten onder toezicht van het Kadaster.

Wettelijke basis

De BAG is vastgelegd in de Wet basisregistratie adressen en gebouwen (2008). Overheidsorganisaties zijn wettelijk verplicht de BAG te gebruiken - ze mogen geen eigen adresbestanden meer bijhouden.

Kerncijfers van de BAG

ObjecttypeAantal (circa)Beschrijving
Nummeraanduidingen9,8 miljoenUnieke adressen (huisnummer + postcode)
Verblijfsobjecten9,5 miljoenZelfstandige ruimtes (woningen, kantoren)
Panden10,5 miljoenFysieke gebouwen
Openbare ruimten320.000Straten, pleinen, wegen
Woonplaatsen2.467Officieel erkende plaatsnamen
Standplaatsen23.000Locaties voor woonwagens
Ligplaatsen11.000Locaties voor woonboten
Diagram van de BAG structuur met de verschillende objecttypen en hun relaties
De BAG bevat zeven objecttypen die samen een compleet beeld geven van alle adressen en gebouwen in Nederland

De zeven objecttypen van de BAG

De BAG bestaat uit zeven verschillende objecttypen die samen een hiërarchische structuur vormen. Het begrijpen van deze structuur is essentieel voor het correct interpreteren van BAG-data:

1. Woonplaats

Een woonplaats is een door het gemeentebestuur aangewezen gedeelte van het grondgebied van de gemeente. Nederland telt 2.467 officiële woonplaatsen. Belangrijk: een woonplaats is niet hetzelfde als een gemeente - één gemeente kan meerdere woonplaatsen bevatten.

2. Openbare ruimte

Een openbare ruimte is een door het bevoegde gemeentelijke orgaan benoemde buitenruimte. Dit zijn voornamelijk straten, maar ook pleinen, parken en waterwegen. Elke openbare ruimte ligt binnen één woonplaats.

openbare-ruimte-voorbeeld.json
{
"identificatie": "0363300000004052",
"naam": "Damrak",
"type": "Weg",
"status": "Naamgeving uitgegeven",
"woonplaatsIdentificatie": "3594",
"woonplaatsNaam": "Amsterdam"
}

3. Nummeraanduiding

De nummeraanduiding is wat we in dagelijks taalgebruik een "adres" noemen: de combinatie van huisnummer, eventuele toevoeging, postcode en de openbare ruimte waaraan het ligt. Dit is het meest gebruikte objecttype voor geocoding.

nummeraanduiding-voorbeeld.json
{
"identificatie": "0363200000467858",
"huisnummer": 1,
"huisletter": null,
"huisnummertoevoeging": null,
"postcode": "1012LG",
"openbareRuimteNaam": "Damrak",
"woonplaatsNaam": "Amsterdam",
"status": "Naamgeving uitgegeven"
}

4. Verblijfsobject

Een verblijfsobject is de kleinste eenheid waarin iemand kan wonen of werken. Het is een zelfstandige ruimte binnen een pand met een eigen toegang. Elk verblijfsobject heeft één of meer gebruiksdoelen (wonen, kantoor, winkel, etc.) en een oppervlakte.

GebruiksdoelBeschrijvingVoorbeelden
WoonfunctieBestemd voor bewoningAppartementen, huizen
BijeenkomstfunctieBijeenkomsten van mensenKerken, theaters
CelfunctieDwangverblijfGevangenissen
GezondheidszorgfunctieMedische verzorgingZiekenhuizen, klinieken
IndustriefunctieFabricageFabrieken, werkplaatsen
KantoorfunctieAdministratieKantoorgebouwen
LogiesfunctieTijdelijk verblijfHotels, pensions
OnderwijsfunctieOnderwijsScholen, universiteiten
SportfunctieSport beoefenenSportscholen, stadions
WinkelfunctieDetailhandelWinkels, supermarkten
Overige gebruiksfunctieOverige doeleindenParkeergarages

5. Pand

Een pand is de kleinste, bij de totstandkoming functioneel en bouwkundig-constructief zelfstandige eenheid. In gewone taal: een gebouw. Eén pand kan meerdere verblijfsobjecten bevatten (denk aan een flatgebouw met 100 appartementen).

Pand vs. Verblijfsobject

Een veelgemaakte fout is panden verwarren met verblijfsobjecten. Een pand is het fysieke gebouw, een verblijfsobject is een zelfstandige ruimte daarbinnen. Een woonhuis is vaak 1 pand met 1 verblijfsobject, maar een flat kan 1 pand zijn met 200 verblijfsobjecten.

6. Standplaats

Een standplaats is een formeel door de gemeente aangewezen terrein voor het plaatsen van een woonwagen. Nederland telt ongeveer 23.000 standplaatsen. Een standplaats heeft een eigen adres (nummeraanduiding) maar geen pand.

7. Ligplaats

Een ligplaats is een formeel aangewezen plaats in het water voor het afmeren van een woonboot. Er zijn ongeveer 11.000 ligplaatsen in Nederland, vooral in Amsterdam, Utrecht en andere watersteden. Net als standplaatsen hebben ligplaatsen een adres maar geen pand.

Hoe de BAG wordt bijgehouden

De BAG wordt gedecentraliseerd bijgehouden door alle 342 Nederlandse gemeenten. Elke gemeente is bronhouder voor de objecten binnen haar grenzen. Het Kadaster fungeert als Landelijke Voorziening (LV BAG) en verzamelt de gemeentelijke gegevens in één centrale database.

Diagram van de BAG dataflow van gemeenten naar het Kadaster en eindgebruikers
Gemeenten zijn bronhouder, het Kadaster verzamelt en distribueert de data

Het update-proces

  1. Mutatie bij gemeente: Bij nieuwbouw, verbouw, sloop of adreswijziging voert de gemeente een mutatie door
  2. Kwaliteitscontrole: De gemeentelijke BAG-applicatie valideert de gegevens
  3. Upload naar LV BAG: Binnen 4 werkdagen moet de mutatie bij het Kadaster zijn
  4. Verwerking door Kadaster: Het Kadaster verwerkt de mutatie in de landelijke voorziening
  5. Beschikbaar via API's: De gewijzigde data is direct beschikbaar via de BAG API

Actualiteit

De BAG is verrassend actueel. De meeste mutaties zijn binnen enkele dagen verwerkt. Bij grote nieuwbouwprojecten worden adressen vaak al vóór oplevering aangemaakt, zodat ze direct beschikbaar zijn voor postbezorging.

BAG vs. andere databronnen

Er zijn meerdere bronnen voor Nederlandse adresdata. Hoe verhoudt de BAG zich tot alternatieven?

Vergelijking van BAG met andere databronnen op actualiteit, nauwkeurigheid en dekking
De BAG scoort het hoogst op alle relevante criteria
AspectBAGPostNLGoogle MapsOpenStreetMap
Officiële statusWettelijk verplichtCommercieelCommercieelCommunity
ActualiteitDagelijksMaandelijksVariabelVariabel
Dekking NL100%~99%~98%~95%
NauwkeurigheidMeter-niveauPostcode-niveauVariabelVariabel
KostenGratis (open data)BetaaldBetaaldGratis
GebouwinformatieJa (uitgebreid)NeeBeperktBeperkt
Historische dataJaNeeNeeBeperkt

Waarom BAG de beste keuze is

  • Officieel en betrouwbaar: De enige bron met wettelijke status. Overheidsinstanties zijn verplicht BAG-data te gebruiken.
  • 100% dekking: Elk adres in Nederland zit in de BAG, van nieuwbouwwijken tot afgelegen boerderijen.
  • Nauwkeurige coördinaten: Coördinaten zijn op meter-niveau, niet postcode-centroïdes.
  • Rijke metadata: Bouwjaar, oppervlakte, gebruiksdoel, status - allemaal beschikbaar.
  • Open data: Gratis te gebruiken, ook voor commerciële doeleinden.
  • Historische data: Wijzigingen worden bijgehouden, je kunt terugkijken in de tijd.

BAG-identificatienummers begrijpen

Elk object in de BAG heeft een uniek 16-cijferig identificatienummer. Dit nummer bevat waardevolle informatie:

parse-bag-id.js
// BAG-identificatie: 0363010000567823
// Structuur: GGGGTTNNNNNNNNNN
function parseBagId(bagId) {
return {
gemeenteCode: bagId.substring(0, 4), // "0363" = Amsterdam
objectType: bagId.substring(4, 6), // "01" = Verblijfsobject
volgnummer: bagId.substring(6, 16) // "0000567823"
};
}
// Objecttype codes:
// 01 = Verblijfsobject
// 02 = Ligplaats
// 03 = Standplaats
// 10 = Pand
// 20 = Nummeraanduiding
// 30 = Openbare ruimte

BAG-ID als primaire sleutel

Gebruik het BAG-identificatienummer als primaire sleutel in je database. Het is gegarandeerd uniek en stabiel - veel betrouwbaarder dan postcode + huisnummer.

BAG-data gebruiken met de GeoRex API

GeoRex gebruikt de BAG als primaire databron en verrijkt deze met extra gegevens. Je kunt eenvoudig BAG-gegevens opvragen:

bag-lookup.js
// Token ophalen
const tokenResponse = await fetch('https://api.georex.nl/api/token', {
method: 'POST',
headers: { 'X-API-Key': 'gx_live_your_key' }
});
const { token } = await tokenResponse.json();
// Adres opzoeken met uitgebreide BAG-info
const response = await fetch(
`https://api.georex.nl/address?postcode=1012LG&huisnummer=1&token=${token}`
);
const data = await response.json();
if (data.features.length > 0) {
const props = data.features[0].properties;
console.log('Straat:', props.street); // "Damrak"
console.log('Huisnummer:', props.housenumber); // "1"
console.log('Postcode:', props.postcode); // "1012 LG"
console.log('Woonplaats:', props.city); // "Amsterdam"
console.log('Coördinaten:', data.features[0].geometry.coordinates);
}

Batch-verwerking van adressen

Voor het verwerken van grote aantallen adressen kun je de batch-endpoint gebruiken:

batch-bag-lookup.py
import requests
import time
def get_token(api_key: str) -> str:
"""Haal een API token op."""
response = requests.post(
'https://api.georex.nl/api/token',
headers={'X-API-Key': api_key}
)
return response.json()['token']
def batch_geocode(addresses: list, token: str) -> list:
"""
Geocodeer een batch adressen.
De GeoRex API ondersteunt tot 100 adressen per batch.
"""
results = []
for address in addresses:
response = requests.get(
'https://api.georex.nl/address',
params={
'postcode': address['postcode'],
'huisnummer': address['huisnummer'],
'token': token
}
)
if response.status_code == 200:
data = response.json()
if data['features']:
results.append({
'input': address,
'result': data['features'][0],
'success': True
})
else:
results.append({
'input': address,
'result': None,
'success': False,
'error': 'Adres niet gevonden'
})
# Rate limiting respecteren
time.sleep(0.1)
return results
# Gebruik
token = get_token('gx_live_your_key')
addresses = [
{'postcode': '1012LG', 'huisnummer': '1'},
{'postcode': '1017CT', 'huisnummer': '42'},
{'postcode': '3011AD', 'huisnummer': '100'}
]
results = batch_geocode(addresses, token)

Veelvoorkomende use cases

Adresvalidatie

Controleer of een ingevoerd adres daadwerkelijk bestaat in de BAG:

validate-address.js
async function validateAddress(postcode, huisnummer, token) {
const response = await fetch(
`https://api.georex.nl/address?postcode=${postcode}&huisnummer=${huisnummer}&token=${token}`
);
const data = await response.json();
if (data.features.length === 0) {
return {
valid: false,
error: 'Dit adres bestaat niet in de BAG'
};
}
const found = data.features[0].properties;
return {
valid: true,
normalized: {
street: found.street,
housenumber: found.housenumber,
postcode: found.postcode,
city: found.city
}
};
}
// Gebruik in een formulier
const result = await validateAddress('1012LG', '1', token);
if (!result.valid) {
showError('Ongeldig adres: ' + result.error);
} else {
// Gebruik het genormaliseerde adres
form.street.value = result.normalized.street;
form.city.value = result.normalized.city;
}

Data-verrijking

Verrijk je klantdatabase met locatiegegevens:

  • Coördinaten toevoegen: Voor kaartweergave en afstandsberekeningen
  • Adressen normaliseren: Consistente schrijfwijze (Singel vs singel)
  • Woonplaats/gemeente: Voor regionale analyses
  • Validatie markeren: Welke adressen zijn BAG-gevalideerd?

BAG-statussen begrijpen

Objecten in de BAG hebben een status die hun levenscyclus weergeeft. Bij geocoding is het belangrijk alleen actieve statussen te gebruiken:

StatusBetekenisGebruiken voor geocoding?
Naamgeving uitgegevenActief adresJa
Naamgeving ingetrokkenAdres bestaat niet meerNee
Bouw gestartNieuwbouw in aanbouwAfhankelijk van use case
Pand in gebruikActief gebouwJa
Pand geslooptGebouw is geslooptNee
Verblijfsobject in gebruikActieve woning/ruimteJa
Verblijfsobject ingetrokkenNiet meer in gebruikNee

Let op bij nieuwbouw

Adressen in nieuwbouwwijken hebben soms de status "Naamgeving uitgegeven" terwijl de woning nog niet is opgeleverd. De GeoRex API retourneert standaard alleen actieve adressen.

Veelgestelde vragen

Hoe actueel is de BAG?

Gemeenten zijn verplicht mutaties binnen 4 werkdagen door te voeren. In de praktijk zijn de meeste wijzigingen binnen 1-2 dagen verwerkt. De GeoRex API synchroniseert dagelijks met de landelijke voorziening.

Wat als een adres niet in de BAG staat?

Als een Nederlands adres niet in de BAG voorkomt, zijn er drie mogelijkheden: (1) het adres is foutief gespeld, (2) het is zeer recente nieuwbouw die nog niet is geregistreerd, of (3) het is een onofficieel adres (bijv. een bedrijfsnaam in plaats van straatnaam).

Kan ik de BAG zelf downloaden?

Ja, de BAG is open data. Je kunt de volledige dataset downloaden via PDOK (Publieke Dienstverlening Op de Kaart). Houd er rekening mee dat de ruwe dataset complex is en regelmatige updates vereist. Voor de meeste use cases is een API als GeoRex praktischer.

Samenvatting

De BAG is de officiële, meest complete en actuele bron voor Nederlandse adres- en gebouwdata. De belangrijkste punten:

  1. Wettelijke basis: De BAG is de enige officiële adresregistratie van Nederland
  2. Zeven objecttypen: Woonplaatsen, openbare ruimten, nummeraanduidingen, verblijfsobjecten, panden, standplaatsen en ligplaatsen
  3. Decentraal beheer: 342 gemeenten als bronhouder, Kadaster als centrale voorziening
  4. Hoge actualiteit: Mutaties worden binnen dagen verwerkt
  5. Open data: Gratis beschikbaar voor iedereen
  6. Ideaal voor geocoding: Combinatie van adressen én nauwkeurige coördinaten

Door de BAG als basis te gebruiken, garandeert GeoRex de meest betrouwbare geocoding resultaten voor Nederlandse adressen.

Aan de slag

Wil je zelf met BAG-data werken? Vraag een gratis API key aan en test de GeoRex API met je eigen adressen. De gratis tier biedt 1.000 requests per maand.

bagdataoverheidnederlandkadasteradressengebouwenopen-data
Delen:

Gerelateerde artikelen

Klaar om te beginnen met GeoRex?

Probeer onze geocoding API gratis en ontdek hoe eenvoudig adresverwerking kan zijn.

Cookie-instellingen

Wij gebruiken optionele analytische cookies om onze website te verbeteren. Deze cookies worden alleen geplaatst met uw expliciete toestemming. Meer informatie