Deze API biedt toegang tot BAG (Basisregistratie Adressen en Gebouwen) adresgegevens. Er zijn twee manieren om de data te benaderen:
Alle API-verzoeken vereisen authenticatie met een API-sleutel die moet worden opgenomen in de Authorization header.
Authorization: Bearer YOUR_API_KEY
Neem contact op met de beheerder om een API-sleutel aan te vragen.
// JavaScript voorbeeld met authenticatie
fetch('/api/addresses/lookup?postcode=1234AB&huisnummer=10', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
})
.then(response => response.json())
.then(data => console.log(data));
Zoek adressen op basis van postcode en huisnummer.
GET /api/addresses/lookup?postcode={postcode}&huisnummer={huisnummer}
| Parameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
| postcode | string | Ja | Nederlandse postcode (bijv. "1234AB" of "1234 AB") |
| huisnummer | integer | Ja | Huisnummer (bijv. 10) |
GET /api/addresses/lookup?postcode=1234AB&huisnummer=10
{
"success": true,
"count": 2,
"data": [
{
"nummeraanduiding_id": "0123456789",
"postcode": "1234AB",
"huisnummer": 10,
"huisletter": null,
"huisnummertoevoeging": null,
"straat": "Voorbeeldstraat",
"woonplaats": "Amsterdam",
"oppervlakte": 120,
"gebruiksdoel": ["woonfunctie"],
"oorspronkelijkBouwjaar": 1980,
"latitude": 52.123456,
"longitude": 4.123456,
"rd_x": 12345.678,
"rd_y": 12345.678,
"is_ligplaats": false,
"is_standplaats": false,
"is_verblijfsobject": true,
"status": "in gebruik",
"nummeraanduiding_status": "naamgeving uitgegeven",
"object_status": "in gebruik",
"adres_status": "in gebruik",
"is_bruikbaar": true,
"begindatum": "1980-01-01",
"einddatum": null,
"object_id": "NL.IMBAG.VERBLIJFSOBJECT.0123456789"
},
{
"nummeraanduiding_id": "0123456790",
"postcode": "1234AB",
"huisnummer": 10,
"huisletter": "A",
"huisnummertoevoeging": null,
"straat": "Voorbeeldstraat",
"woonplaats": "Amsterdam",
"oppervlakte": 90,
"gebruiksdoel": ["woonfunctie"],
"oorspronkelijkBouwjaar": 1980,
"latitude": 52.123457,
"longitude": 4.123457,
"rd_x": 12345.679,
"rd_y": 12345.679,
"is_ligplaats": false,
"is_standplaats": false,
"is_verblijfsobject": true,
"status": "in gebruik",
"nummeraanduiding_status": "naamgeving uitgegeven",
"object_status": "in gebruik",
"adres_status": "in gebruik",
"is_bruikbaar": true,
"begindatum": "1980-01-01",
"einddatum": null,
"object_id": "NL.IMBAG.VERBLIJFSOBJECT.0123456790"
}
]
}
Haal meerdere adressen op met verschillende filteropties.
POST /api/graphql
Content-Type: application/json Authorization: Bearer YOUR_API_KEY x-apollo-operation-name: YourOperationName
{
"query": "query BulkAddressQuery($input: BulkAddressInput!) { bulkAddresses(input: $input) { data { nummeraanduiding_id postcode huisnummer huisletter huisnummertoevoeging straat woonplaats } meta { total page limit totalPages } } }",
"variables": {
"input": {
"postcodeRange": {
"from": "1234AA",
"to": "1234ZZ"
},
"limit": 100,
"offset": 0
}
}
}
| Parameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
| postcodes | string[] | Nee | Lijst van postcodes om op te filteren (exacte match) |
| postcodeRange | object | Nee | Bereik van postcodes (inclusief) |
| city | string | Nee | Woonplaats (gedeeltelijke match) |
| straat | string | Nee | Straatnaam (gedeeltelijke match) |
| minBouwjaar | integer | Nee | Minimum bouwjaar |
| maxBouwjaar | integer | Nee | Maximum bouwjaar |
| gebruiksdoel | string | Nee | Gebruiksdoel (bijv. "woonfunctie") |
| limit | integer | Nee | Maximum aantal resultaten (standaard: 1000, max: 5000) |
| offset | integer | Nee | Paginering offset (standaard: 0) |
Om eerlijk gebruik van de API te garanderen, gelden de volgende rate limits:
Als je deze limieten overschrijdt, ontvang je een 429 (Too Many Requests) response met een Retry-After header.
De API retourneert standaard HTTP-statuscodes:
{
"success": false,
"error": "Unauthorized",
"message": "Valid API key required"
}
{
"errors": [
{
"message": "This operation has been blocked as a potential Cross-Site Request Forgery (CSRF). Please either specify a 'content-type' header or provide a non-empty value for one of the following headers: x-apollo-operation-name, apollo-require-preflight",
"extensions": {
"code": "BAD_REQUEST"
}
}
]
}
{
"success": false,
"error": "Too many requests",
"message": "Rate limit exceeded. Please try again later."
}
// REST API voorbeeld
fetch('/api/addresses/lookup?postcode=1234AB&huisnummer=10', {
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
// GraphQL API voorbeeld
fetch('/api/graphql', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY',
'x-apollo-operation-name': 'BulkAddressQuery'
},
body: JSON.stringify({
query: `query BulkAddressQuery($input: BulkAddressInput!) {
bulkAddresses(input: $input) {
data {
nummeraanduiding_id
postcode
huisnummer
straat
woonplaats
}
meta {
total
page
limit
totalPages
}
}
}`,
variables: {
input: {
city: "Amsterdam",
limit: 10
}
}
})
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
import requests
# REST API voorbeeld
headers = {
'Authorization': 'Bearer YOUR_API_KEY'
}
response = requests.get('https://jouw-domein.nl/api/addresses/lookup',
params={
'postcode': '1234AB',
'huisnummer': 10
},
headers=headers
)
data = response.json()
print(data)
# GraphQL API voorbeeld
query = """
query BulkAddressQuery($input: BulkAddressInput!) {
bulkAddresses(input: $input) {
data {
nummeraanduiding_id
postcode
huisnummer
straat
woonplaats
}
meta {
total
page
limit
totalPages
}
}
}
"""
variables = {
'input': {
'city': 'Amsterdam',
'limit': 10
}
}
headers = {
'Content-Type': 'application/json',
'Authorization': 'Bearer YOUR_API_KEY',
'x-apollo-operation-name': 'BulkAddressQuery'
}
response = requests.post('https://jouw-domein.nl/api/graphql',
json={
'query': query,
'variables': variables
},
headers=headers
)
data = response.json()
print(data)
<?php
// REST API voorbeeld
$opts = [
'http' => [
'header' => "Authorization: Bearer YOUR_API_KEY
"
]
];
$context = stream_context_create($opts);
$url = 'https://jouw-domein.nl/api/addresses/lookup?postcode=1234AB&huisnummer=10';
$response = file_get_contents($url, false, $context);
$data = json_decode($response, true);
print_r($data);
// GraphQL API voorbeeld
$url = 'https://jouw-domein.nl/api/graphql';
$query = '
query BulkAddressQuery($input: BulkAddressInput!) {
bulkAddresses(input: $input) {
data {
nummeraanduiding_id
postcode
huisnummer
straat
woonplaats
}
meta {
total
page
limit
totalPages
}
}
}
';
$variables = [
'input' => [
'city' => 'Amsterdam',
'limit' => 10
]
];
$data = [
'query' => $query,
'variables' => $variables
];
$options = [
'http' => [
'header' => "Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
x-apollo-operation-name: BulkAddressQuery
",
'method' => 'POST',
'content' => json_encode($data)
]
];
$context = stream_context_create($options);
$response = file_get_contents($url, false, $context);
$result = json_decode($response, true);
print_r($result);
?>
http://localhost:3000/api/addresses/lookup?postcode=1234AB&huisnummer=10http://localhost:3000/api/graphqlContent-Type: application/jsonx-apollo-operation-name: BulkAddressQuery{
"query": query BulkAddressQuery($input: BulkAddressInput!) {
bulkAddresses(input: $input) {
data {
nummeraanduiding_id
postcode
huisnummer
huisletter
huisnummertoevoeging
straat
woonplaats
}
meta {
total
page
limit
totalPages
}
}
}
"variables": {
{
"input": {
"postcodeRange": {
"from": "1234AA",
"to": "1234ZZ"
},
"limit": 100,
"offset": 0
}
}
}