bagviewer.kadaster.nl APIbagviewer.kadaster.nl ↗
Access Dutch BAG registry data: address autocomplete, building details, residential unit info, historical records, and coordinate-based lookup via 8 endpoints.
curl -X GET 'https://api.parse.bot/scraper/aa9c1132-257f-455d-b9ef-51f44e637f01/search_address_autocomplete?query=Dam+1%2C+Amsterdam' \ -H 'X-API-Key: $PARSE_API_KEY'
Autocomplete/typeahead search for addresses, cities, and BAG numbers using the PDOK Locatieserver API. Returns up to 10 matching address suggestions from the BAG registry.
| Param | Type | Description |
|---|---|---|
| queryrequired | string | Search keyword for address lookup (e.g. 'Dam 1, Amsterdam', 'Kalverstraat 10, Amsterdam'). |
{
"type": "object",
"fields": {
"docs": "array of address suggestion objects with fields like weergavenaam, id, straatnaam, postcode, woonplaatsnaam, adresseerbaarobject_id, nummeraanduiding_id, centroide_rd, centroide_ll",
"numFound": "integer total number of matching results"
},
"sample": {
"data": {
"docs": [
{
"id": "adr-2a8dc1af055da20b8bcdc8e4dbda1eaa",
"bron": "BAG",
"type": "adres",
"postcode": "1012JS",
"huisnummer": 1,
"straatnaam": "Dam",
"centroide_ll": "POINT(4.8937175 52.37329259)",
"centroide_rd": "POINT(121394 487383)",
"weergavenaam": "Dam 1, 1012JS Amsterdam",
"woonplaatsnaam": "Amsterdam",
"nummeraanduiding_id": "0363200003761447",
"adresseerbaarobject_id": "0363010003761571"
}
],
"start": 0,
"maxScore": 7.6,
"numFound": 371,
"numFoundExact": true
},
"status": "success"
}
}About the bagviewer.kadaster.nl API
This API exposes 8 endpoints covering the Dutch National Address and Building Registry (BAG), operated by Kadaster. You can search and resolve addresses using search_address_autocomplete, retrieve full building records including GeoJSON geometry and construction year via get_pand_details, inspect residential unit surface area and usage purposes through get_verblijfsobject_details, and trace the complete lifecycle of any BAG object with get_object_history. All 16-digit BAG identification numbers are supported across object types.
Address Search and Resolution
The search_address_autocomplete endpoint accepts a free-text query parameter (e.g. 'Dam 1, Amsterdam') and returns up to 10 address suggestions from the BAG registry, each including weergavenaam, straatnaam, postcode, woonplaatsnaam, and an adresseerbaarobject_id. The id field from those results feeds directly into lookup_address_by_id, which resolves a single full address record by its PDOK locatieserver ID. For structured lookups, advanced_search accepts discrete woonplaats (required), straat, and huisnummer parameters and returns a docs array with numFound.
Building and Unit Detail
get_pand_details takes a 16-digit pand_id and returns the building's oorspronkelijkBouwjaar (original construction year), status, documentdatum, and a geometrie field containing a GeoJSON Polygon in the Dutch RD coordinate system. get_verblijfsobject_details covers residential units: it returns oppervlakte (surface area in m²), a gebruiksdoelen array listing usage purposes, status, and HAL _links pointing to the associated main address (heeftAlsHoofdAdres) and parent building (maaktDeelUitVan). get_object_summary combines these views and returns an _embedded object with nested address and building sub-objects alongside the verblijfsobject record.
Coordinate Search and History
search_by_coordinates accepts RD system x and y coordinates and returns an _embedded.panden array of building objects near that point, each containing identificatie, geometrie, oorspronkelijkBouwjaar, and status. This is useful for map-click workflows where you have a screen or map coordinate rather than an address string.
get_object_history requires both an object_id and an object_type (panden, verblijfsobjecten, or nummeraanduidingen) and returns _embedded.voorkomens, an ordered array of historical versions. Each voorkomen captures the full object state at that revision — geometry, status, and document references — making it possible to reconstruct how a building or address changed over time.
- Auto-suggest Dutch address input fields using
search_address_autocompleteresults includingpostcodeandwoonplaatsnaam. - Enrich property records with building age and footprint by calling
get_pand_detailsfor theoorspronkelijkBouwjaarand GeoJSON geometry. - Validate and normalize Dutch addresses in CRM or logistics systems using
lookup_address_by_idfor canonical BAG records. - Display residential unit surface area and usage classification on real estate listings via
get_verblijfsobject_detailsoppervlakteandgebruiksdoelenfields. - Audit address and building status changes for compliance or due diligence using
get_object_historyvoorkomens. - Identify buildings at a clicked map location by passing RD coordinates to
search_by_coordinates. - Build structured address search forms for Dutch municipalities using
advanced_searchwithwoonplaats,straat, andhuisnummerinputs.
| Tier | Price | Credits/month | Rate limit |
|---|---|---|---|
| Free | $0/mo | 100 | 5 req/min |
| Hobby | $30/mo | 1,000 | 20 req/min |
| Developer | $100/mo | 5,000 | 250 req/min |
One credit = one API call regardless of which marketplace API you call. Exceeding the rate limit returns a 429 response. Authenticate with the X-API-Key header.
Does Kadaster offer an official developer API for BAG data?+
What coordinate system does `search_by_coordinates` use, and can I pass WGS84 lat/lon?+
x and y values — for example, x=121394 and y=487383. WGS84 latitude/longitude is not accepted directly. You would need to convert coordinates before calling the endpoint. You can fork the API on Parse and revise it to add a conversion step or accept WGS84 inputs.What does `get_object_history` return, and which object types are supported?+
_embedded.voorkomens, an array where each entry is a complete snapshot of the object at a specific point in its lifecycle — including geometry, status, and document references. Supported object_type values are panden, verblijfsobjecten, and nummeraanduidingen. Standplaatsen and ligplaatsen history are not currently covered. You can fork the API on Parse and revise it to add those object types.