Adresse-autocomplete-API til danske adresser
Det type-as-du-skriver adressefelt er den mest integrerede DAWA-funktion. Grundfast genudstiller denne adressesøgning som et fuzzy + præfiks (pg_trgm) opslag over et lokalt DAR-indeks: send hvert tastetryk til /v1/autocomplete og få rangerede adresseforslag retur på få millisekunder. Live nu — prøv den nøglefrie demo, eller kald det med din egen nøgle.
GET /v1/autocompleteAPI til adressesøgning
Grundfast er et API til adressesøgning på danske adresser: send q til GET /v1/autocomplete og få rangerede adresseforslag retur på få millisekunder. Søgningen kører fuzzy + præfiks-match (pg_trgm) oven på et lokalt indeks af DAR — så stavefejl, forkortelser og halve gadenavne stadig rammer rigtigt, i stedet for kun eksakt-match. Skal du bruge mere end en label, laver GET /v1/adresse/search et fuldt opslag med betegnelse, bfe_nummer, postnr og koordinat.
Adresseforslag mens brugeren skriver
Det type-as-du-skriver adressefelt er den mest integrerede DAWA-funktion. Hvert adresseforslag bærer en tekst til visning i dropdownen og en stabil vaerdi (adgangsadresse-UUID, vejnavn eller postnr) at binde valget til. Filtrér på type, hvis du kun vil have adgangsadresser, vejnavne eller postnumre — ét endpoint driver hele adressefeltet. Fladen er bygget som drop-in for DAWAs autocomplete, så et eksisterende adressefelt kan flyttes over uden at skrive frontend’en om.
Prøv adresse-autocomplete live
Skriv en dansk adresse og se rangerede forslag lande på få millisekunder — kørt mod den nøglefrie demo /v1/demo/adresse-search oven på det rigtige DAR-indeks, med ægte svartid.
Nøglefri demo: /v1/demo/adresse-search returnerer et fast udsnit af DAR. Skriv for at filtrere udsnittet live. Med din gf_live_-nøgle kører /v1/autocomplete den rigtige fuzzy + præfiks-søgning (pg_trgm) over hele indekset.
Hvad autocomplete-API’et giver dig
Adresse-autocomplete i realtid
Send q ved hvert tastetryk og få rangerede forslag retur — det type-as-du-skriver-felt, langt de fleste DAWA-integrationer bruger. type-parameteren skifter mellem adgangsadresse, vejnavn og postnummer, så ét endpoint driver hele adressefeltet.
Fuzzy + præfiks over DAR-indekset
Søgningen kører fuzzy + præfiks-match (pg_trgm) oven på et lokalt indeks af DAR — så stavefejl, forkortelser og halve gadenavne stadig rammer rigtigt, i stedet for kun eksakt-match. Svar på få millisekunder, ikke et upstream-kald pr. tastetryk.
Tekst til visning, værdi som nøgle
Hvert hit har tekst (den pæne label til dropdownen) og vaerdi (en stabil nøgle: adgangsadresse-UUID, vejnavn eller postnr). Bind brugerens valg til vaerdi, ikke til visningsstrengen, så du kan slå videre op uden at gætte.
Fra forslag til BFE & fuld adresse
Et adgangsadresse-hit bærer en UUID i vaerdi. Følg op med /v1/jordstykker/reverse for et BFE-nummer, eller kald /v1/adresse/search for husnr, postnr, koordinat og bfe_nummer i ét svar — så autocomplete bliver til et rigtigt ejendomsopslag.
Kald autocomplete i din stack
Samme kald i cURL, den typede TS-SDK og ren Python — ét GET /v1/autocomplete?q= med en gf_live_-nøgle (samme auth og metering som de øvrige registre), og svaret nedenfor:
curl -H "Authorization: Bearer gf_live_…" \ "https://api.grundfast.dk/v1/autocomplete?q=rådhusplads"
# Adresse-autocomplete, Bearer gf_live_…: GET /v1/autocomplete?q=rådhusplads → 200 { type: "adgangsadresse", antal: 3, resultater: [ { type: "adgangsadresse", tekst: "Rådhuspladsen 1, 1550 København V", vaerdi: "0a3f50a1-2d3e-32b8-e044-0003ba298018" }, { type: "adgangsadresse", tekst: "Rådhuspladsen 2, 1550 København V", vaerdi: "0a3f50a1-2d3e-32b8-e044-0003ba298020" } ] }
Parametre
| Parameter | Type | Beskrivelse |
|---|---|---|
| q | string | Søgestrengen — sendes ved hvert tastetryk. Min. 2 tegn; fuzzy + præfiks over DAR-indekset. |
| type | string | adgangsadresse (standard), vejnavn eller postnummer — vælger hvilken resurse forslagene kommer fra. adresse aliaseres til adgangsadresse. |
| kommunekode | string | Valgfrit — afgrænser vejnavn-forslag til én kommune (op til 4 cifre). |
Felter i svaret
| Felt | Type | Beskrivelse |
|---|---|---|
| type | string | Resursetypen for forslagene — adgangsadresse, vejnavn eller postnummer. |
| antal | number | Antal forslag i resultater (top-rangeret, capped som typeahead). |
| resultater | array | Rangerede adresseforslag, bedste match først. |
| resultater[].tekst | string | Den pæne label til dropdownen, fx “Rådhuspladsen 1, 1550 København V”. |
| resultater[].vaerdi | string | Stabil nøgle at binde valget til — adgangsadresse-UUID, vejnavn eller postnr. |
Grundfast vs. DAWA vs. rå Datafordeler
Adresse-autocomplete som drop-in for DAWA — men på et lag der overlever Datafordeler-migreringen, oven på et lokalt DAR-indeks du selv slipper for at bygge.
| Funktion | Grundfast | DAWA | Rå Datafordeler |
|---|---|---|---|
| tekst + vaerdi pr. forslag | Ja | Ja | Nej |
| Fuzzy + præfiks (pg_trgm) | Ja | Ja | Nej |
| Filtrér på type (adresse/vej/postnr) | Ja | Ja | Nej |
| BFE-bro fra forslag til ejendom | Ja | Nej | Nej |
| Overlever Datafordeler-nedlukningerne | Ja | Nej | Ja |
| Cachet SLA-mirror (står op når upstream flapper) | Ja | Nej | Nej |
/v1/autocompleteTypeahead pr. tastetryk — tekst + vaerdi, filtreret på type (adgangsadresse / vejnavn / postnummer). Live nu.
/v1/adresse/searchFuldt adresse-record — betegnelse, bfe_nummer, husnr, postnr og koordinat i ét svar. Live nu.
/v1/demo/adresse-searchNøglefri demo der svarer 200 — prøv datakontrakten allerede nu, uden nøgle.
Adresseforslag mens brugeren skriver — sådan integrerer du det
Et adressefelt med forslag mens brugeren skriver er tre trin: debounce hvert tastetryk (ét kald, ikke ét pr. bogstav), map resultater[].tekst til dropdownen, og bind valget til resultater[].vaerdi (den stabile nøgle) — ikke til visningsstrengen. Slå til sidst hele posten op med /v1/adresse/search, så du får betegnelse, bfe_nummer, postnr og koordinat:
// Adresseforslag mens brugeren skriver — debounced typeahead i React import { useRef, useState } from 'react'; const HEADERS = { Authorization: 'Bearer gf_live_…' }; function AdresseFelt() { const [forslag, setForslag] = useState([]); // [{ type, tekst, vaerdi }] const timer = useRef(); function onChange(e) { const q = e.target.value; clearTimeout(timer.current); if (q.length < 2) return setForslag([]); // Vent 200 ms efter sidste tastetryk — ét kald, ikke ét pr. bogstav timer.current = setTimeout(async () => { const res = await fetch( '/v1/autocomplete?q=' + encodeURIComponent(q), { headers: HEADERS }, ); const { resultater } = await res.json(); setForslag(resultater); // hver har tekst (label) + vaerdi (nøgle) }, 200); } async function vaelg(hit) { // Bind til hit.vaerdi (stabil adgangsadresse-UUID), ikke til visningsstrengen. // Slå hele posten op — betegnelse, postnr, bfe_nummer, koordinat i ét svar: const res = await fetch( '/v1/adresse/search?q=' + encodeURIComponent(hit.tekst), { headers: HEADERS }, ); const { results } = await res.json(); return results[0]; // { betegnelse, adgangsadresse_id, bfe_nummer, postnr, koordinat, … } } return ( <div> <input onChange={onChange} placeholder="Skriv en adresse…" /> <ul> {forslag.map((hit) => ( <li key={hit.vaerdi} onClick={() => vaelg(hit)}> {hit.tekst} </li> ))} </ul> </div> ); }
Kom i gang med adresse-autocomplete
Opret en gratis nøgle og prøv /v1/demo/adresse-search nu — så er du klar til /v1/autocomplete, der allerede er live. Skal du migrere et helt adressefelt fra DAWA? Skriv til os.
Se også Adresse-API (DAR) — opslag på UUID, postnummer-API, datavask og DAWA-alternativ.
Ofte stillede spørgsmål
Er adresse-autocomplete-API’et live?
Ja. Både GET /v1/autocomplete og GET /v1/adresse/search er live i produktion oven på DAR-indekset og kræver en gf_live_-nøgle — uden nøgle får du 401. Den nøglefrie demo GET /v1/demo/adresse-search svarer 200, så du kan prøve datakontrakten med det samme.
Er det et DAWA-autocomplete-drop-in?
Ja. Fladen er bygget som drop-in for DAWAs autocomplete, så du kan flytte et eksisterende adressefelt over uden at skrive frontend’en om. Søgningen kører fuzzy + præfiks (pg_trgm) over et lokalt indeks af DAR i stedet for kun eksakt-match.
Hvad er forskellen på /v1/autocomplete og /v1/adresse/search?
/v1/autocomplete er letvægts-typeahead: den returnerer tekst til visning og en stabil vaerdi pr. forslag, og du skifter mellem adgangsadresse, vejnavn og postnummer via type. /v1/adresse/search returnerer det fulde adresse-record — betegnelse, adgangsadresse_id, bfe_nummer, vejnavn, husnr, postnr, postnrnavn, kommunekode og koordinat — når du skal bruge mere end en label.
Hvordan får jeg et BFE-nummer ud fra et forslag?
Et adgangsadresse-hit bærer en UUID i vaerdi. Følg op med /v1/jordstykker/reverse, eller læs bfe_nummer direkte fra /v1/adresse/search. Skal du slå hele adresse-record’et op på selve UUID’en, bruger du Adresse-API’et (DAR).
Har I et API til adressesøgning?
Ja. GET /v1/autocomplete er et API til adressesøgning på danske adresser: send q ved hvert tastetryk og få rangerede adresseforslag retur på få millisekunder. Søgningen kører fuzzy + præfiks (pg_trgm) over et lokalt DAR-indeks, så stavefejl, forkortelser og halve gadenavne stadig rammer rigtigt. Skal du bruge mere end en label, laver GET /v1/adresse/search et fuldt adresseopslag med betegnelse, bfe_nummer, postnr og koordinat.
Kan API’et levere adresseforslag mens brugeren skriver?
Ja — det er præcis kernen. Hvert adresseforslag har en tekst til visning i dropdownen og en stabil vaerdi (adgangsadresse-UUID, vejnavn eller postnr) at binde valget til. Filtrér på type, hvis du kun vil have adgangsadresser, vejnavne eller postnumre. Fladen er bygget som drop-in for DAWAs autocomplete, så et eksisterende adressefelt kan flyttes over uden at skrive frontend’en om.
Hvor kommer adresserne fra?
Adresserne stammer fra DAR (Danmarks Adresseregister) via Datafordeler / SDFI, udstillet under CC BY 4.0. Grundfast sælger ikke selve dataene, men transformationen, stabiliteten og SLA’en — et rangeret, fuzzy-tolerant indeks der står op, også når upstream flapper.