One REST API for all of Denmark's address stack.

2.4M access addresses · 1.4M full addresses · 113,000 street segments · 99 municipalities · 1,089 postcodes · 2,097 parishes — all available via one endpoint per task. JSON, drop-in DAWA format, free up to 1,000 calls/day.

What you get access to

🔎 Autocomplete

Typo-tolerant search-as-you-type. Meilisearch-powered. P99 < 50 ms. Works with Danish characters (æ, ø, å) and abbreviations.

✅ Validation

Address cleansing · category A/B/C scoring like DAWA. Returns the top match even with typos. Both GET and POST.

🎯 Lookup

Look up by UUID, postcode, municipality code, street code. Pagination (side, per_side) like DAWA.

🌍 Geocoding

Forward (address → coordinate) and reverse (GPS → address). WGS84 and ETRS89/UTM32N (EPSG:25832).

🏢 BBR enrichment

35 fields per building · 12 fields per unit · 120+ usage codes. Add ?include=bbr to any address call.

🗺 DAGI areas

Parish, police district, court district, region, constituency, national part. ?include=dagi — all 10 areas in one call.

Data catalogue — what we have right now

DatasetCountEndpointStatus
Access addresses2 416 787/adgangsadresser✓ Live
Full addresses1 465 200/adresser✓ Live
Street segments113 796/vejstykker✓ Live
Postcodes1 089/postnumre✓ Live
Municipalities99/kommuner✓ Live
Parishes2 097/sogne✓ Live
Police districts12/politikredse✓ Live
Court districts24/retskredse✓ Live
Regions5/regioner✓ Live
Cadastre / parcels~2,4 M/jordstykker✓ Live
BBR — buildings~2,1 M/api/v1/enrich/.../bbr◑ Q3 2026
Replication / eventsEvent-stream/replikering/*✓ Live

30-second quickstart

# 1. Test without a key (1,000/day per IP)
curl 'https://api.danadresse.dk/autocomplete?q=R%C3%A5dhuspladsen'

# 2. Get a free key: https://danadresse.dk/dashboard/signup

# 3. Use the key — 1,000/day per key
curl 'https://api.danadresse.dk/autocomplete?q=R%C3%A5dhuspladsen' \
     -H 'X-Api-Key: dawa_live_…'

Drop-in DAWA-compatible

If you already have a DAWA integration: change dawa.aws.dk to api.danadresse.dk, add an X-Api-Key header. The rest of your code stays put — we mirror DAWA's paths, query parameters, JSON shape and UUIDs 1:1.

👉 Read the migration guide · Why DAWA is shutting down

Auth options

MethodExampleUsed for
X-Api-Key headerX-Api-Key: dawa_live_…Standard. Recommended.
?api_key= query?api_key=dawa_live_…JSONP, legacy clients, browser tests.
Bearer JWTAuthorization: Bearer ey…Dashboard sessions (internal use).
NoneFree tier: 1,000 calls/day per IP.

Technical guarantees

📐 Stable JSON format

We never add breaking changes in v1. New fields are additive — old clients aren't affected.

⏱ ETag + If-None-Match

Idempotent endpoints send an ETag. Send it back → 304 + 0 bytes. Save bandwidth.

📦 Gzip compression

All JSON compressed. Save ~70% bandwidth vs uncompressed DAWA.

🔁 Idempotent writes

POSTs accept an Idempotency-Key. Safe against retries after timeouts.

Next steps

🔑 Get a free key

1,000 calls/day · no credit card · 30 seconds.

📚 Read API docs

Swagger UI · Authorize button · try-it-out on live data.

💻 Code examples

9 languages — cURL, JS, Python, Go, PHP, Ruby, C#, Java, Rust.

🔌 Plug-and-play

WooCommerce, Shopify, Salesforce, HubSpot + 11 others.

One API. All of Denmark's addresses. Done.

Start free →