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.

3 min Niveau: Begynder ✓ Kode testet

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:

FeltVærdi
URLhttps://api.danadresse.dk/datavask/adgangsadresser
Query String Paramsbetegnelse = adressefeltet fra triggeren
HeadersX-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 ZapierIndhold
KategoriA, B eller C for det bedste match
Resultater Adresse IdAdgangsadressens UUID
Resultater Adresse Vejnavn / HusnrVej og husnummer
Resultater Adresse Postnr / PostnrnavnPostnummer 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.

JavaScript#code-by-zapier
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:

KodeBetydning
quota_exceededGratisplanens 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_keyNøglen er forkert eller mangler
key_blocked, origin_not_allowedNø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

Shell#test-call
curl -s "https://api.danadresse.dk/datavask/adgangsadresser?betegnelse=Strandvejen%20100%2C%202900%20Hellerup" \
  -H "X-Api-Key: $DANADRESSE_API_KEY"

Næste skridt

Relaterede guides

Markdown-kilde Fejl i guiden? Skriv til os API-reference (Swagger)

Prøv det med en gratis nøgle

2 000 kald/måned på gratisplanen. Intet kreditkort.

Opret konto →