BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

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
curl 'https://api.dataforsyningen.dk/adresser?q=Rentemestervej%208&per_side=1'
JavaScript (fetch)
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);
Python (requests)
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())
Response — HTTP 200 (truncated)
[
  {
    "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": "Hille

Parameters

ParameterTypeRequiredDescription
qqueryOptionalFree-text address search. Handles partial input, so it works for autocomplete. Rentemestervej 8
per_sidequeryOptionalResults per page. Pair with `side` to page through matches. 1
postnrqueryOptionalRestrict to a four-digit Danish postcode. 3400
kommunekodequeryOptionalRestrict to a municipality by its official code. 0219
strukturqueryOptional`mini` returns a flat, much smaller object — usually what an autocomplete needs. mini
(autocomplete)pathOptional`/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

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.