# Migrér fra DAWA

DAWA lukkede 1. oktober 2026 kl. 10. De mest brugte DAWA-endpoints har en Grundfast-udgave med de samme query-parametre, og de fleste felter hedder det samme.

## Migrering i tre trin

1. **Skift base-URL og tilføj en nøgle** — Skift `https://api.dataforsyningen.dk` ud med `https://api.grundfast.dk/v1`, og send en nøgle i `Authorization`-headeren. Opret en gratis nøgle i [dashboardet](https://grundfast.dk/dashboard?mode=register).

```bash
# før
curl "https://api.dataforsyningen.dk/postnumre/8000"

# efter
curl "https://api.grundfast.dk/v1/postnumre/8000" \
  -H "Authorization: Bearer gf_live_..."
```

2. **Pak svaret ud** — Hvor DAWA returnerede et bart array, returnerer Grundfast et objekt: søgning giver `{ results }`, reverse giver `{ punkt, antal, adresser }`, datavask giver `{ kategori, antal, resultater }`, og listerne giver `{ antal, total, … }`. Du pakker ét niveau ud.

3. **Læs koordinater som lon/lat** — Adresser har `koordinat: { lon, lat }` i WGS84 i stedet for DAWA’s `x` og `y`. Reverse-endpoints tager stadig `x`, `y` og `srid` som input. Se [Koordinatsystemer og geometri](https://grundfast.dk/docs/koordinater).

## Endpoint for endpoint

| DAWA | Grundfast | Bemærk |
| --- | --- | --- |
| `/autocomplete` | [/v1/autocomplete](https://grundfast.dk/docs/api/autocomplete) | `type` = `adresse`, `adgangsadresse`, `vejnavn` eller `postnummer`. `adresse` går fra vej over husnummer til etage og dør, og hvert hit bærer sin egen `type`. Svaret er `{ type, antal, resultater: [{ type, tekst, vaerdi }] }`. |
| `/adgangsadresser/autocomplete` | [/v1/adgangsadresser/autocomplete](https://grundfast.dk/docs/api/adgangsadresser-autocomplete) | Samme sti og `q`. Har du brug for BFE-nummer og koordinat i hvert hit, så brug [/v1/adresse/search](https://grundfast.dk/docs/api/adresse-search). |
| `/adresser/autocomplete` | [/v1/adresser/autocomplete](https://grundfast.dk/docs/api/adresser-autocomplete) | Enheder med etage og dør; `adgangsadresseid` lister enhederne på én adresse. |
| `/adgangsadresser?…`, `/adresser?…` | [/v1/adgangsadresser](https://grundfast.dk/docs/api/adgangsadresser), [/v1/adresser](https://grundfast.dk/docs/api/adresser) | Samme filtre, inkl. `cirkel`, `polygon` og `srid` (4326/25832), og `format=geojson`. Mindst ét forankrende filter; sidevis med `per_side` og `side`. |
| `/jordstykker/reverse` | [/v1/jordstykker/reverse](https://grundfast.dk/docs/api/jordstykker-reverse) | Punkt → jordstykket, med BFE-nummer. Broen fra adresse til ejendom. |
| `/jordstykker?ejerlavkode=&matrikelnr=` | [/v1/jordstykker](https://grundfast.dk/docs/api/jordstykker) | Samme parametre. Jordstykke, BFE og ejerlavsnavn. |
| `/adgangsadresser/reverse` | [/v1/adgangsadresser/reverse](https://grundfast.dk/docs/api/adgangsadresser-reverse) | `lon`/`lat` eller DAWA’s `x`/`y`/`srid`. Nærmeste først, med afstand. |
| `/datavask/adgangsadresser` | [/v1/datavask/adgangsadresser](https://grundfast.dk/docs/api/datavask) | Samme `betegnelse`. Rangerede kandidater og A/B/C-kategori. |
| `/postnumre` | [/v1/postnumre](https://grundfast.dk/docs/api/postnumre) | Liste, opslag og autocomplete. |
| `/vejnavne` | [/v1/vejnavne](https://grundfast.dk/docs/api/vejnavne) | Sideinddelt; kan afgrænses med `kommunekode`. |
| `/ejerlav` | [/v1/ejerlav](https://grundfast.dk/docs/api/ejerlav) | Liste, opslag og autocomplete. |
| `/kommuner`, `/regioner`, `/sogne` m.fl. | [/v1/dagi/:tema](https://grundfast.dk/docs/api/dagi-tema) | Temaerne `region`, `kommune`, `sogn`, `retskreds`, `politikreds` og `opstillingskreds`. |
| `/adgangsadresser/{id}` | [/v1/adresse/:uuid](https://grundfast.dk/docs/api/adresse) | Tager både adresse- og adgangsadresse-UUID’er. |
| — (BBR via andre tjenester) | [/v1/bbr/ejendom/:bfe](https://grundfast.dk/docs/api/bbr-ejendom) | Hele ejendommen på BFE: bygninger, enheder, jordstykker og vurdering. |

## Felt for felt

For en adgangsadresse. DAWA-kolonnen viser feltnavnene i `struktur=mini` og i autocomplete-hittets `adgangsadresse`; Grundfast-kolonnen er et hit fra `/v1/adresse/search`.

| DAWA | Grundfast | Bemærk |
| --- | --- | --- |
| betegnelse (autocomplete: tekst) | betegnelse | Hele adresselinjen, fx "Rådhuspladsen 1, 9300 Sæby". |
| id | adgangsadresse_id | Den samme UUID. Kan gemmes som nøgle. |
| vejnavn | vejnavn | Uændret. |
| husnr | husnr | Uændret, inkl. bogstav ("12B"). |
| postnr | postnr | Uændret, som streng. |
| postnrnavn | postnrnavn | Uændret. |
| kommunekode | kommunekode | Uændret, fire cifre som streng. |
| x, y | koordinat.lon, koordinat.lat | Et navngivet objekt i WGS84. |
| — | bfe_nummer | Nyt: BFE for jordstykket under adressen — vejen videre til BBR og Matriklen. |

## Forskelle, du skal kende

- **Nøgle påkrævet.** DAWA var åbent. Grundfast kræver `Authorization: Bearer gf_live_...` på alle data-endpoints; uden nøgle svarer API’et `401`.
- **Svaret er pakket ind.** Et objekt med resultatlisten indeni i stedet for et bart array. Resten af felterne hedder for det meste det samme.
- **Autocomplete har sin egen form.** `/v1/autocomplete` returnerer `{ type, tekst, vaerdi }` pr. hit, ikke DAWA’s indlejrede `adgangsadresse`. Har du brug for adressens felter, så brug `/v1/adresse/search`.
- **Kun gældende data som standard.** Du får den gældende version. Skal du se bagud, tilføjer du `?asOf=` på adresseopslaget — det kræver Scale-planen. Se [Historik og tidsrejser](https://grundfast.dk/docs/historik).
- **Forbrug måles.** Free-planen har 5.000 kald om måneden. Burst-grænsen står i `X-RateLimit-*` og månedens forbrug i `X-Quota-*`; begge svarer `429` med `Retry-After`. Se [Rate limits og kvoter](https://grundfast.dk/docs/rate-limits).

## Før og efter

**Før: DAWA**

```js
const q = 'rådhuspladsen 1';
const res = await fetch(
  `https://api.dataforsyningen.dk/adgangsadresser/autocomplete?q=${encodeURIComponent(q)}`,
);
const hits = await res.json(); // bart array

hits[0].tekst;              // "Rådhuspladsen 1, 9300 Sæby"
hits[0].adgangsadresse.id;
hits[0].adgangsadresse.x;   // længdegrad
```

**Efter: Grundfast**

```js
const q = 'rådhuspladsen 1';
const res = await fetch(
  `https://api.grundfast.dk/v1/adresse/search?q=${encodeURIComponent(q)}`,
  { headers: { Authorization: `Bearer ${process.env.GRUNDFAST_API_KEY}` } },
);
const { results } = await res.json(); // pak ét niveau ud

results[0].betegnelse;
results[0].adgangsadresse_id;
results[0].koordinat.lon;
results[0].bfe_nummer;      // → /v1/bbr/ejendom/:bfe
```

## Fra adresse til ejendom

DAWA gav dig adressen. Med BFE-nummeret fra søgningen — eller fra `/v1/jordstykker/reverse` på et koordinat — åbner `/v1/bbr/ejendom/:bfe` hele ejendommen: bygninger, enheder, jordstykker og vurdering i ét kald.

```js
const headers = { Authorization: `Bearer ${process.env.GRUNDFAST_API_KEY}` };
const base = 'https://api.grundfast.dk/v1';

const { results } = await (await fetch(`${base}/adresse/search?q=r%C3%A5dhuspladsen%201`, { headers })).json();
const bfe = results[0]?.bfe_nummer;
if (bfe) {
  const ejendom = await (await fetch(`${base}/bbr/ejendom/${bfe}`, { headers })).json();
  console.log(ejendom.antal_bygninger, 'bygninger');
}
```

Kommer du også fra andre gamle Datafordeler-tjenester, så se [migreringsguiden](https://grundfast.dk/migrering). Baggrund og tidsplan for lukningen står på [DAWA-alternativ](https://grundfast.dk/dawa-alternativ).
