BAG data gebruiken in je applicatie
De Basisregistratie Adressen en Gebouwen (BAG) bevat essentiële informatie over elk gebouw in Nederland. In deze handleiding laten we zien hoe je deze data kunt integreren in je applicatie.
Wat kun je met BAG data?
Met BAG data kun je onder andere:
- Adres validatie - Controleer of een adres bestaat en correct is
- Gebouwinformatie - Toon bouwjaar, oppervlakte en status
- Geocoding - Vind coördinaten bij een adres
- Reverse geocoding - Vind adressen bij coördinaten
Aan de slag met de API
Stap 1: API key verkrijgen
Registreer eerst voor een gratis account om een API key te ontvangen.
Stap 2: Je eerste request
Hier is een eenvoudig voorbeeld om gebouwinformatie op te halen:
const API_KEY = 'your_api_key_here';
async function getBuilding(bagId) {
const response = await fetch(
`https://api.opendataapi.nl/v1/buildings/${bagId}`,
{
headers: {
'Authorization': `Bearer ${API_KEY}`,
'Content-Type': 'application/json'
}
}
);
return response.json();
}
// Voorbeeld gebruik
const building = await getBuilding('0363100012168052');
console.log(`Bouwjaar: ${building.bouwjaar}`);
console.log(`Oppervlakte: ${building.oppervlakte} m²`);
Stap 3: Zoeken op adres
Je kunt ook zoeken op adresgegevens:
async function searchByAddress(postcode, huisnummer) {
const params = new URLSearchParams({
postcode,
huisnummer
});
const response = await fetch(
`https://api.opendataapi.nl/v1/buildings/search?${params}`,
{
headers: {
'Authorization': `Bearer ${API_KEY}`
}
}
);
const data = await response.json();
return data.results;
}
// Zoek gebouwen op een specifiek adres
const results = await searchByAddress('1012JS', '1');
Python voorbeeld
Voor Python gebruikers:
import requests
import os
API_KEY = os.environ.get('OPENDATAAPI_KEY')
BASE_URL = 'https://api.opendataapi.nl/v1'
def get_building(bag_id: str) -> dict:
response = requests.get(
f'{BASE_URL}/buildings/{bag_id}',
headers={'Authorization': f'Bearer {API_KEY}'}
)
response.raise_for_status()
return response.json()
# Gebruik
building = get_building('0363100012168052')
print(f"Adres: {building.get('adres')}")
Best practices
- Cache responses - BAG data verandert niet vaak, dus cache waar mogelijk
- Error handling - Implementeer goede foutafhandeling voor API errors
- Rate limiting - Respecteer de rate limits van je plan
- Server-side calls - Maak API calls vanaf je server, niet de browser
Volgende stappen
Nu je de basis kent, kun je verder leren over:
Heb je vragen? Neem contact met ons op!