Vask adresser i Zapier med Webhooks eller Code by Zapier
Kald datavask fra en Zap med Webhooks by Zapier, vælg det rigtige resultat ud af listen, og håndter fejl og 429 med Code by Zapier.
Zapier kan vaske en adresse, hver gang en formular bliver sendt, en lead oprettes eller en række kommer ind i et regneark. Den korte opskrift står på /integrationer/zapier. Her får du den præcise feltmapping, en faldgrube med lister og en version med fejlhåndtering.
1. Webhooks by Zapier: GET
Tilføj et trin: Webhooks by Zapier → GET. Udfyld:
| Felt | Værdi |
|---|---|
| URL | https://api.danadresse.dk/datavask/adgangsadresser |
| Query String Params | betegnelse = adressefeltet fra triggeren |
| Headers | X-Api-Key = din nøgle |
Læg nøglen under Headers i stedet for api_key i query-strengen. URL'en med query-strengen vises i Zap-historikken.
/datavask/adgangsadresser matcher opgangen (vej, husnummer, postnummer). Skal du ramme en bestemt lejlighed, så brug /datavask/adresser: den læser etage og dør direkte fra betegnelse (Strandvejen 100, 2. tv, 2900 Hellerup), og resultatet har så også etage, dør og adgangsadresseid. Separate parametre (vejnavn, husnr, etage, dør, postnr) virker også.
2. Faldgruben: lister bliver slået sammen
Svaret har en liste, resultater, med op til flere kandidater. Zapier viser felter fra en liste som én værdi, hvor alle elementer er sat sammen med komma. Feltet Resultater Adresse Postnr kan derfor være 2900,2900, hvis der kom to kandidater.
Brug kun det første element. Tilføj Formatter by Zapier → Utilities → Pick from List, vælg feltet (fx Resultater Adresse Id) og Choose: First. Gentag for de felter, du skal bruge, eller brug Code by Zapier i trin 4, som giver dig ét objekt.
| Felt i Zapier | Indhold |
|---|---|
| Kategori | A, B eller C for det bedste match |
| Resultater Adresse Id | Adgangsadressens UUID |
| Resultater Adresse Vejnavn / Husnr | Vej og husnummer |
| Resultater Adresse Postnr / Postnrnavn | Postnummer og by |
Vaskesvaret har ikke kommune eller koordinater. Versionen med Code by Zapier i trin 4 henter dem med ét kald mere.
3. Filtrér på kategori
Tilføj Filter by Zapier: fortsæt kun, hvis Kategori er A eller B. A er et præcist match. B er ét sikkert match med små stavefejl, så skriv den officielle tekst fra resultatet tilbage. C-adresser (flere kandidater eller større afvigelser) skal ses af et menneske. Har du en plan med Paths, kan du sende dem til en egen gren, fx en Slack-besked.
4. Med fejlhåndtering: Code by Zapier
Webhooks-steppet giver dig ikke statuskoden som felt, og et fejlsvar stopper steppet. Vil du skelne mellem fejltyper, så brug Code by Zapier → Run JavaScript i stedet. Under Input Data sætter du adresse til adressefeltet og apiKey til nøglen.
const BASE = "https://api.danadresse.dk"; const headers = { "X-Api-Key": inputData.apiKey }; const url = new URL(BASE + "/datavask/adgangsadresser"); url.searchParams.set("betegnelse", inputData.adresse || ""); const res = await fetch(url, { headers }); const body = await res.json().catch(() => ({})); // Minutgrænsen: kast en fejl, så Zapier kan køre trinnet igen senere. if (res.status === 429 && res.headers.get("retry-after")) { throw new Error("Danadresse: for mange kald i minuttet, prøv igen"); } // Andre fejl, fx quota_exceeded eller en spærret nøgle: send koden og forklaringen videre. if (!res.ok) { return { status: res.status, fejlkode: body.code || "ukendt", besked: body.title || "", upgrade_url: (body.details && body.details.upgrade_url) || "", kategori: "", }; } const top = (body.resultater && body.resultater[0] && body.resultater[0].adresse) || {}; let adg = {}; if (top.id) { // Vaskesvaret har ikke kommune og koordinater: ét kald mere til dem. const r2 = await fetch(BASE + "/adgangsadresser/" + top.id, { headers }); if (r2.ok) adg = await r2.json(); } return { status: res.status, fejlkode: "", kategori: body.kategori, id: top.id || "", vejnavn: top.vejnavn || "", husnr: top.husnr || "", postnr: top.postnr || "", by: top.postnrnavn || "", kommune: (adg.kommune && adg.kommune.navn) || "", x: adg.adgangspunkt?.koordinater?.[0] ?? "", // længdegrad y: adg.adgangspunkt?.koordinater?.[1] ?? "", // breddegrad };
Koden kører inde i en async-funktion hos Zapier, så await og return på øverste niveau er gyldigt der. Efter trinnet har du flade felter som kategori, postnr og fejlkode, som du kan filtrere på direkte. Ved en fejl indeholder besked API'ets forklaring i klar tekst.
fejlkode kan fx være:
| Kode | Betydning |
|---|---|
quota_exceeded | Gratisplanens månedskvote og dens buffer på 20 % er brugt. Den nulstilles den 1. i næste måned; upgrade_url linker til opgraderingssiden |
invalid_api_key, missing_api_key | Nøglen er forkert eller mangler |
key_blocked, origin_not_allowed | Nøglen er spærret eller låst til domæner. Brug en servernøgle uden domænelås |
Har din Zapier-plan Autoreplay slået til, kører Zapier fejlede trin igen senere. Det passer til minutgrænsen. Ved en brugt månedskvote hjælper det ikke.
5. Forbrug
Hver Zap-kørsel er ét kald med Webhooks, to med versionen med Code by Zapier. Afviste kald (429) tæller ikke. Kører din Zap på en import med mange rækker, kan du ramme minutgrænsen på 360 kald i minuttet på gratisplanen. Se forbruget under Forbrug.
Test kaldet
curl -s "https://api.danadresse.dk/datavask/adgangsadresser?betegnelse=Strandvejen%20100%2C%202900%20Hellerup" \ -H "X-Api-Key: $DANADRESSE_API_KEY"
Næste skridt
- Make og n8n
- Grænser, kvoter og 429
- Kort opskrift: /integrationer/zapier
Relaterede guides
Markdown-kilde Fejl i guiden? Skriv til os API-reference (Swagger)