Danmarks Adresseregister (DAR)

# Datavask af kundelister mod DAR

Send de adresser, jeres CRM har samlet gennem årene — med stavefejl, forkortelser og manglende postnumre — og få hver af dem tilbage som en rigtig DAR-adresse med en lighed, en A/B/C-kategori og ejendommens BFE-nummer.

[Opret gratis konto](https://grundfast.dk/dashboard?mode=register) [Se dokumentationen](https://grundfast.dk/docs/api/datavask)

Kaldene

- [GET /v1/datavask/adgangsadresser](https://grundfast.dk/docs/api/datavask)
- [POST /v1/datavask/adgangsadresser:batch](https://grundfast.dk/docs/api/datavask-batch)

GET /v1/demo/datavask/adgangsadresser

klar

- Solbakkevej 70, 8600 Silkeborg
- aaboulevarden 1 8000 aarhus
- kongens nytorv 34 1050
- nyhavn 20, 1051 kbh k
- industrivej 12B vodskov

5 rækker = 5 kald A 0 B 0 C 0

Hver linje er et rigtigt kald til samme vask som `/v1/datavask/adgangsadresser` — kandidater, `lighed` og kategori er dem, din nøgle får. “Rettet” og “tilføjet” er en sammenligning af din linje med DAR-adressen.

Hvad du får

## Et svar, I kan skrive tilbage uden at gætte

Hver adresse kommer tilbage med de kandidater, DAR har, bedste først — og med tal nok til, at en regel kan afgøre, hvad der sker med rækken.

1. ### Den rigtige adresse
Kandidaterne er rigtige DAR-adresser, og `adgangsadresse_id` er den samme, uanset hvordan adressen var stavet — en stabil nøgle til at finde dubletter.
2. ### En kategori at forgrene på
A skrives tilbage, B bekræftes, C gennemgås — og antal: 0 er intet match. Samme bånd som DAWA’s datavask, så eksisterende regler kan genbruges.
3. ### Lighed på hver kandidat
`lighed` fra 0 til 1, så I selv kan stramme grænsen eller vise brugeren, hvor sikkert et match er.
4. ### BFE-nummeret følger med
Hver kandidat bærer ejendommens BFE-nummer. Det er nøglen til [databerigelse](https://grundfast.dk/databerigelse) med BBR, matrikel og vurdering.

GET /v1/datavask/adgangsadresser?betegnelse=kongens+nytorv+34+1050 json

```
{
  "kategori": "B",
  "antal": 3,
  "resultater": [
    {
      "betegnelse": "Kongens Nytorv 34, 1050 København K",
      "adgangsadresse_id": "0a3f507a-ac39-32b8-e044-0003ba298018",
      "bfe_nummer": 6010136,
      "vejnavn": "Kongens Nytorv",
      "husnr": "34",
      "postnr": "1050",
      "postnrnavn": "København K",
      "kommunekode": "0101",
      "koordinat": { "lon": 12.5846681, "lat": 55.6805965 },
      "lighed": 0.697
    },
    {
      "betegnelse": "Kongens Nytorv 3, 1050 København K",
      "adgangsadresse_id": "0a3f507a-ac1d-32b8-e044-0003ba298018",
      "bfe_nummer": 6033794,
      "lighed": 0.618,
      "…": "…"
    }
  ]
}
```

Vis hele svaret (25 linjer)

Hele listen

## Fra CSV til vasket liste — og hvad den koster

50 adresser pr. kald, svaret i samme rækkefølge som listen. Én række er ét kald, så prisen på en liste er let at regne ud på forhånd.

vask_kundeliste.py python

```
import csv, requests

URL = "https://api.grundfast.dk/v1/datavask/adgangsadresser:batch"
HEADERS = {"Authorization": "Bearer gf_live_…"}

with open("kunder.csv", newline="") as f:
    kunder = list(csv.DictReader(f))

vasket = []
for i in range(0, len(kunder), 50):  # højst 50 adresser pr. kald
    bid = kunder[i : i + 50]
    adresser = sorted({k["adresse"].strip() for k in bid if len(k["adresse"].strip()) >= 2})
    svar = requests.post(URL, headers=HEADERS, json={"betegnelser": adresser}).json()
    pr_adresse = {r["input"]: r for r in svar["results"]}  # dubletter vaskes én gang
    for kunde in bid:
        r = pr_adresse.get(kunde["adresse"].strip(), {"antal": 0})
        bedst = r["resultater"][0] if r["antal"] > 0 else {}
        vasket.append({**kunde,
                       "dar_adresse": bedst.get("betegnelse"),
                       "adgangsadresse_id": bedst.get("adgangsadresse_id"),
                       "bfe_nummer": bedst.get("bfe_nummer"),
                       "kategori": r["kategori"] if r["antal"] > 0 else "intet match"})

with open("kunder_vasket.csv", "w", newline="") as f:
    w = csv.DictWriter(f, fieldnames=vasket[0].keys())
    w.writeheader(); w.writerows(vasket)
```

| Plan | Inkluderet | Pr. 1.000 | Ud over planen |
| --- | --- | --- | --- |
| Free | 5.000 kald for 0 kr. | 0 kr. | Stopper ved loftet |
| Starter | 100.000 kald for 99 kr./md. | 0,99 kr. | 1 kr. pr. 1.000 |
| Pro | 500.000 kald for 249 kr./md. | 0,50 kr. | 1 kr. pr. 1.000 |
| Scale | 2.000.000 kald for 599 kr./md. | 0,30 kr. | 1 kr. pr. 1.000 |

Én række er ét kald, og dubletter i samme batch tælles én gang. Batch-kaldet er med fra Pro-planen; på Free og Starter vasker I listen række for række med GET-kaldet eller uploader den — samme svar, samme pris pr. række. En testnøgle giver 5.000 testkald om måneden, der aldrig faktureres. Se alle planer på [priser](https://grundfast.dk/priser).

Kald det

## Én adresse ad gangen

Til en import, der kører løbende, eller en liste på en plan uden batch. Samme nøgle og samme svarform som resten af API’et.

```
curl -H "Authorization: Bearer gf_live_…" \
  "https://api.grundfast.dk/v1/datavask/adgangsadresser?betegnelse=kongens+nytorv+34+1050"
```

| Felt | Indhold |
| --- | --- |
| kategori | A = sikkert match, B = sandsynligt, C = gennemgå. |
| antal | Antal kandidater. 0 betyder intet match — tjek det før kategorien. |
| resultater[].betegnelse | Den vaskede DAR-adresse på én linje. |
| resultater[].adgangsadresse_id | DAR-UUID’et — en stabil nøgle til dubletfjernelse. |
| resultater[].lighed | Lighed mellem jeres tekst og kandidaten, 0–1. |
| resultater[].bfe_nummer | Ejendommens BFE-nummer, når jordstykket er kendt. |

| Hvad | Median | 95 % under |
| --- | --- | --- |
| Datavask | 469 ms | 1,44 s |

30 kald pr. række til /v1/datavask/adgangsadresser i produktion, målt med API’ets egen X-Took-Ms-header — tiden på vores server. Netværket mellem jer og os kommer oveni.

Uden kode

## Upload kundelisten, hent den vasket

Har I listen i et regneark og ingen udvikler ved hånden, kan den vaskes fra dashboardet. Det er samme vask og samme pris pr. række som API’et.

| Trin | Hvad sker der |
| --- | --- |
| 1. Upload | En CSV- eller Excel-fil med kolonnenavne i første linje. Jeres egne kolonner — kundenummer, noter — følger med uændret. |
| 2. Tjek kolonnerne | Dashboardet gætter, hvilken kolonne der er adresse og postnummer. Ret gættet, før listen kører. |
| 3. Kør | Listen vaskes i baggrunden. Den kan sættes på pause, fortsættes eller stoppes. |
| 4. Hent | Jeres fil med de vaskede kolonner tilføjet til højre. Rækker uden match ligger i en fejlfil og koster ikke noget. |

En liste må have op til 10.000 rækker på Starter, 100.000 på Pro og 500.000 på Scale. På Free kan I prøve med 250 rækker.

Kun rækker med et match tæller. Den samme kørsel findes som API — `POST /v1/jobs` med en CSV eller JSON — til en import, der skal køre af sig selv. Se [dokumentationen for job](https://grundfast.dk/docs/jobs).

Hvem bruger det

## Rene adresser er første skridt

De fleste vasker en liste for at kunne gøre noget med ejendommene bagefter. Se hvordan på en rigtig ejendom.

- [Produktteams bag bolig-, forsikrings- og mæglerapps Proptech og boligplatforme Fang adressen rigtigt, og vis hele ejendommen i jeres produkt](https://grundfast.dk/loesninger/proptech)
- [Investorer, asset managers, rådgivere Due diligence Screen en ejendom eller en hel portefølje, før I byder](https://grundfast.dk/loesninger/due-diligence)

Spørgsmål

## Ofte stillede spørgsmål

### Hvad er datavask af kundelister?

Datavask er at rette de adresser, en kundeliste har samlet gennem årene — stavefejl, forkortelser, manglende postnumre, gamle vejnavne — så hver række peger på én rigtig adresse i Danmarks Adresseregister. Resultatet er en officiel stavemåde, et stabilt DAR-id til at finde dubletter med og en kategori, der siger, hvor sikkert hvert match er.

### Hvad betyder kategori A, B og C?

A er et sikkert match: den bedste kandidat ligner jeres tekst meget og klart mere end den næstbedste. B er sandsynligt — lad en bruger eller en regel bekræfte det. C betyder gennemgå. Et C med antal: 0 er intet match overhovedet, så forgren altid på antal, før I kigger på kategorien.

### Hvorfor får en rigtig adresse et B?

Fordi kategorien måler, hvor tæt jeres tekst er på DAR’s, ikke om adressen findes. “kongens nytorv 34 1050” mangler bynavnet og får et B, selv om den bedste kandidat er den rigtige. Jo mere af adressen, der står i feltet, jo oftere bliver det et A.

### Hvad er lighed, og hvilken tærskel skal vi bruge?

lighed er trigram-lighed mellem jeres tekst og kandidaten, fra 0 til 1 — samme mål som PostgreSQL’s pg_trgm. Kategorierne bygger på den: A kræver mindst 0,85 og et klart forspring, B mindst 0,55. Vil I være strengere, så sæt jeres egen grænse på lighed.

### Kan vi vaske en hel liste i ét kald?

Ja, fra Pro-planen: POST `/v1/datavask/adgangsadresser:batch` tager op til 50 adresser og svarer i samme rækkefølge. Hver unik adresse tæller som ét kald. På de andre planer looper I over GET-kaldet — resultatet er det samme.

### Kan vi vaske en liste uden at skrive kode?

Ja. Upload listen som CSV eller Excel under Lister i dashboardet. Den vaskes i baggrunden, og I henter jeres egen fil tilbage med de vaskede kolonner tilføjet. Starter tager 10.000 rækker pr. liste, Pro 100.000, og rækker uden match koster ikke noget.

### Skal vi bruge datavask i en formular?

Til at forhindre fejlen: autocomplete, så brugeren vælger en rigtig adresse, mens hun skriver. Til at tjekke den adresse, der alligevel bliver sendt: adressevalidering, som bruger samme opslag og svarer med godkend, “mente du …?” eller afvis. Datavask er til adresser, der allerede er tastet — en liste, en import, et gammelt CRM.

### Hvad er forskellen på datavask og databerigelse?

Datavasken gør adressen rigtig og giver jer BFE-nummeret. Databerigelse er næste skridt: med BFE-nummeret henter I bygningen fra BBR, grunden fra Matriklen og den offentlige vurdering — kolonner som opførelsesår, areal og ejendomsværdi på hver række.

Se også

- [Databerigelse med BBR, CVR og vurdering Næste skridt: ejendommen bag hver række](https://grundfast.dk/databerigelse)
- [CVR-API Når kundelisten er virksomheder](https://grundfast.dk/cvr-api)
- [Adressevalidering Én adresse, tjekket mens kunden er der](https://grundfast.dk/adressevalidering-api)
- [Adresse-autocomplete Stop fejlene, mens adressen tastes](https://grundfast.dk/adresse-autocomplete-api)
- [Adresse-API Adresseopslag i DAR](https://grundfast.dk/adresse-api)
- [Hvilken ejendom holder virksomheden til på? Guide: vask CVR-adresser til BFE](https://grundfast.dk/guides/cvr-og-adressedata)

Begreber og guides

- [Adgangsadresse](https://grundfast.dk/begreber/adgangsadresse)
- [DAR](https://grundfast.dk/begreber/dar)
- [Postnummer](https://grundfast.dk/begreber/postnummer)

- [Hvordan rydder vi op i en rodet adresseliste?](https://grundfast.dk/guides/ryd-op-i-en-adresseliste)
- [Hvordan sender vi en hel kundeliste igennem på én gang?](https://grundfast.dk/guides/en-hel-kundeliste-som-job)
- [Hvordan ved vi, at leveringsadressen findes, før ordren gemmes?](https://grundfast.dk/guides/tjek-adressen-foer-ordren)
- [Hvordan klarer vi os med færre kald?](https://grundfast.dk/guides/spar-paa-kald)

Datavask-API

## Vask den første liste i dag

Opret en gratis konto — de første 5.000 rækker hver måned koster ingenting, og en testnøgle følger med.

[Opret gratis konto](https://grundfast.dk/dashboard?mode=register) [Se dokumentationen](https://grundfast.dk/docs/api/datavask)

Gratis op til 5.000 kald/md · intet kreditkort · data fra Klimadatastyrelsen/Datafordeler, CC BY 4.0
