Adressevalidering, før ordren gemmes
Tjek adressen, kunden har tastet, mod DAR i det øjeblik formularen sendes. Svaret er en kategori, der afgør, hvad formularen gør: godkend, spørg “mente du …?” eller afvis — og den korrekte adresse med sit DAR-id.
Kategori B — spørg kunden
Mente du
Nørrebrogade 30, 2200 København N?
- husnr. rettet
lighed 0,939 — tæt på, men ikke sikkert nok til at gemme uden at spørge.
Samme svar i jeres backend — med jeres egen nøgle.
Hent det som JSON — gratis nøgle/v1/datavask/adgangsadresser. Hvad formularen gør ved A, B og C, er jeres regel — her: godkend A, spørg ved B og C, afvis ved antal: 0.Hvad du får
Tre spørgsmål besvaret i ét kald
Findes adressen? Hvad hedder den rigtigt? Og hvor sikre kan I være? En validering, der kun svarer ja eller nej, giver jer ikke noget at spørge kunden om.
Den rigtige stavemåde
betegnelse er adressen, som DAR har den: “aaboulevarden” bliver Åboulevarden, en manglende by kommer med, og husnummeret er DAR’s.
En kategori at handle på
A, B eller C — og
antal: 0for intet match. Fire udfald, fire ting formularen kan gøre.Et id i stedet for en tekst
Gem
adgangsadresse_id. Så kan adressen slås op igen, sammenlignes uden stavefejl og følges, hvis vejen skifter navn.Kommune og ejendom med
Kommunekode, koordinat og BFE-nummer i samme svar — til kortet, til fragtzonen eller til bygningen bag adressen.
{ "kategori": "B", "antal": 10, "resultater": [ { "betegnelse": "Nørrebrogade 30, 2200 København N", "adgangsadresse_id": "0a3f507a-d063-32b8-e044-0003ba298018", "bfe_nummer": 6017781, "vejnavn": "Nørrebrogade", "husnr": "30", "postnr": "2200", "postnrnavn": "København N", "kommunekode": "0101", "koordinat": { "lon": 12.5589614, "lat": 55.6886772 }, "lighed": 0.939 }, { "betegnelse": "Nørrebrogade 31, 2200 København N", "lighed": 0.882, "…": "…" } ] }
Fire udfald
Fra kategori til næste skridt i formularen
API’et siger, hvor godt teksten passer. Hvad formularen gør ved det, er jeres regel — her er den, de fleste ender med.
| Svar | Betyder | Formularen |
|---|---|---|
| kategori A | Teksten ligner én adresse i DAR klart mere end alle andre. | Godkend. Gem adgangsadresse_id og DAR’s stavemåde i stedet for kundens. |
| kategori B | Sandsynligt match — men det kan være naboens nummer. | Spørg: “Mente du Nørrebrogade 30?” Gem først, når kunden har sagt ja. |
| kategori C, antal > 0 | Der er kandidater, men ingen skiller sig ud. | Vis de tre bedste, og lad kunden vælge eller rette. |
| antal: 0 | Intet i DAR ligner teksten nok til at være et forslag. | Afvis feltet og bed om en ny adresse. |
// POST /api/valider-adresse — kaldes, når kunden trykker "Gå til betaling". app.post('/api/valider-adresse', async (req, res) => { const { vej, postnr, by } = req.body; const url = new URL('https://api.grundfast.dk/v1/datavask/adgangsadresser'); url.searchParams.set('betegnelse', `${vej}, ${postnr} ${by}`); const r = await fetch(url, { headers: { Authorization: `Bearer ${process.env.GRUNDFAST_API_KEY}` }, }); if (!r.ok) return res.json({ status: 'ukendt' }); // lad ordren gå videre, tjek senere const { kategori, antal, resultater } = await r.json(); if (antal === 0) return res.json({ status: 'afvist' }); const bedst = resultater[0]; if (kategori === 'A') { return res.json({ status: 'ok', id: bedst.adgangsadresse_id, adresse: bedst.betegnelse }); } // B og C: spørg kunden — "Mente du …?" res.json({ status: 'spoerg', forslag: resultater.slice(0, 3).map((k) => k.betegnelse) }); });
Kald API’et fra jeres backend, så nøglen aldrig ligger i browseren — og svar frontend med et udfald, ikke med rå kandidater.
Et B er ikke et ja. “Nørrebrogade 300” findes ikke, og den bedste kandidat, Nørrebrogade 30, har lighed 0,939 — tæt nok til at se rigtig ud, og forkert nok til at sende pakken til en anden dør.
Svarer API’et ikke, så lad ordren gå videre og tjek adressen bagefter. En validering bør aldrig være grunden til, at et køb fejler.
Præcist tjek
Etage, dør og gemte adresser
Datavasken vurderer en tekst. Når adressen allerede ligger i felter, kan I spørge DAR direkte — og få et ja eller et tomt svar.
# Findes 2. th. i Vesterbrogade 10, 1620? Tomt svar = nej. curl -H "Authorization: Bearer gf_live_…" \ "https://api.grundfast.dk/v1/adresser?vejnavn=Vesterbrogade&husnr=10&postnr=1620&etage=2&doer=th" # Er en gemt adresse stadig gældende? 404 = DAR har ingen gældende adresse med det id. curl -H "Authorization: Bearer gf_live_…" \ "https://api.grundfast.dk/v1/adresse/0a3f507a-d063-32b8-e044-0003ba298018"
Etage og dør
/v1/adresserfiltrerer på vej, husnummer, postnummer, etage og dør. Findes lejligheden ikke, er listen tom.Gemte adresser
/v1/adresse/:uuidgiver adressen, som den er registreret i dag, og 404, hvis DAR ikke har en gældende adresse med det id.Store mængder
Ligger adresserne allerede i et system, er det en liste — datavask tager dem i batch eller som en uploadet fil.
Hvem bruger det
Adresser, der skal være rigtige første gang
En forkert adresse koster en returpakke, et forkert tilbud eller en police på den forkerte bygning.
Spørgsmål
Ofte stillede spørgsmål
Det er samme opslag i DAR, brugt to steder. Validering sker i øjeblikket, adressen tastes — én adresse, en kunde, der kan svare på “mente du …?”. Datavask er en liste, der allerede ligger i et CRM eller en import, hvor rækkerne vaskes i bulk og skrives tilbage uden nogen at spørge.
Ja. Autocomplete forhindrer de fleste fejl, men ikke alle: browserens autoudfyld, en indsat adresse, en kunde, der skriver forbi forslagene, eller en ordre fra et andet system når aldrig forslagslisten. Valideringen er tjekket bagved, der fanger dem, før ordren gemmes.
Ja, med felterne hver for sig: /v1/adresser?vejnavn=&husnr=&postnr=&etage=&doer= svarer med enhedsadressen, hvis den findes i DAR, og med en tom liste, hvis den ikke gør. Datavasken arbejder på adgangsadressen — vej, husnummer og postnummer — og siger ikke noget om etage og dør.
Slå det gemte DAR-id op med /v1/adresse/:uuid. Svaret er adressen, som den er registreret nu — også hvis vejen har skiftet navn — og 404, hvis DAR ikke længere har en gældende adresse med det id.
Målt 6. oktober 2026 på serveren svarede datavasken på 469 ms i median, og 95 % af kaldene på under 1,44 s. Netværket til jer kommer oveni. Kald den, når formularen sendes — ikke ved hvert tastetryk; dér er autocomplete det rigtige.
Ét tjek er ét kald. Free-planen har 5.000 kald om måneden, Starter 100.000, og kald ud over planen koster 1 kr. pr. 1.000 på de betalte planer. En gf_test_-nøgle giver 25.000 testkald om måneden, der aldrig faktureres.
Se også
Adressevalidering
Valider den første adresse i dag
Gratis op til 5.000 kald/md · intet kreditkort · data fra Klimadatastyrelsen/Datafordeler, CC BY 4.0