getapi-nl BAG – Addresses and Buildings Register API
The BAG – Addresses and Buildings Register API from getapi-nl — 3 operation(s) for bag – addresses and buildings register.
The BAG – Addresses and Buildings Register API from getapi-nl — 3 operation(s) for bag – addresses and buildings register.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/getapi-nl:getapi-nl-bag-addresses-and-buildings-register-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: GetApi BAG – Addresses and Buildings Register API
version: 0.0.1
description: '## Authentication
All API endpoints require authentication. Include your API key in every request using **one** of the following methods:
**Option 1 — X-Api-Key header (recommended)**
```
X-Api-Key: ga_live_xxxxxxxxxxxxxxxxxxxx
```
**Option 2 — Bearer token**
```
Authorization: Bearer ga_live_xxxxxxxxxxxxxxxxxxxx
```
You can generate and manage API keys in your dashboard.
## AI & Agent Payments (x402)
Some endpoints support direct payments for AI agents via the **x402** protocol (https://www.x402.org).
No API key or account is needed. Send a normal request without key;
the server will respond with **HTTP 402** and a `PAYMENT-REQUIRED` header:
```
PAYMENT-REQUIRED:
```
This base64 string contains, among other things, `network`, `asset`, `amount`, and `payTo`.
Your agent signs an EIP-3009 *transferWithAuthorization* for the specified `amount` of USDC to that `payTo` address,
encodes the signature as base64, and resubmits the request with:
```
PAYMENT-SIGNATURE:
```
The server verifies the signature via a facilitator, provides the data, and settles the payment on-chain.
The success response includes a `PAYMENT-RESPONSE` header containing the transaction information.
A one-time `nonce` prevents replay attacks. Payments are made in USDC on **Base**;
the price is determined by the `credit_cost` of the endpoint.'
contact:
email: info@wdnoord.nl
x-guidance: 'GetAPI.nl is een Nederlandse API-platform voor lookups en validaties (postcode,
adres, kenteken, BTW, e-mail, KVK, IBAN, energiemaatwerk, overheidsdata). Elke
endpoint accepteert een API key via de X-Api-Key header of Authorization:
Bearer <key>.
Sommige endpoints zijn ook direct betaalbaar voor AI-agents via het x402-protocol
(https://www.x402.org) zonder account of API key: stuur een verzoek zonder key,
de server antwoordt met HTTP 402 en een PAYMENT-REQUIRED header (base64 JSON met
network, asset, amount, payTo). Teken daarna een EIP-3009 transferWithAuthorization
voor het gevraagde bedrag in USDC op Base en hertrail met een PAYMENT-SIGNATURE
header. De server verifieert, levert de data en settleert on-chain.
Tips voor agents:
- Lees eerst de PAYMENT-REQUIRED header van een 402-antwoord; die is leidend.
- Geef altijd de exact door de server gevraagde parameters mee.
- Een endpoint met een "x-payment-info" blok vereist betaling voor gebruik.'
servers:
- url: https://api.getapi.nl
description: GetAPI
security:
- ApiKeyAuth: []
- BearerAuth: []
tags:
- name: BAG – Addresses and Buildings Register
paths:
/v1/kadaster/bag/address:
get:
operationId: kadaster.bag.address
description: 'Returns full BAG address data for a Dutch address, including BAG IDs,
usage purposes, surface area, build year, status, and GPS coordinates.
Data is sourced from the PDOK BAG open API (Landelijke Voorziening BAG).
Results are cached for 24 hours. The upstream timeout is 8 seconds;
if PDOK is unavailable the endpoint returns HTTP 503.
Source: PDOK BAG'
summary: Address lookup by postcode and house number
tags:
- BAG – Addresses and Buildings Register
parameters:
- name: postcode
in: query
required: true
schema:
type: string
pattern: ^[1-9][0-9]{3}\s?[A-Za-z]{2}$
- name: house_number
in: query
required: true
schema:
type: integer
minimum: 1
maximum: 99999
- name: house_letter
in: query
schema:
type:
- string
- 'null'
pattern: ^[a-zA-Z]{1}$
- name: house_number_addition
in: query
schema:
type:
- string
- 'null'
pattern: ^[a-zA-Z0-9]{1,4}$
maxLength: 4
responses:
'200':
description: Address found
content:
application/json:
schema:
type: object
examples:
- found: true
address:
bag_nummeraanduiding_id: 0363200000218908
bag_verblijfsobject_id: 0363010000218908
bag_pand_ids:
- '0363100012165277'
bag_openbare_ruimte_id: '0363300000006316'
bag_woonplaats_id: '3594'
street: Damrak
short_name: Damrak
house_number: 1
house_letter: null
house_number_addition: null
postcode: 1012LG
city: Amsterdam
municipality: Amsterdam
address_line: Damrak 1
address_line_postal: 1012 LG AMSTERDAM
usage_purposes:
- retail
surface_area_m2: 312
build_year: 1900
status: in_use
type: residence
is_secondary_address: false
is_observed: false
in_investigation: null
document_date: '2019-11-22'
document_number: 19SZ2048
secondary_address_ids: []
occurrence: null
lat: 52.3745
lon: 4.8986
properties:
found:
type: boolean
address:
type: object
properties:
bag_nummeraanduiding_id:
type: string
bag_verblijfsobject_id:
type: string
bag_pand_ids:
type: array
items:
type: string
bag_openbare_ruimte_id:
type: string
bag_woonplaats_id:
type: string
street:
type:
- string
- 'null'
short_name:
type:
- string
- 'null'
house_number:
type: integer
house_letter:
type:
- string
- 'null'
house_number_addition:
type:
- string
- 'null'
postcode:
type: string
city:
type: string
municipality:
type: string
address_line:
type: string
address_line_postal:
type: string
usage_purposes:
type: array
items:
type: string
surface_area_m2:
type:
- integer
- 'null'
build_year:
type:
- integer
- 'null'
status:
type:
- string
- 'null'
type:
type:
- string
- 'null'
is_secondary_address:
type: boolean
is_observed:
type:
- boolean
- 'null'
in_investigation: []
document_date:
type:
- string
- 'null'
document_number:
type:
- string
- 'null'
secondary_address_ids:
type: array
items:
type: string
occurrence: []
lat:
type:
- number
- 'null'
lon:
type:
- number
- 'null'
required:
- bag_nummeraanduiding_id
- bag_verblijfsobject_id
- bag_pand_ids
- bag_openbare_ruimte_id
- bag_woonplaats_id
- street
- short_name
- house_number
- house_letter
- house_number_addition
- postcode
- city
- municipality
- address_line
- address_line_postal
- usage_purposes
- surface_area_m2
- build_year
- status
- type
- is_secondary_address
- is_observed
- in_investigation
- document_date
- document_number
- secondary_address_ids
- occurrence
- lat
- lon
required:
- found
- address
'422':
$ref: '#/components/responses/ValidationException'
'404':
description: Not found
content:
application/json:
schema:
type: object
examples:
- found: false
address: null
error: not_found
message: Niet gevonden.
properties:
found:
type: boolean
address:
type: 'null'
error:
type: string
message:
type: string
required:
- found
- address
- error
- message
'503':
description: Service temporarily unavailable
content:
application/json:
schema:
type: object
examples:
- found: false
address: null
error: upstream_unavailable
message: De brondata is tijdelijk niet beschikbaar. Probeer het later opnieuw.
properties:
found:
type: boolean
address:
type: 'null'
error:
type: string
message:
type: string
required:
- found
- address
- error
- message
'402':
description: Payment Required
x-payment-info:
price:
mode: fixed
currency: USD
amount: '0.010000'
protocols:
- x402: {}
/v1/kadaster/bag/address-suggest:
get:
operationId: kadaster.bag.address-suggest
description: 'Returns address suggestions for autocomplete functionality based on a partial query.
Useful for implementing address autocomplete in forms. Returns up to 10 suggestions
with full address details and BAG identifiers.
Results are cached for 1 hour.'
summary: Address autocomplete suggestions
tags:
- BAG – Addresses and Buildings Register
parameters:
- name: q
in: query
required: true
schema:
type: string
minLength: 2
maxLength: 100
- name: limit
in: query
schema:
type:
- integer
- 'null'
minimum: 1
maximum: 25
responses:
'200':
description: Address suggestions found
content:
application/json:
schema:
type: object
examples:
- suggestions:
- id: adr-1234567890123456
label: Damrak 1, 1012LG Amsterdam
type: adres
nummeraanduiding_id: '1234567890123456'
verblijfsobject_id: '1234567890123456'
postcode: 1012LG
house_number: 1
- id: adr-1234567890123457
label: Damrak 2, 1012LG Amsterdam
type: adres
nummeraanduiding_id: '1234567890123457'
verblijfsobject_id: '1234567890123457'
postcode: 1012LG
house_number: 2
properties:
suggestions:
type: array
items:
type: object
properties:
id:
type: string
label:
type: string
type:
type: string
nummeraanduiding_id:
type:
- string
- 'null'
verblijfsobject_id:
type:
- string
- 'null'
postcode:
type:
- string
- 'null'
house_number:
type:
- integer
- 'null'
required:
- id
- label
- type
- nummeraanduiding_id
- verblijfsobject_id
- postcode
- house_number
required:
- suggestions
'422':
$ref: '#/components/responses/ValidationException'
'402':
description: Payment Required
x-payment-info:
price:
mode: fixed
currency: USD
amount: '0.010000'
protocols:
- x402: {}
/v1/kadaster/bag/id:
get:
operationId: kadaster.bag.id
description: 'Returns full BAG address data for a given BAG nummeraanduiding ID.
The nummeraanduiding ID is a 16-digit identifier from the BAG register.
Data is sourced from the PDOK BAG open API (Landelijke Voorziening BAG).
Results are cached for 24 hours. The upstream timeout is 8 seconds;
if PDOK is unavailable the endpoint returns HTTP 503.
Source: PDOK BAG'
summary: Address lookup by nummeraanduiding ID
tags:
- BAG – Addresses and Buildings Register
parameters:
- name: id
in: query
required: true
schema:
type: string
pattern: ^[0-9]{16}$
responses:
'200':
description: Address found
content:
application/json:
schema:
type: object
examples:
- found: true
address:
bag_nummeraanduiding_id: 0363200000218908
bag_verblijfsobject_id: 0363010000218908
bag_pand_ids:
- '0363100012165277'
bag_openbare_ruimte_id: '0363300000006316'
bag_woonplaats_id: '3594'
street: Damrak
short_name: Damrak
house_number: 1
house_letter: null
house_number_addition: null
postcode: 1012LG
city: Amsterdam
municipality: Amsterdam
address_line: Damrak 1
address_line_postal: 1012 LG AMSTERDAM
usage_purposes:
- retail
surface_area_m2: 312
build_year: 1900
status: in_use
type: residence
is_secondary_address: false
is_observed: false
in_investigation: null
document_date: '2019-11-22'
document_number: 19SZ2048
secondary_address_ids: []
occurrence: null
lat: 52.3745
lon: 4.8986
properties:
found:
type: boolean
address:
type: object
properties:
bag_nummeraanduiding_id:
type: string
bag_verblijfsobject_id:
type: string
bag_pand_ids:
type: array
items:
type: string
bag_openbare_ruimte_id:
type: string
bag_woonplaats_id:
type: string
street:
type:
- string
- 'null'
short_name:
type:
- string
- 'null'
house_number:
type: integer
house_letter:
type:
- string
- 'null'
house_number_addition:
type:
- string
- 'null'
postcode:
type: string
city:
type: string
municipality:
type: string
address_line:
type: string
address_line_postal:
type: string
usage_purposes:
type: array
items:
type: string
surface_area_m2:
type:
- integer
- 'null'
build_year:
type:
- integer
- 'null'
status:
type:
- string
- 'null'
type:
type:
- string
- 'null'
is_secondary_address:
type: boolean
is_observed:
type:
- boolean
- 'null'
in_investigation: []
document_date:
type:
- string
- 'null'
document_number:
type:
- string
- 'null'
secondary_address_ids:
type: array
items:
type: string
occurrence: []
lat:
type:
- number
- 'null'
lon:
type:
- number
- 'null'
required:
- bag_nummeraanduiding_id
- bag_verblijfsobject_id
- bag_pand_ids
- bag_openbare_ruimte_id
- bag_woonplaats_id
- street
- short_name
- house_number
- house_letter
- house_number_addition
- postcode
- city
- municipality
- address_line
- address_line_postal
- usage_purposes
- surface_area_m2
- build_year
- status
- type
- is_secondary_address
- is_observed
- in_investigation
- document_date
- document_number
- secondary_address_ids
- occurrence
- lat
- lon
required:
- found
- address
'422':
$ref: '#/components/responses/ValidationException'
'404':
description: Not found
content:
application/json:
schema:
type: object
examples:
- found: false
address: null
error: not_found
message: Niet gevonden.
properties:
found:
type: boolean
address:
type: 'null'
error:
type: string
message:
type: string
required:
- found
- address
- error
- message
'503':
description: Service temporarily unavailable
content:
application/json:
schema:
type: object
examples:
- found: false
address: null
error: upstream_unavailable
message: De brondata is tijdelijk niet beschikbaar. Probeer het later opnieuw.
properties:
found:
type: boolean
address:
type: 'null'
error:
type: string
message:
type: string
required:
- found
- address
- error
- message
'402':
description: Payment Required
x-payment-info:
price:
mode: fixed
currency: USD
amount: '0.010000'
protocols:
- x402: {}
components:
responses:
ValidationException:
description: Unprocessable content
content:
application/json:
schema:
type: object
properties:
error:
type: string
description: Machine-readable error code.
message:
type: string
description: Human-readable error message.
errors:
type: object
description: A detailed description of each field that failed validation.
additionalProperties:
type: array
items:
type: string
required:
- error
- message
- errors
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-Api-Key
BearerAuth:
type: http
scheme: bearer