Address API

# Danish addresses, and the property behind each one

Search, autocomplete, washing and reverse geocoding over the official Danish address register. Every address comes back with the BFE number of its property, so the same key carries on into the buildings, parcels and valuation behind it.

[DAWA closed 1 Oct · the 5-minute fix](https://grundfast.dk/en/dawa-replacement)

The main call

- [GET /v1/adresse/search](https://grundfast.dk/docs/api/adresse-search)

[Get started free](https://grundfast.dk/dashboard?mode=register) [Read the API reference](https://grundfast.dk/docs/api)

[Læs denne side på dansk](https://grundfast.dk/adresse-api)

Try it

## Type an address

This box searches the live register. Note the BFE on each hit: Nyhavn 20 has several entrances, and they all belong to one property.

Real results · type any Danish address

- Nyhavn 20, 1051 København K 0a3f507a-cdbb-32b8-e044-0003ba298018 BFE 6033800
- Nyhavn 20A, 1051 København K 0a3f507a-cdbc-32b8-e044-0003ba298018 BFE 6033800
- Nyhavn 20B, 1051 København K 0a3f507a-cdbd-32b8-e044-0003ba298018 BFE 6033800
- Nyhavn 20C, 1051 København K 0a3f507a-cdbe-32b8-e044-0003ba298018 BFE 6033800
- Nyhavn 2, 1051 København K 0a3f507a-cda1-32b8-e044-0003ba298018 BFE 6033860

`GET /v1/adresse/search` — here through its keyless demo, capped at six hits.

The same search from your code

```
const res = await fetch(
  'https://api.grundfast.dk/v1/adresse/search?q=' + encodeURIComponent(input),
  { headers: { Authorization: 'Bearer gf_live_...' } },
);
const { results } = await res.json();
// results[0].betegnelse   → "Nyhavn 20, 1051 København K"
// results[0].bfe_nummer   → 6033800
```

Endpoints

## Every address surface a Danish product needs

All live, all on one bearer key; a call without a key answers `401`. Parameters and response fields are in the [API reference](https://grundfast.dk/docs/api).

**GET/v1/adresse/search?q=**

Search Free-text address search over the national register; every hit carries its DAR id and the BFE of its property.

**GET/v1/autocomplete?q=**

Type-ahead Prefix and fuzzy matching for a form field that calls on every keystroke, served from a local index rather than proxied upstream.

**GET/v1/adresse/:uuid**

Lookup by id One address by its stable DAR id — the same identifiers DAWA used, so stored references keep resolving.

**GET/v1/datavask/adgangsadresser?betegnelse=**

Address washing Match a messy, hand-typed address against the register; ranked candidates with an A, B or C confidence band.

**GET/v1/adgangsadresser/reverse?lon=&lat=**

Reverse geocoding The nearest addresses to a WGS84 coordinate, nearest first.

**GET/v1/adgangsadresser/bfe/:bfe**

Addresses on a property Every address that belongs to one property — useful when a building has several entrances or a block has many.

**GET/v1/postnumre · /v1/vejnavne**

Postcodes and street names Lists, lookups and autocomplete for every Danish postcode and street name.

DAWA

## Replacing DAWA starts with a base-URL change

DAWA closed on 1 October 2026. Every surface above has a DAWA equivalent and uses the same address ids, so migrating means a new base URL, an `Authorization` header, and reading the list one level down in each response. [See the endpoint-by-endpoint mapping](https://grundfast.dk/en/dawa-replacement).

FAQ

## Questions about the address data

### What is DAR?

DAR (Danmarks Adresseregister) is the authoritative Danish address register: every official address has a stable id there. DAWA was a free convenience API over the same data; Grundfast reads DAR through Datafordeler and serves it in a comparable shape.

### Will my stored address ids still work?

Yes. The ids come from DAR in both cases, so addresses you have already stored keep resolving now that DAWA has closed. There is no re-keying step.

### Is it fast enough for a checkout field?

Yes. Search and autocomplete run against a local index with trigram and prefix matching instead of forwarding each keystroke to the upstream register. Live status for every register is published at /status.

### What is address washing?

Matching a dirty, human-entered address string against the official register and returning ranked candidates with a confidence band — A for a confident single match, B and C for progressively less certain ones. It is how you clean a customer list without checking every row by hand.

### Can I get the property behind the address?

Yes, and it is the main reason to use this rather than an address-only service. Every hit carries the BFE number of its property, and the same key continues into buildings, units, parcels and the public valuation via `/v1/bbr/ejendom/{bfe}`.

See also

- [Property data API](https://grundfast.dk/en/property-data-api)
- [DAWA replacement](https://grundfast.dk/en/dawa-replacement)
- [Grundfast overview](https://grundfast.dk/en)
- [Pricing](https://grundfast.dk/en/pricing)

## Wire up Danish addresses

Create a free key and make your first call in a minute. Build against a `gf_test_` key that is never billed, and upgrade when the traffic is real.

[Get started free](https://grundfast.dk/dashboard?mode=register) [Read the API reference](https://grundfast.dk/docs/api)

Free up to 5,000 calls a month · no card · test keys never billed · data from Klimadatastyrelsen / Datafordeler, CC BY 4.0
