DAWA (Danish Addresses) API
Free official Danish address API with no key: search, validate and autocomplete every address in Denmark, with coordinates, municipality codes and full history. Live example included.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the DAWA (Danish Addresses) API?
DAWA (Danmarks Adressers Web API) is the Danish state's free, key-free address service. It covers every officially registered address in Denmark, returning coordinates, municipality and postcode codes, cadastral references and the full lifecycle history of each address.
Denmark took the unusual step of making its national address register a first-class public API rather than a downloadable file, and DAWA is the result. Because it is the register itself and not a copy, an address that DAWA does not recognise genuinely does not exist — which turns validation from a fuzzy confidence score into a yes-or-no answer that banks, insurers and utilities can rely on.
The shape of the data reflects Danish administrative reality rather than convenience. An `adresse` is a specific unit — floor and door included — while the `adgangsadresse` beneath it is the street access point shared by everything in the building. Get that distinction wrong and you will happily geocode forty flats to forty identical coordinates without noticing. Note also that field names are Danish, and some contain non-ASCII characters such as `ændret` and `dør`, so a naive key lookup in code that assumes ASCII will fail.
Quick facts
- Base URL
https://api.dataforsyningen.dk- Authentication
- No API key or account for the address endpoints. Public sector data released for free use, including commercial use.
- Rate limit
- No published per-IP limit. Datafordeler asks heavy users to take the bulk download or the replication API instead of paging the search endpoint.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the DAWA (Danish Addresses) API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Search for a Danish address by free text
GET https://api.dataforsyningen.dk/adresser?q=Rentemestervej%208&per_side=1
curl 'https://api.dataforsyningen.dk/adresser?q=Rentemestervej%208&per_side=1'const res = await fetch("https://api.dataforsyningen.dk/adresser?q=Rentemestervej%208&per_side=1");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://api.dataforsyningen.dk/adresser?q=Rentemestervej%208&per_side=1", timeout=20)
res.raise_for_status()
print(res.json())[
{
"id": "0a3f50a9-cc30-32b8-e044-0003ba298018",
"kvhx": "02196833___8_______",
"status": 1,
"darstatus": 3,
"href": "https://api.dataforsyningen.dk/adresser/0a3f50a9-cc30-32b8-e044-0003ba298018",
"historik": {
"oprettet": "2000-02-05T21:24:03.000",
"ændret": "2000-02-05T21:24:03.000",
"ikrafttrædelse": "2000-02-05T21:24:03.000",
"nedlagt": null
},
"etage": null,
"dør": null,
"adressebetegnelse": "Rentemestervej 8, 3400 Hillerød",
"adgangsadresse": {
"href": "https://api.dataforsyningen.dk/adgangsadresser/0a3f5080-135c-32b8-e044-0003ba298018",
"id": "0a3f5080-135c-32b8-e044-0003ba298018",
"adressebetegnelse": "Rentemestervej 8, 3400 Hillerød",
"kvh": "02196833___8",
"status": 1,
"darstatus": 3,
"vejstykke": {
"href": "https://api.dataforsyningen.dk/vejstykker/219/6833",
"navn": "Rentemestervej",
"adresseringsnavn": "Rentemestervej",
"kode": "6833"
},
"husnr": "8",
"navngivenvej": {
"href": "https://api.dataforsyningen.dk/navngivneveje/46a834bd-559e-4e69-919d-a534e0a97fcf",
"id": "46a834bd-559e-4e69-919d-a534e0a97fcf"
},
"supplerendebynavn": null,
"supplerendebynavn2": null,
"postnummer": {
"href": "https://api.dataforsyningen.dk/postnumre/3400",
"nr": "3400",
"navn": "Hillerød"
},
"stormodtagerpostnummer": null,
"kommune": {
"href": "https://api.dataforsyningen.dk/kommuner/0219",
"kode": "0219",
"navn": "HilleParameters
| Parameter | Type | Required | Description |
|---|---|---|---|
q | query | Optional | Free-text address search. Handles partial input, so it works for autocomplete. Rentemestervej 8 |
per_side | query | Optional | Results per page. Pair with `side` to page through matches. 1 |
postnr | query | Optional | Restrict to a four-digit Danish postcode. 3400 |
kommunekode | query | Optional | Restrict to a municipality by its official code. 0219 |
struktur | query | Optional | `mini` returns a flat, much smaller object — usually what an autocomplete needs. mini |
(autocomplete) | path | Optional | `/adresser/autocomplete?q=` is tuned for keystroke-by-keystroke input and returns ranked suggestions. |
Response fields
idstring- UUID for the address. Stable across renames, which is why you should store it rather than the text.
adressebetegnelsestring- The complete formatted address, ready to display or print on a label.
status / darstatusinteger- Lifecycle codes. Status 1 is a current, valid address; other values mean provisional or discontinued.
historikobject- Creation, amendment and discontinuation timestamps for the address record.
etage / dørstring- Floor and door for a specific dwelling, or null when the address is the building itself.
adgangsadresseobject- The shared street access point: street (`vejstykke`), house number (`husnr`), postcode and coordinates.
kvhx / kvhstring- Fixed-width legacy keys still used by many Danish systems for joining against older registers.
hrefstring- Canonical URL of this record, useful for re-fetching without rebuilding the query.
What you can build with the DAWA (Danish Addresses) API
- Validate Danish addresses at signup or checkout against the official register
- Add address autocomplete to a Danish web form
- Geocode a customer file to coordinates for routing or territory analysis
- Join business data to municipalities and postcodes using official codes
- Detect discontinued addresses when cleaning an old customer database
Common errors and how to fix them
400 with a validation message
A parameter value has the wrong format, such as a three-digit postcode.
Fix: Danish postcodes are exactly four digits and municipality codes exactly four characters including the leading zero. Send them as strings.
Empty array
No address matched the query.
Fix: For an address that should exist, try the `autocomplete` endpoint instead — it is far more forgiving of partial and misspelled input than `q` on the main search.
Very large responses
The default structure includes deep nested objects and cross-references.
Fix: Add `struktur=mini` to get a flat object. For autocomplete this cuts the payload by an order of magnitude.
Non-ASCII field names break parsing
Keys such as `ændret` and `dør` contain Danish characters.
Fix: Read and write the response as UTF-8 throughout, and avoid code that normalises or strips accents from JSON keys.
DAWA (Danish Addresses) API — frequently asked questions
Is the Danish address API free?
Yes. DAWA is published by the Danish state as free public-sector data, with no key, account or usage fee, and commercial use is allowed.
What is the difference between adresse and adgangsadresse?
An `adgangsadresse` is the access point to a building — street, house number, postcode and one set of coordinates. An `adresse` sits beneath it and identifies a specific unit by floor and door. Every flat in a block shares one `adgangsadresse`.
Can DAWA be used for address autocomplete?
Yes, and there is a dedicated `/adresser/autocomplete` endpoint tuned for it. It ranks partial input sensibly and returns a compact payload, which the general search endpoint does not.
Does DAWA cover Greenland and the Faroe Islands?
No. It covers Denmark proper. Greenland and the Faroes maintain their own address registers and are not part of this dataset.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
CSV to JSON Converter
Convert CSV to a JSON array of objects online. Header-row detection, comma/semicolon/tab delimiters and pretty-printed output — 100% in your browser.
JSON to CSV Converter
Convert a JSON array of objects to CSV online. Automatic column headers from the union of all keys, delimiter choice and proper quoting — all in-browser.
DAWA (Danish Addresses) is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.