Zone og lokalplan på et koordinat — med status, PDF og bebyggelsesprocent
Hvilken zone ligger grunden i, hvilke lokalplaner og kommuneplanrammer dækker den, og hvad må der bygges? Ét kald læser kommunernes planer i Plandata — og på et BFE får du en vejledende restbyggeret med alle input.
Én ejendom, alle planer
Hvilke planer gælder grunden — og hvad må der bygges?
Vælg et eksempel eller søg en adresse. Zone, lokalplaner, delområder og kommuneplanrammer tegnes fra Plandata; en plan, der kun dækker en del af grunden, siges som sådan.
Søg i alle 2,7 mio. danske adgangsadresser.
Prøv fx
Henter geometri …
- Zone
- Byzone
- Lokalplan 208
- d'Angleterre
- Lokalplan 152
- Strøget (en del af grunden)
- Ramme R24.S.1.44
- Erhvervsområde
Henter registrets geometri …
$.plan {"zone": {"status": "byzone","kilde": "zonekort","kommune": {"kode": 101,"navn": "København"},"konflikt": false},"har_lokalplan": true,"lokalplaner": [{"plannr": "208","navn": "d'Angleterre","status": "vedtaget","anvendelse": null,"dokument_url": "https://dokument.plandata.dk/20_1072552_APPROVED_1202814356214.pdf","bebyggelsesprocent": null,"max_etager": null,"max_hoejde_m": null,"ved_punkt": true},// … 1 mere],"kommuneplanramme": {"rammenr": "R24.S.1.44","navn": "R24.S.1.44 - S","anvendelse": "Erhvervsområde","dokument_url": "https://dokument.plandata.dk/11_11347088_1737715824963.pdf","bebyggelsesprocent": null},"omfang": "grund","zoner_paa_grunden": ["byzone"],"andre_kommuneplanrammer": [],"restbyggeret": {"vejledende": true,"restbyggeret_m2": 7756,"tilladt_etageareal_m2": 18499,"grundlag": {"kilde": "delomraade","plan_id": 1072950,"plannr": "208","delnr": "I","bebyggelsesprocent": 690,"beregnes_af": "Den enkelte ejendom"},"grundareal_m2": 2681,"antal_jordstykker": 1,"eksisterende_etageareal_m2": 10743,"eksisterende_bebygget_areal_m2": 2518,"antal_bygninger": 3,"bygninger_uden_etageareal": 2,"formel": "restbyggeret_m2 = bebyggelsesprocent / 100 × grundareal_m2 − eksisterende_etageareal_m2","ikke_beregnet": null,"forbehold": "Vejledende beregning. Planens tekst (dokument_url) er afgørende, og bygningsreglementets definition af etageareal — herunder hvilke kældre, carporte, garager og udhuse der ikke medregnes — kan ikke læses af registrene. Kontakt kommunen før et projekt."}}curl "https:// api.grundfast.dk/ v1/ plan/ ejendom/ 6010136" \ -H "Authorization: Bearer $GRUNDFAST_API_KEY" svarede efter 807 ms i sammensætningenMere om Plandata →
Zone
Byzone
Byggeri følger lokalplan, kommuneplan og bygningsreglementet.
Lokalplan 208· gælder grunden
d'Angleterre
Plandata bærer ingen tal for bebyggelsen — de står i planens tekst.
Læs planen (PDF) →Lokalplan 152· en del af grunden
Strøget
- Anvendelse
- Erhvervsområde
Kommuneplanramme R24.S.1.44
- Anvendelse
- Erhvervsområde
Binder kommunens planlægning, ikke grundejeren direkte.
Læs planen (PDF) →
Restbyggeret · vejledende
Ca. 7.756 m² etageareal tilbage
690 % af 2.681 m² grund giver 18.499 m²; BBR registrerer 10.743 m² etageareal i dag. Procenten er fra delområde I i lokalplan 208.
2 bygninger uden etageareal i BBR er ikke talt med. Bygningsreglementet afgør, hvad der tæller som etageareal (kældre, carporte, udhuse), og planens tekst går forud. Spørg kommunen før et projekt.
På planen: zonen som flade, lokalplaner med fuld streg og deres nummer, delområder stiplet, kommuneplanrammer prikket. Det, der rammer grunden, står stærkest — peg på en plan her, så lyser den på kortet.
Hvad du får
Planerne, som registret siger dem — og intet, det ikke siger
Vedtaget, forslag og aflyst hver for sig
statusStatus læses fra registret, ikke fra planens navn — i Ringsted hedder en vedtaget plan bogstaveligt “Forslag til lokalplan 328”. Aflyste planer står i en liste for sig.
Landzone siges, ikke gættes
zone.kilde: "afledt"Zonekortet rummer kun by- og sommerhusområder. Landzone er resten (§ 34), og svaret siger, at det er afledt. Til havs svarer vi 404.
Planens PDF følger med
dokument_urlHver plan peger på sin PDF hos Plandata. Det er den, der afgør — tallene i svaret er registrets uddrag af den.
“Ingen lokalplan” kommer aldrig af en fejl
502, aldrig tomKan Plandata ikke nås, er et lag tomt, eller er svaret afkortet, får du 502. En tom liste er altid et målt svar.
Prøv det
Kald demoen — uden nøgle
Demo-endpointet svarer med et rigtigt opslag: en villagrund i Silkeborg i byzone, uden lokalplan, under en kommuneplanramme på 30 % — og restbyggeretten regnet fra BBR og Matriklen for samme ejendom.
GET/v1/demo/plan
Solbakkevej 70, Silkeborg · byzone · ramme 10-B-41 · restbyggeret vejledende
{ "punkt": { "lon": 9.5328657, "lat": 56.1578621 }, "epsg25832": [ 533097.89, 6223777.27 ], "bfe_nummer": 5651067, "zone": { "status": "byzone", "kilde": "zonekort", "kommune": { "kode": 740, "navn": "Silkeborg" }, "konflikt": false }, "har_lokalplan": false, "lokalplaner": [], "delomraader": [], "kommuneplanrammer": [ { "plan_id": 10972225, "rammenr": "10-B-41", "navn": "Sydbyen vest", "status": "vedtaget", "distrikt": null, "kommune": { "kode": 740, "navn": null }, "anvendelse": "Boligområde", "zone": "Byzone", "fremtidig_zone": "Byzone", "datoer": { "forslag": "2022-01-31", "vedtaget": "2022-08-29", "ikrafttraedelse": "2022-09-12", "aflyst": null }, "dokument_url": "https://dokument.plandata.dk/12_10972215_1662721059028.pdf", "bebyggelse": { "bebyggelsesprocent": 30, "beregnes_af": "Den enkelte ejendom", "max_etager": 2, "max_hoejde_m": 8.5 } }, { "plan_id": 12189078, "rammenr": "10-B-41", "navn": "Sydbyen vest, Sydbyen", "status": "forslag", "distrikt": null, "kommune": { "kode": 740, "navn": null }, "anvendelse": "Boligområde", "zone": null, "fremtidig_zone": "Byzone", "datoer": { "forslag": "2026-05-26", "vedtaget": null, "ikrafttraedelse": null, "aflyst": null }, "dokument_url": "https://dokument.plandata.dk/12_12189076_1780294192892.pdf", "bebyggelse": { "bebyggelsesprocent": 30, "beregnes_af": "Den enkelte ejendom", "max_etager": 2, "max_hoejde_m": null } } ], "aflyste_lokalplaner": [], "restbyggeret": { "vejledende": true, "restbyggeret_m2": 22, "tilladt_etageareal_m2": 138, "grundlag": { "kilde": "kommuneplanramme", "plan_id": 10972225, "plannr": "10-B-41", "delnr": null, "bebyggelsesprocent": 30, "beregnes_af": "Den enkelte ejendom" }, "grundareal_m2": 460, "antal_jordstykker": 1, "eksisterende_etageareal_m2": 116, "eksisterende_bebygget_areal_m2": 141, "antal_bygninger": 3, "bygninger_uden_etageareal": 2, "formel": "restbyggeret_m2 = bebyggelsesprocent / 100 × grundareal_m2 − eksisterende_etageareal_m2", "ikke_beregnet": null, "forbehold": "Vejledende beregning. Planens tekst (dokument_url) er afgørende, og bygningsreglementets definition af etageareal — herunder hvilke kældre, carporte, garager og udhuse der ikke medregnes — kan ikke læses af registrene. Kontakt kommunen før et projekt. Bebyggelsesprocenten er hentet fra kommuneplanrammen, som binder kommunens planlægning og ikke grundejeren direkte; uden lokalplan afgør kommunen sagen efter byggeloven og bygningsreglementet." }, "kilde": { "wfs": "https://geoserver.plandata.dk/geoserver/wfs", "lag": [ "pdk:theme_pdk_kommuneplan_oversigt_vedtaget", "pdk:theme_pdk_zonekort_v", "pdk:theme_pdk_lokalplan_vedtaget", "pdk:theme_pdk_lokalplan_forslag", "pdk:theme_pdk_lokalplan_aflyst", "pdk:theme_pdk_lokalplandelomraade_vedtaget", "pdk:theme_pdk_lokalplandelomraade_forslag", "pdk:theme_pdk_kommuneplanramme_alle_vedtaget_v", "pdk:theme_pdk_kommuneplanramme_alle_forslag_v" ] }, "meta": { "kilde": "Plandata.dk (Plan- og Landdistriktsstyrelsen) via Grundfast", "grundfast_version": "0.1.0" } }
Med din egen nøgle: GET /v1/plan/ejendom/:bfe
Kald det
Et koordinat eller et BFE ind, planerne ud
Koordinat-opslaget giver zone og planer. BFE-opslaget slår op inde på ejendommens største jordstykke og lægger restbyggeretten oveni. Samme gf_live_-nøgle og metering som de øvrige registre.
# På et koordinat curl -H "Authorization: Bearer gf_live_…" \ "https://api.grundfast.dk/v1/plan?lon=12.373631&lat=55.791429" # På en ejendom — med vejledende restbyggeret curl -H "Authorization: Bearer gf_live_…" \ "https://api.grundfast.dk/v1/plan/ejendom/5651067"
Reference
Felterne i svaret
| Felt | Type | Betydning |
|---|---|---|
| zone | object | byzone, sommerhusomraade eller landzone. kilde: "zonekort" når et polygon dækker punktet, "afledt" for landzone — zonekortet rummer kun by- og sommerhusområder, og planlovens § 34 gør resten til landzone. |
| har_lokalplan | boolean | Om mindst én VEDTAGET lokalplan dækker punktet. Et målt svar — en fejl giver 502, aldrig false. |
| lokalplaner[ | object[ | Vedtagne og forslag: plannr, navn, status, anvendelse, datoer, dokument_url (planens PDF) og bebyggelse (bebyggelsesprocent, beregnes_af, max_etager, max_hoejde_m). |
| delomraader[ | object[ | Lokalplanens delområder ved punktet — ofte dér bebyggelsesprocenten står. |
| kommuneplanrammer[ | object[ | Rammer fra kommuneplan og kommuneplantillæg: rammenr, anvendelse, nuværende og fremtidig zone, bebyggelse. |
| aflyste_lokalplaner[ | object[ | Lokalplaner ved punktet, der er aflyst, bortfaldet eller tilbagetrukket — holdt adskilt fra dem, der gælder. |
| restbyggeret | object | null | Kun på /v1/plan/ejendom/:bfe. Vejledende: tilladt etageareal minus eksisterende, med alle input ekkoet — eller null med årsagen i ikke_beregnet. |
Kanttilfælde: afledt landzone, ingen restbyggeret, 404 og 502Svar ud over det normale, som API’et skriver dem
# Ingen zonekort-polygon: landzone efter planlovens § 34 — og det står i svaret: GET /v1/plan?lon=11.9&lat=55.6 → 200 { zone: { status: "landzone", kilde: "afledt", kommune: { kode: 350, navn: "Lejre" } }, har_lokalplan: false, lokalplaner: [] } # Bebyggelsesprocenten gælder området som helhed — ingen restbyggeret pr. grund: GET /v1/plan/ejendom/{bfe} → 200 { restbyggeret: { restbyggeret_m2: null, ikke_beregnet: "Bebyggelsesprocenten beregnes for området som helhed, …" } } # Punktet ligger uden for alle kommuner (på havet): → 404 { error: "no kommune covers this point …" } # ALDRIG "landzone" # Plandata kan ikke nås, eller et lag er tømt: → 502 { error: "upstream Plandata (plandata.dk WFS) error" } # ALDRIG "ingen lokalplan"
Sådan regnes restbyggerettenOg hvornår den ikke regnes
restbyggeret_m2 = bebyggelsesprocent / 100 × grundareal_m2 − eksisterende_etageareal_m2. Procenten tages fra den mest specifikke vedtagne plan — delområde, så lokalplan, så kommuneplanramme; et forslag bruges aldrig. Grundarealet er summen af Matriklens registrerede arealer, etagearealet BBR’s samlede bygningsareal. Bygninger uden registreret etageareal (typisk carporte og udhuse) tælles og nævnes, men regnes ikke med.
Tallet er null med en årsag, når procenten gælder området som helhed, er 0, når to vedtagne planer er uenige, når den gælder det enkelte jordstykke på en ejendom med flere, eller når BBR ikke kunne læses. Et tal på forkert grundlag ville ligne en byggeret — derfor intet tal.
Hvem bruger det
Før skitsen, i købsaftalen, i desk studyet
Spørgsmål
Ofte stillede spørgsmål
Fra Plandata.dk, Plan- og Landdistriktsstyrelsens register over kommunernes planer. Ét opslag læser ni lag på én gang: kommuneplanen (for kommunen), zonekortet, vedtagne, foreslåede og aflyste lokalplaner, lokalplanernes delområder i vedtaget og forslag, og kommuneplanrammerne inklusive dem, der er ændret ved kommuneplantillæg.
Zonekortet rummer kun byzone og sommerhusområder — vi har talt det: ingen landzone-polygoner. Efter planlovens § 34 er alt andet landzone. Ligger punktet uden for begge, svarer vi derfor landzone med kilde: "afledt", og først efter at have tjekket, at zonekortet faktisk svarer med indhold. Ligger punktet uden for alle kommuner — på havet — svarer vi 404, ikke landzone.
Nej. Om der er en lokalplan, afgør hvordan kommunen behandler et projekt, så har_lokalplan: false og en tom liste kommer kun af et opslag, der lykkedes. Nedetid, et svar der ikke er JSON, et afkortet svar og et lag, der pludselig er tomt, giver alle 502.
Status står i registret, og vi læser den derfra — ikke fra planens navn eller datoer. Et forslag binder ikke endnu, men fortæller hvad der er på vej; det står ved siden af de vedtagne planer, med vedtagne først. Aflyste, bortfaldne og tilbagetrukne lokalplaner ligger i en liste for sig, så de aldrig læses som gældende.
Den er vejledende. På /v1/plan/ejendom/:bfe tager vi bebyggelsesprocenten fra den mest specifikke vedtagne plan (delområde, så lokalplan, så kommuneplanramme), ganger med grundarealet fra Matriklen og trækker BBR’s samlede bygningsareal fra. Alle input står i svaret. Bygningsreglementets regler for, hvad der tæller med i etagearealet — kældre, carporte, udhuse — kan ikke læses af registrene, og planens tekst er altid det, der afgør sagen.
Når grundlaget ikke tillader et tal pr. ejendom: hvis bebyggelsesprocenten gælder området som helhed, hvis den er 0 (Plandata bruger 0 både for intet byggeri og for ikke angivet), hvis to vedtagne planer på samme niveau er uenige, hvis procenten gælder det enkelte jordstykke og ejendommen har flere, eller hvis BBR ikke kunne læses. Så er restbyggeret_m2 null, og ikke_beregnet siger hvorfor.
Ikke direkte — rammen binder kommunens planlægning, mens lokalplanen binder grundejeren. Er der ingen lokalplan, kan svaret bruge rammens bebyggelsesprocent til restbyggeretten, men forbeholdet siger det højt.
lon/lat i WGS84; DAWA-stilen x/y med srid=4326 eller 25832 virker også. BFE-varianten slår planerne op i et punkt, der garanteret ligger inde på ejendommens største jordstykke. Et opslag er ét kald — også BFE-varianten, selvom den læser tre registre.
Se også
Plandata-API
Zone og lokalplan på et koordinat — med restbyggeret pr. ejendom
Gratis op til 5.000 kald/md · intet kreditkort · data fra Plandata.dk