Bouw met GeoRex
Integreer Nederlandse adres autocompletion in minuten. Eenvoudige REST API, uitgebreide documentatie, en kant-en-klare code voorbeelden.
Snel Starten
In 3 stappen aan de slag met GeoRex
API Key aanvragen
Maak een gratis account aan en ontvang direct je API key.
Integreer de API
Gebruik onze REST endpoints met je favoriete programmeertaal.
Live!
Geniet van razendsnelle adres autocompletion in je applicatie.
Base URL
Alle API verzoeken naar:
https://api.georex.nlAPI Endpoints
Vier krachtige endpoints voor al je geocoding behoeften
/autocompleteReal-time address suggestions as users type
/geocodeConvert address to coordinates
/reverseConvert coordinates to address
/addressLookup address by postcode + house number
Code Voorbeelden
Kopieer en plak - direct aan de slag
// Get token from your backend (keeps API key secret)let token = await fetch('/api/georex-token') .then(r => r.json()).then(d => d.token); // Use token in API requestsconst response = await fetch( `https://api.georex.nl/autocomplete?q=damrak&token=${token}`);const data = await response.json();console.log(data.features); // Refresh token every 9 minutes (before 10 min expiry)setInterval(async () => { token = await fetch('/api/georex-token') .then(r => r.json()).then(d => d.token);}, 9 * 60 * 1000);GeoJSON Response
Alle responses volgen het GeoJSON standaard formaat met uitgebreide adres properties.
- Coördinaten in WGS84 formaat
- Volledige adres componenten
- Type indicatie (straat, stad, etc.)
- Bounding box voor kaart zoom
{ "type": "FeatureCollection", "features": [{ "type": "Feature", "geometry": { "type": "Point", "coordinates": [4.8951679, 52.3702157] }, "properties": { "osm_id": 271110189, "osm_type": "R", "name": "Amsterdam", "city": "Amsterdam", "state": "Noord-Holland", "country": "Nederland", "countrycode": "NL", "type": "city", "extent": [4.72, 52.43, 5.07, 52.27] } }]}# Step 1: Get token (only endpoint using X-API-Key)
curl -X POST -H "X-API-Key: gx_live_your_key" \
"https://api.georex.nl/api/token"
# Response: {"token": "grx_...", "expires_in": 600}
# Step 2: Use token in ALL API requests
curl "https://api.georex.nl/autocomplete?q=amsterdam&token=TOKEN"
curl "https://api.georex.nl/geocode?q=Dam+1&token=TOKEN"
curl "https://api.georex.nl/address?postcode=1012AB&token=TOKEN"
# Refresh token every 9 minutes (before 10 min expiry)Token-Based Authenticatie
POST naar /api/token met je API key in de X-API-Key header om een token te krijgen. Gebruik dit token in alle API requests als ?token= parameter. Tokens zijn 10 minuten geldig.
Krijg je API KeyKaart Tiles
Naast de geocoding API bieden we ook een tile server voor kaartweergave.
Tiles Base URL
Vector tiles endpoint:
https://tiles.georex.nlTile URL Formaat
https://tiles.georex.nl/{style}/{z}/{x}/{y}.pbf{style}- Kaartstijl (bijv. basic, bright){z}- Zoom niveau (0-20){x}- X tile coördinaat{y}- Y tile coördinaat
MapLibre GL JS Voorbeeld
const map = new maplibregl.Map({ container: 'map', style: 'https://tiles.georex.nl/styles/basic/style.json', center: [4.9, 52.37], zoom: 10});Rate Limiting
Om eerlijk gebruik te garanderen, passen we rate limits toe op API verzoeken.
Free
Starter
Professional
Enterprise
Rate Limit Headers
Elke API response bevat headers met informatie over je huidige rate limit status:
X-RateLimit-Limit: 200X-RateLimit-Remaining: 195X-RateLimit-Reset: 1704067200Error Responses
De API retourneert consistente error responses in JSON formaat.
Bad Request
Ongeldige request parameters
{ "error": "Bad Request", "message": "Missing required parameter: q"}Unauthorized
Ontbrekend of ongeldig token
{ "error": "Unauthorized", "message": "Invalid or expired token"}Forbidden
Geen toegang tot deze resource
{ "error": "Forbidden", "message": "API key does not have access to this endpoint"}Too Many Requests
Rate limit of quota overschreden
{ "error": "rate_limited", "message": "Hourly rate limit exceeded. Please slow down.", "limit": 500, "remaining": 0, "retry_after": 1847, "upgrade": "https://georex.nl/pricing", "docs": "https://georex.nl/docs#rate-limits"}Internal Server Error
Server fout - neem contact op als dit aanhoudt
{ "error": "Internal Server Error", "message": "An unexpected error occurred"}Voorbeeld: Error Handling
Implementeer robuuste error handling met automatische retry voor rate limits.
async function fetchWithRetry(url, options = {}, maxRetries = 3) { for (let attempt = 0; attempt < maxRetries; attempt++) { const response = await fetch(url, options); // Success - return data if (response.ok) { return await response.json(); } // Handle different error codes switch (response.status) { case 401: // Token expired - refresh and retry const newToken = await refreshToken(); url = url.replace(/token=[^&]+/, `token=${newToken}`); continue; case 429: // Rate limited - wait and retry const data = await response.json(); const waitTime = data.retry_after || 60; console.log(`Rate limited. Waiting ${waitTime}s...`); await new Promise(r => setTimeout(r, waitTime * 1000)); continue; case 400: // Bad request - don't retry, fix the request throw new Error(`Bad request: ${(await response.json()).message}`); case 500: // Server error - retry with backoff await new Promise(r => setTimeout(r, Math.pow(2, attempt) * 1000)); continue; default: throw new Error(`Request failed: ${response.status}`); } } throw new Error('Max retries exceeded');} // Usagetry { const results = await fetchWithRetry( `https://api.georex.nl/autocomplete?q=amsterdam&token=${token}` ); console.log(results.features);} catch (error) { console.error('Failed:', error.message);}Klaar om te beginnen?
Start gratis met 1.000 lookups per maand. Geen creditcard nodig.