Spring til indhold

DAWA-nedlukningen

DAWA er lukket — sådan får du adresserne tilbage på 5 minutter

DAWA lukkede 1. oktober 2026 kl. 10, og kald til api.dataforsyningen.dk og dawa.aws.dk giver ikke længere adresser. Den hurtigste vej tilbage: opret en gratis nøgle, peg din base-URL på Grundfast og pak svaret ét niveau ud. For en server-side integration er det fem minutter.

  1. 1

    Opret en gratis nøgle

    5.000 kald/md uden kort. Nøglen starter med gf_live_.

  2. 2

    Skift base-URL og send nøglen

    https://api.grundfast.dk/v1 og Authorization: Bearer …

  3. 3

    Pak svaret ét niveau ud

    Listen ligger i fx resultater. Koordinater er WGS84.

Sådan ser det ud, når DAWA er væk

Siden lukningen svarer alle DAWA-stier på både api.dataforsyningen.dk og dawa.aws.dk med 410 Gone og en kort JSON-fejl i stedet for listen eller adressen. Kode, der ikke tjekker statuskoden, fejler først der, hvor den læser svaret:

Svaret fra DAWA i dag (hentet 2. oktober 2026)
$ curl -i "https://api.dataforsyningen.dk/autocomplete?q=rådhus"

HTTP/2 410
content-type: application/json; charset=UTF-8
cache-control: max-age=86400

{
  "status": 410,
  "error": "Gone",
  "message": "The requested resource is no longer available and will not be available again."
}
  • JavaScript / TypeScript (fetch)

    TypeError: forslag.map is not a function

  • JavaScript (axios)

    AxiosError: Request failed with status code 410

  • Python (requests)

    requests.exceptions.HTTPError: 410 Client Error: Gone for url: https://api.dataforsyningen.dk/…

  • C# (HttpClient)

    HttpRequestException: Response status code does not indicate success: 410 (Gone).

  • PHP

    file_get_contents(…): Failed to open stream: HTTP request failed! HTTP/1.1 410 Gone

  • Et adressefelt i en formular

    Foreslår ingenting — ofte uden en synlig fejl, fordi widgetten sluger den.

Rettelsen

Har koden ét sted, den kalder adresse-API’et fra, er transporten to linjer: den nye base-URL og din nøgle som bearer.

adresse-api.ts2 linjer ændret
// adresse-api.ts — det ene sted, koden taler med adresse-API'etFjernet: const BASE = 'https://api.dataforsyningen.dk';Tilføjet: const BASE = 'https://api.grundfast.dk/v1'; export async function adresseApi<T>(path: string): Promise<T> {Fjernet:   const res = await fetch(BASE + path);Tilføjet:   const res = await fetch(BASE + path, { headers: { Authorization: `Bearer ${process.env.GRUNDFAST_API_KEY}` } });  if (!res.ok) throw new Error(`Adresse-API svarede ${res.status}`);  return res.json() as Promise<T>;}

Stien og q er de samme. Svaret er Grundfasts eget, så der, hvor du læser det, pakker du ét niveau ud:

adressefelt.ts2 linjer ændret
// Forslag til et adressefelt — samme sti, samme qFjernet: const forslag = await adresseApi<DawaForslag[]>(`/autocomplete?q=${encodeURIComponent(q)}`);Fjernet: return forslag.map((f) => f.tekst);Tilføjet: const { resultater } = await adresseApi<Svar>(`/autocomplete?q=${encodeURIComponent(q)}`);Tilføjet: return resultater.map((f) => f.tekst);

Kaldte du DAWA direkte fra browseren?

Så er det mere end en linje: DAWA var nøglefri, men en nøgle hører ikke hjemme i browseren. Læg et lille proxy-endpoint i din backend — guiden til adressefeltet har det færdigt.

Brugte du dawa-autocomplete2?

/v1/autocomplete svarer med tekst og vaerdi, ikke widgettens egen kontrakt. Feltet skal derfor tegne forslagene selv — samme guide viser hvordan.

Prøv det mod den rigtige DAR — nu

Et opslag direkte mod produktion, uden nøgle. Det er det samme indeks, din integration rammer efter skiftet.

GET/v1/demo/adresse-search

Nøglefri demo over det samme DAR-indeks som /v1/adresse/search, begrænset til seks hits. Med en nøgle søger du hele registret.

Fra din backend
curl "https://api.grundfast.dk/v1/adresse/search?q=R%C3%A5dhuspladsen%201%2C%20K%C3%B8benhavn" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY"
results[0] — som din kode får det
…

DAWA-endpoint → Grundfast-endpoint

Samme sti betyder samme sti og parametre under /v1 — din URL-bygning overlever base-URL-skiftet. Svarets form står i noten under hver række, og det, vi ikke dækker, står nederst.

  • AutocompleteSamme sti
    DAWA
    • /autocomplete?q=&type=
    Grundfast
    • /v1/autocomplete?q=&type=

    Samme q og type. type=adresse går trinvis fra vej over husnummer til enhed: adgangsadresser, så længe teksten passer på flere, derefter enhederne med etage og dør — hvert hit bærer sin egen type, og adgangsadresseid går direkte til enhederne på en valgt adresse. Svaret er { type, antal, resultater: [{ type, tekst, vaerdi }] } — ikke dawa-autocomplete2-widgettens forslagstekst/caretpos/data.

  • AdressesøgningSamme sti
    DAWA
    • /adgangsadresser/autocomplete?q=
    • /adresser/autocomplete?q=
    Grundfast
    • /v1/adgangsadresser/autocomplete?q=
    • /v1/adresser/autocomplete?q=

    Samme form som /v1/autocomplete: { type, antal, resultater }. /adresser/autocomplete giver enheder med etage og dør og tager adgangsadresseid for at liste enhederne på én adresse. Vil du have bfe_nummer og koordinat i hvert hit, så brug /v1/adresse/search.

  • AdgangsadresserSamme sti
    DAWA
    • /adgangsadresser?postnr=&cirkel=&polygon=&srid=
    Grundfast
    • /v1/adgangsadresser?postnr=&cirkel=&polygon=&srid=

    Filtrér på q, postnr, kommunekode, vejnavn og husnr, eller rumligt med cirkel=x,y,radius (højst 10.000 m) og polygon (højst 1.000 hjørner, kasse op til 0,3° × 0,5°). srid 4326 eller 25832 gælder både ind og ud, og format=geojson giver en FeatureCollection. Mindst ét forankrende filter er påkrævet. Svaret er { antal, side, per_side, srid, adgangsadresser } med koordinater i det valgte srid, sidevis med per_side og side.

  • Adresser (etage og dør)Samme sti
    DAWA
    • /adresser?postnr=&cirkel=&polygon=&srid=
    Grundfast
    • /v1/adresser?postnr=&cirkel=&polygon=&srid=

    Enhedsadresser med etage og dør — samme filtre som adgangsadresserne plus adgangsadresseid, etage og doer. Hver enhed har sin egen adresse_id og adgangsadressens adgangsadresse_id; listen er sorteret vej, husnummer, etage, dør.

  • Adresse på idNy sti
    DAWA
    • /adgangsadresser/{id}
    • /adresser/{id}
    Grundfast
    • /v1/adresse/{uuid}

    Samme DAR-UUID som nøgle — både adgangsadresse- og adresse-UUID (med etage og dør).

  • Reverse geocodingSamme sti
    DAWA
    • /adgangsadresser/reverse?x=&y=&srid=
    Grundfast
    • /v1/adgangsadresser/reverse?x=&y=&srid=

    x/y/srid som i DAWA (4326 eller 25832), alternativt lon/lat; med srid får hver adresse også koordinater i det system, og format=geojson giver en FeatureCollection. Svaret er { punkt, antal, adresser } sorteret efter afstand, med radius (standard 200 m) og per_side.

  • DatavaskSamme sti
    DAWA
    • /datavask/adgangsadresser?betegnelse=
    Grundfast
    • /v1/datavask/adgangsadresser?betegnelse=

    Samme kategori A/B/C. Kandidaterne i resultater er flade adressehits med en lighed-score i stedet for DAWA’s adresse/aktueladresse/vaskeresultat. Mange på én gang: POST …:batch (Pro og op).

  • PostnumreSamme sti
    DAWA
    • /postnumre
    • /postnumre/{nr}
    • /postnumre/autocomplete?q=
    Grundfast
    • /v1/postnumre
    • /v1/postnumre/{nr}
    • /v1/postnumre/autocomplete?q=

    Listen kommer som { antal, total, postnumre } med nr og navn; bbox, visueltcenter og kommuner følger ikke med. stormodtagere=true virker som i DAWA.

  • VejnavneSamme sti
    DAWA
    • /vejnavne
    • /vejnavne/autocomplete?q=
    Grundfast
    • /v1/vejnavne
    • /v1/vejnavne/autocomplete?q=

    Navnene som rene strenge i { vejnavne }, filtrérbart på kommunekode, pagineret med per_side og side.

  • EjerlavSamme sti
    DAWA
    • /ejerlav
    • /ejerlav/{kode}
    • /ejerlav/autocomplete?q=
    Grundfast
    • /v1/ejerlav
    • /v1/ejerlav/{kode}
    • /v1/ejerlav/autocomplete?q=

    Liste, opslag på kode og autocomplete.

  • JordstykkerSamme sti
    DAWA
    • /jordstykker?ejerlavkode=&matrikelnr=
    • /jordstykker/reverse?x=&y=
    Grundfast
    • /v1/jordstykker?ejerlavkode=&matrikelnr=
    • /v1/jordstykker/reverse?x=&y=

    Samme parametre. Svaret har BFE-nummeret med, så adressen er ét kald fra BBR og Matriklen.

  • Kommuner, regioner m.fl.Ny sti
    DAWA
    • /kommuner/{kode}
    • /regioner
    • /sogne
    • /retskredse
    • /politikredse
    Grundfast
    • /v1/dagi/kommune/{kode}
    • /v1/dagi/{tema}

    Ét tema pr. sti, i ental: kommune, region, sogn, retskreds, politikreds, opstillingskreds. /v1/dagi/reverse giver alle inddelinger på ét punkt.

  • Adresser på en ejendomNyt
    DAWA—
    Grundfast
    • /v1/adgangsadresser/bfe/{bfe}

    Alle adgangsadresser på et BFE-nummer, også som format=geojson og med srid. Fandtes ikke i DAWA.

  • Replikering og øvrige fladerIngen drop-in
    DAWA
    • /replikering/*
    • /vejstykker
    • /navngivneveje
    • /bebyggelser
    GrundfastIngen ækvivalent

    Ingen ækvivalent hos os. Skal du holde en lokal kopi af hele adresseregistret, er Datafordelers filudtræk af DAR den officielle vej.

Oversæt din DAWA-kode

Indsæt modulet, der kaldte api.dataforsyningen.dk eller dawa.aws.dk. Hvert kald slås op i tabellen ovenfor og oversættes til vores sti. Hvor svaret nu bærer et BFE-nummer, står det ved kaldet — det er broen fra adressen til ejendommen, som DAWA aldrig havde. Kald uden en drop-in markeres, de gættes ikke. Oversættelsen kører i din browser.

Køres i din browser — koden sendes ingen steder.
5 DAWA-kald fundet1 med BFE-nummer i svaret1 uden drop-in
oversat til Grundfast4 linjer ændret
// adresser.js — sådan så det ud før 1. oktoberFjernet: const DAWA = 'https://api.dataforsyningen.dk';Tilføjet: const DAWA = 'https://api.grundfast.dk/v1'; export async function forslag(q) {Fjernet:   const res = await fetch(`https://api.dataforsyningen.dk/adgangsadresser/autocomplete?q=${encodeURIComponent(q)}`);Tilføjet:   const res = await fetch(`https://api.grundfast.dk/v1/adgangsadresser/autocomplete?q=${encodeURIComponent(q)}`);  return res.json();} Fjernet: export const adresse = (id) => fetch(`${DAWA}/adgangsadresser/${id}`).then((r) => r.json());Tilføjet: export const adresse = (id) => fetch(`${DAWA}/adresse/${id}`).then((r) => r.json());export const postnummer = (nr) => fetch(DAWA + '/postnumre/' + nr).then((r) => r.json());Fjernet: export const kommune = (kode) => fetch(DAWA + '/kommuner/' + kode).then((r) => r.json());Tilføjet: export const kommune = (kode) => fetch(DAWA + '/dagi/kommune/' + kode).then((r) => r.json()); // Natlig synkroniseringexport const haendelser = () => fetch(DAWA + '/replikering/haendelser?entitet=adgangsadresse');
  1. Base-URLlinje 2

    api.dataforsyningen.dkbliverapi.grundfast.dk/v1

    Base-URL’en peger nu på Grundfast; stierne, der bygges oven på den, står hver for sig herunder.

  2. Samme stilinje 5

    /adgangsadresser/autocomplete?q=${encodeURIComponent(q)}bliver/v1/adgangsadresser/autocomplete?q=${encodeURIComponent(q)}

    Samme form som /v1/autocomplete: { type, antal, resultater }. /adresser/autocomplete giver enheder med etage og dør og tager adgangsadresseid for at liste enhederne på én adresse. Vil du have bfe_nummer og koordinat i hvert hit, så brug /v1/adresse/search.

    Nyt:svaret bærer bfe_nummer — næste kald er/v1/bbr/ejendom/{bfe}for hele ejendommen.

  3. Ny stilinje 9

    /adgangsadresser/${id}bliver/v1/adresse/${id}

    Samme DAR-UUID som nøgle — både adgangsadresse- og adresse-UUID (med etage og dør).

  4. Samme stilinje 10

    /postnumre/bliver/v1/postnumre/

    Listen kommer som { antal, total, postnumre } med nr og navn; bbox, visueltcenter og kommuner følger ikke med. stormodtagere=true virker som i DAWA.

  5. Ny stilinje 11

    /kommuner/bliver/v1/dagi/kommune/

    Ét tema pr. sti, i ental: kommune, region, sogn, retskreds, politikreds, opstillingskreds. /v1/dagi/reverse giver alle inddelinger på ét punkt.

  6. Ingen drop-inlinje 14

    /replikering/haendelser?entitet=adgangsadresse

    Ingen ækvivalent hos os. Skal du holde en lokal kopi af hele adresseregistret, er Datafordelers filudtræk af DAR den officielle vej.

Stierne er rettet; nøglen kan værktøjet ikke sætte ind for dig. Send Authorization: Bearer <din nøgle> med hvert kald — fra din backend, ikke fra browseren.

Ofte stillede spørgsmål

Klimadatastyrelsen lukkede DAWA (Danmarks Adressers Web API) 1. oktober 2026 kl. 10 som led i overgangen til Datafordeleren. Kald til dawa.aws.dk og DAWA-stierne på api.dataforsyningen.dk svarer ikke længere med adressedata, og det er derfor, din integration fejler — ikke en fejl i din kode.

Transporten er to linjer: base-URL’en og en Authorization-header med din nøgle. De fleste DAWA-stier findes med samme navn og parametre under /v1 — se tabellen. Svaret er derimod Grundfasts eget: listen ligger ét niveau nede (fx resultater eller postnumre), og koordinater er altid WGS84. Det er typisk en linje eller to pr. sted, du læser svaret.

Gratisplanen dækker 5.000 kald om måneden og stopper ved loftet i stedet for at fakturere. En gf_test_-nøgle giver rigtige svar til udvikling og test og faktureres aldrig. Har du mere trafik end gratisplanen, vælger du en betalt plan på prissiden.

Nej. DAWA var nøglefri, men en nøgle i browseren kan læses af enhver besøgende. Læg et lille proxy-endpoint i din backend, der sætter Authorization-headeren — guiden til adressefeltet viser det færdigt, med debounce og caching.

Fra Danmarks Adresseregister (DAR) via Datafordeleren — den samme kilde, DAWA byggede på. Grundfast holder et indeks over hele registret, oversætter og samler svaret og kobler hver adresse til sit BFE-nummer, så du også kan slå ejendommen op.

Få adresserne tilbage nu

Opret en gratis nøgle, peg base-URL’en på api.grundfast.dk/v1, og send nøglen som bearer.

Gratis op til 5.000 kald/md · intet kreditkort · data fra Klimadatastyrelsen/Datafordeler, CC BY 4.0

Se også