Spring til indhold

DAWA drop-in — live

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/autocomplete

API 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.

GETGET /v1/demo/adresse-search

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:

terminal
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

Parametre til GET /v1/autocomplete
ParameterTypeBeskrivelse
qstringSøgestrengen — sendes ved hvert tastetryk. Min. 2 tegn; fuzzy + præfiks over DAR-indekset.
typestringadgangsadresse (standard), vejnavn eller postnummer — vælger hvilken resurse forslagene kommer fra. adresse aliaseres til adgangsadresse.
kommunekodestringValgfrit — afgrænser vejnavn-forslag til én kommune (op til 4 cifre).

Felter i svaret

Felter i svaret fra GET /v1/autocomplete
FeltTypeBeskrivelse
typestringResursetypen for forslagene — adgangsadresse, vejnavn eller postnummer.
antalnumberAntal forslag i resultater (top-rangeret, capped som typeahead).
resultaterarrayRangerede adresseforslag, bedste match først.
resultater[].tekststringDen pæne label til dropdownen, fx “Rådhuspladsen 1, 1550 København V”.
resultater[].vaerdistringStabil 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.

Funktionssammenligning: Grundfast, DAWA og rå Datafordeler
FunktionGrundfastDAWARå Datafordeler
tekst + vaerdi pr. forslagJaJaNej
Fuzzy + præfiks (pg_trgm)JaJaNej
Filtrér på type (adresse/vej/postnr)JaJaNej
BFE-bro fra forslag til ejendomJaNejNej
Overlever Datafordeler-nedlukningerneJaNejJa
Cachet SLA-mirror (står op når upstream flapper)JaNejNej
GET/v1/autocomplete
live

Typeahead pr. tastetryk — tekst + vaerdi, filtreret på type (adgangsadresse / vejnavn / postnummer). Live nu.

GET/v1/adresse/search
live

Fuldt adresse-record — betegnelse, bfe_nummer, husnr, postnr og koordinat i ét svar. Live nu.

GET/v1/demo/adresse-search
live

Nø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.