Kodeeksempel: slå jordforurening op
Jordforurening på en matrikel
Kortlagt jordforurening hører til jordstykket — ikke til den enkelte adresse. Opslaget sker derfor på ejerlav + matrikelnummer, præcis som /v1/jordstykker:
curl -H "Authorization: Bearer <nøgle>" \
"https://api.danskadresseapi.dk/v1/jordforurening/2000151/639"Svaret
{
"ejerlavskode": 2000151,
"matrikelnr": "639",
"kortlagt": true,
"count": 1,
"results": [
{
"lokalitetsnr": "101-00001",
"status": "V2 kortlagt",
"v1_kortlagt": false,
"v2_kortlagt": true,
"lokalitetsnavn": "Søfortvej 5, m.fl., Prøvestenen",
"regionsnavn": "Region Hovedstaden",
"attest_url": "https://jord.miljoeportal.dk/report/?elav=2000151&matrnr=639",
"kilde_opdateret": "2026-04-27"
}
]
}V1 og V2 — hvad er forskellen?
| Niveau | Betydning |
|---|---|
| V1 | Regionen har viden om aktiviteter, der kan have forurenet grunden. Ikke undersøgt endnu. |
| V2 | Forurening er påvist ved undersøgelse. |
En lokalitet kan være begge dele; så står der V1 og V2 kortlagt, og både v1_kortlagt og v2_kortlagt er true. Brug de to booleans frem for at læse status-teksten — så slipper du for at parse dansk, og din kode brækker ikke hvis regionerne tilføjer en formulering.
En ren grund giver 200, ikke 404
Har matriklen ingen kortlagt forurening, får du stadig et svar:
{ "ejerlavskode": 2000151, "matrikelnr": "999x", "kortlagt": false, "count": 0, "results": [] }Det er bevidst. En 404 ville ikke kunne skelnes fra "ukendt matrikel", og for langt de fleste grunde er "ingen forurening" netop det svar man leder efter.
Fra adresse til forurening
Har du en adresse, så hent først dens matrikel og slå derefter op:
import os, requests
KEY = os.environ["DANSKADRESSEAPI_KEY"]
H = {"Authorization": f"Bearer {KEY}"}
BASE = "https://api.danskadresseapi.dk"
adr = requests.get(f"{BASE}/v1/adgangsadresser/0a3f5096-6d67-32b8-e044-0003ba298018",
headers=H, timeout=15).json()
elav = adr["ejerlavskode"]
matr = adr["matrikelnr"]
jord = requests.get(f"{BASE}/v1/jordforurening/{elav}/{matr}", headers=H, timeout=15).json()
if not jord["kortlagt"]:
print("Ingen kortlagt jordforurening på matriklen")
else:
for sag in jord["results"]:
niveau = "påvist" if sag["v2_kortlagt"] else "mistanke"
print(f"{sag['lokalitetsnr']}: {niveau} — {sag['attest_url']}")Filtrér på tværs
Listeendpointet tager ejerlavskode, regionsnavn og niveau:
curl -H "Authorization: Bearer <nøgle>" \
"https://api.danskadresseapi.dk/v1/jordforurening?regionsnavn=Region%20Midtjylland&niveau=v2&limit=100"niveau=v2 matcher også lokaliteter der er både V1 og V2.
Godt at vide
- Data kommer fra Danmarks Miljøportal (DKjord) og genhentes hver nat.
kilde_opdateretviser hvornår regionen sidst rørte den enkelte sag. attest_urlpeger på den officielle jordforureningsattest — den samme man ellers selv skal finde frem ved en bolighandel.- Flere adresser på samme matrikel deler naturligvis samme sager.
- En matrikel kan have flere lokaliteter. Tjek
countfrem for at antage én.
