Skip to main content
Voseno
Back to Blog
Data
7 min read

Understanding BAG: The Dutch National Address System

BAG is the authoritative registry behind every Dutch address. 9.9 million objects, updated daily, freely accessible. Here is how its hierarchy works and why the verblijfsobject ID is the most important identifier in Dutch PropTech.

If you work with Dutch property data, you will encounter the BAG sooner or later. The Basisregistratie Adressen en Gebouwen (Basic Registration of Addresses and Buildings) is the Netherlands' official national registry of all addresses and buildings. It is maintained by municipalities, coordinated by Kadaster, and freely accessible through PDOK. Understanding how it works is essential for anyone building property applications for the Dutch market.

What BAG contains

BAG registers over 9.9 million objects across the Netherlands. It is updated daily by municipalities and covers every address in the country, from apartments in Amsterdam-Zuid to farmhouses in rural Friesland. The registry has been operational since 2009 and underwent a major schema update with BAG 2.0 in 2023, which improved data quality and added lifecycle status tracking.

The data includes: official address components (street name, house number, house number addition, postcode, city), building geometry as polygons, construction year, building purpose classification, and current status (in use, under construction, demolished, or permit granted).

The BAG hierarchy

BAG is not a flat list of addresses. It is a hierarchy of related objects, and understanding this hierarchy is important for correct data usage.

  • Pand (building): the physical structure. Has a geometry polygon and construction year. One pand can contain many dwellings.
  • Verblijfsobject (dwelling unit): a unit suitable for residence or work within a pand. This is what most people think of as 'a property.' Each gets a unique 16-digit identifier.
  • Nummeraanduiding (address designation): the formal address assigned to a verblijfsobject. Contains street, house number, addition, postcode, and city.
  • Standplaats and Ligplaats: locations for mobile homes and houseboats respectively. These are not verblijfsobjecten but do get nummeraanduidingen.

A typical apartment building illustrates this well. One pand (the building) contains, say, 24 verblijfsobjecten (the individual apartments), each with its own nummeraanduiding (Keizersgracht 100-A through 100-X).

The verblijfsobject ID: the join key

The 16-digit verblijfsobject identification number is the single most valuable identifier in Dutch property data. It is stable across ownership changes, renovations, and re-listings. When a property sells, the verblijfsobject ID does not change. When it gets a new energy label, the same ID applies. When it appears on Funda, Pararius, and three broker websites simultaneously, they are all referring to the same verblijfsobject.

This stability makes the verblijfsobject ID the ideal join key for linking data across systems. You can connect: listing data from portals, WOZ valuations from municipalities, energy labels from EP-Online, transaction history from Kadaster BRK, and neighbourhood statistics from CBS. All on a single, permanent ID.

Tip

Voseno's Aggregator API resolves every listing to its BAG verblijfsobject ID where possible via the PDOK geocoder. This means you can use our listing feed as your entry point and join outward to any other Dutch registry.

Accessing BAG data

BAG data is freely available through PDOK (Publieke Dienstverlening Op de Kaart). You can query individual addresses via the PDOK Locatieserver API, download full extracts as GML or CSV, or use the BAG WFS/WMS services for geospatial applications. There are no fees and no registration required for the API.

bash
# Look up a BAG verblijfsobject by address
curl "https://api.pdok.nl/bzk/locatieserver/search/v3_1/free?q=Keizersgracht+100+Amsterdam&fq=type:adres"

Limitations to be aware of

Not everything in BAG is a verblijfsobject. Garages, storage units, and sheds are registered as panden but typically lack verblijfsobjecten because they are not intended for habitation. This means you cannot always resolve every address to a verblijfsobject ID.

Address additions (toevoegingen) can also cause complications. A house number addition like '3-hoog' (third floor) or 'A-bis' follows Dutch conventions that vary by municipality. BAG normalizes these, but source data from listing portals often does not match the BAG format exactly, which is why fuzzy address matching remains necessary.

BAG tells you what exists and where, but not what it is worth, who owns it, or whether it is currently for sale. For that, you need WOZ, Kadaster, and listing data respectively.