# Planer og restbyggeret pr. BFE

`GET /v1/plan/ejendom/:bfe` · Plandata

Planerne for en ejendom, slået op inde på dens største jordstykke, plus en vejledende restbyggeret fra Matriklen og BBR.

Punktet er garanteret inde på ejendommens største jordstykke — ikke et bounding-box-centrum, der kan lande hos naboen. Resten af svaret er det samme som for [`/v1/plan`](https://grundfast.dk/docs/api/plan).

`restbyggeret` er **vejledende**: bebyggelsesprocenten fra den mest specifikke vedtagne plan (delområde, så lokalplan, så kommuneplanramme) gange grundarealet fra Matriklen, minus BBR’s samlede bygningsareal. Alle input står i svaret, så tallet kan efterregnes.

Kan grundlaget ikke give et tal pr. ejendom, er `restbyggeret_m2` `null`, og `ikke_beregnet` siger hvorfor: procenten gælder området som helhed, den er 0, to vedtagne planer er uenige, den gælder det enkelte jordstykke på en ejendom med flere, eller BBR kunne ikke læses.

**Godkendelse:** `Authorization: Bearer gf_live_…` (eller `gf_test_…`)

**Afregning:** Ét kald — også selvom opslaget læser Plandata, Matriklen og BBR.

## Parametre

| Navn | Placering | Type | Påkrævet | Beskrivelse |
| --- | --- | --- | --- | --- |
| `bfe` | path | integer | ja | BFE-nummeret på ejendommen. |

## Eksempel

```bash
curl "https://api.grundfast.dk/v1/plan/ejendom/5651067" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY"
```

## Svar (200)

```json
{
  "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"
  }
}
```

## Vigtige felter

| Felt | Type | Betydning |
| --- | --- | --- |
| `zone.status` | string \| null | `byzone`, `sommerhusomraade` eller `landzone`. `null` kun når zonekortet har to forskellige zoner i punktet (`zone.konflikt: true`). |
| `zone.kilde` | string | `zonekort`, når et polygon dækker punktet. `afledt` for landzone: zonekortet rummer kun byzone og sommerhusområder, og planlovens § 34 gør resten til landzone. |
| `har_lokalplan` | boolean | Sand, når mindst én **vedtaget** lokalplan dækker punktet. Et målt svar — en fejl giver 502, aldrig `false`. |
| `lokalplaner[]` | object[] | Vedtagne og foreslåede lokalplaner, vedtagne først: `plannr`, `navn`, `status`, `anvendelse`, `datoer`, `dokument_url` (planens PDF) og `bebyggelse`. |
| `lokalplaner[].bebyggelse` | object | `bebyggelsesprocent`, `beregnes_af` (fx "Den enkelte ejendom" eller "Området som helhed"), `max_etager` og `max_hoejde_m` — som registret har dem. Et `0` gives videre råt. |
| `delomraader[]` | object[] | Lokalplanernes delområder i punktet, med deres egen `bebyggelse`. |
| `kommuneplanrammer[]` | object[] | Rammer fra kommuneplan og kommuneplantillæg: `rammenr`, `anvendelse`, `zone`, `fremtidig_zone`, `bebyggelse`. Binder kommunens planlægning, ikke grundejeren direkte. |
| `aflyste_lokalplaner[]` | object[] | Lokalplaner i punktet, der er aflyst, bortfaldet eller tilbagetrukket, med `aflysningstype` og `datoer.aflyst`. |
| `restbyggeret.restbyggeret_m2` | number \| null | `tilladt_etageareal_m2 − eksisterende_etageareal_m2`. Negativ, når grunden allerede er bebygget ud over procenten. `null` med årsag i `ikke_beregnet`. |
| `restbyggeret.grundlag` | object | Hvilken plan procenten er taget fra: `kilde` (`delomraade`, `lokalplan` eller `kommuneplanramme`), `plannr`, `delnr`, `bebyggelsesprocent`, `beregnes_af`. |
| `restbyggeret.grundareal_m2` | number \| null | Summen af Matriklens registrerede arealer for ejendommens jordstykker. `eksisterende_etageareal_m2` er BBR’s samlede bygningsareal. |
| `restbyggeret.forbehold` | string | Forbeholdet i klar tekst — skærpet, når procenten kommer fra en kommuneplanramme. |

## Fejl

| Status | Betydning |
| --- | --- |
| 400 | BFE-nummeret er ikke et positivt heltal. |
| 401 | Nøglen mangler eller er ugyldig. |
| 404 | BFE-nummeret findes ikke i Matriklen, eller ejendommen har ingen jordstykkegeometri. |
| 429 | Burst-grænsen eller månedskvoten er nået. Se `Retry-After`. |
| 502 | Plandata kunne ikke nås, svarede ubrugeligt, eller et af lagene var tomt. Rapporteres aldrig som landzone eller "ingen lokalplan". |
| 503 | Plandata-kilden er ikke konfigureret i dette miljø. |

> Restbyggeretten er vejledende. Bygningsreglementets regler for, hvad der tæller med i etagearealet — kældre, carporte, udhuse — kan ikke læses af registrene, og planens tekst afgør. Kontakt kommunen før et projekt.
