Same paths, same response shape. Just change the base URL and add your X-Api-Key — the rest of your code is unchanged.
curl "https://dawa.aws.dk/autocomplete?q=rådhuspladsen"
curl "https://api.danadresse.dk/autocomplete?q=rådhuspladsen" \
-H "X-Api-Key: dawa_live_…"
fetch("https://dawa.aws.dk/autocomplete?q=rådhuspladsen")
fetch("https://api.danadresse.dk/autocomplete?q=rådhuspladsen", {
headers: { "X-Api-Key": "dawa_live_…" }
})
requests.get("https://dawa.aws.dk/autocomplete",
params={"q": "rådhuspladsen"})
requests.get("https://api.danadresse.dk/autocomplete",
params={"q": "rådhuspladsen"},
headers={"X-Api-Key": "dawa_live_…"})
$ctx = stream_context_create();
file_get_contents("https://dawa.aws.dk/autocomplete?q=rådhuspladsen", false, $ctx);
$ctx = stream_context_create(["http" => [
"header" => "X-Api-Key: dawa_live_…"
]]);
file_get_contents("https://api.danadresse.dk/autocomplete?q=rådhuspladsen", false, $ctx);
http.Get("https://dawa.aws.dk/autocomplete?q=rådhuspladsen")
req, _ := http.NewRequest("GET",
"https://api.danadresse.dk/autocomplete?q=rådhuspladsen", nil)
req.Header.Set("X-Api-Key", "dawa_live_…")
http.DefaultClient.Do(req)
await http.GetStringAsync( "https://dawa.aws.dk/autocomplete?q=rådhuspladsen");
http.DefaultRequestHeaders.Add("X-Api-Key", "dawa_live_…");
await http.GetStringAsync(
"https://api.danadresse.dk/autocomplete?q=rådhuspladsen");
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 2,000 calls/month.
Typo-tolerant search-as-you-type. Meilisearch-powered. P99 < 50 ms. Works with Danish characters (æ, ø, å) and abbreviations.
Address cleansing · category A/B/C scoring like DAWA. Returns the top match even with typos. Both GET and POST.
Look up by UUID, postcode, municipality code, street code. Pagination (side, per_side) like DAWA.
Forward (address → coordinate) and reverse (GPS → address). WGS84 and ETRS89/UTM32N (EPSG:25832).
35 fields per building · 12 fields per unit · 120+ usage codes. Add ?include=bbr to any address call.
Parish, police district, court district, region, constituency, national part. ?include=dagi — all 10 areas in one call.
| Dataset | Count | Endpoint | Status |
|---|---|---|---|
| Access addresses | 2 416 787 | /adgangsadresser | ✓ Live |
| Full addresses | 1 465 200 | /adresser | ✓ Live |
| Street segments | 113 796 | /vejstykker | ✓ Live |
| Postcodes | 1 089 | /postnumre | ✓ Live |
| Municipalities | 99 | /kommuner | ✓ Live |
| Parishes | 2 097 | /sogne | ✓ Live |
| Police districts | 12 | /politikredse | ✓ Live |
| Court districts | 24 | /retskredse | ✓ Live |
| Regions | 5 | /regioner | ✓ Live |
| Cadastre / parcels | ~2,4 M | /jordstykker | ✓ Live |
| BBR — buildings | ~2,1 M | /api/v1/enrich/.../bbr | ◑ Q3 2026 |
| Replication / events | Event-stream | /replikering/* | ✓ Live |
# 1. Get a free key (30s, no card): https://danadresse.dk/dashboard/signup # 2. Call the API with your key — 2,000 calls/month free curl 'https://api.danadresse.dk/autocomplete?q=R%C3%A5dhuspladsen' \ -H 'X-Api-Key: dawa_live_…'
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
| Method | Example | Used for |
|---|---|---|
| X-Api-Key header | X-Api-Key: dawa_live_… | Standard. Recommended. |
| ?api_key= query | ?api_key=dawa_live_… | JSONP, legacy clients, browser tests. |
| Bearer JWT | Authorization: Bearer ey… | Dashboard sessions (internal use). |
| Test key | X-Api-Key: dawa_test_… | Sandbox: realistic data, never billed, per-IP limit. For demos & trying out. |
We never add breaking changes in v1. New fields are additive — old clients aren't affected.
Idempotent endpoints send an ETag. Send it back → 304 + 0 bytes. Save bandwidth.
All JSON compressed. Save ~70% bandwidth vs uncompressed DAWA.
POSTs accept an Idempotency-Key. Safe against retries after timeouts.
2,000 calls/month · no credit card · 30 seconds.
Swagger UI · Authorize button · try-it-out on live data.
9 languages — cURL, JS, Python, Go, PHP, Ruby, C#, Java, Rust.
WooCommerce, Shopify, Salesforce, HubSpot + 11 others.