# Hent BBR-data om bygning og bolig

> Slå opførelsesår, areal, etager, anvendelse og opvarmning op for en adresse, og hent boligenhederne med værelser, køkken og bad.
>
> https://danadresse.dk/guides/bbr-bygningsdata · verified 2026-11-02
Bygnings- og Boligregistret (BBR) beskriver hver bygning og hver bolig i Danmark: hvornår den er bygget, hvor stor den er, hvad den bruges til, og hvordan den varmes op. Det bruges til boligvurdering, forsikringstilbud, energirådgivning og udlejning.

To endpoints dækker det: `/bbr` for bygningen og `/enhed` for boligerne eller erhvervsenhederne i den. Begge ligger under `/api/v1/enrich/` og kræver en almindelig live-nøgle.

## Hvilket id skal du bruge?

| Endpoint | Tager | Returnerer |
|---|---|---|
| `GET /api/v1/enrich/adresser/{id}/bbr` | adgangsadresse-id eller adresse-id | Hovedbygningen på adressen |
| `GET /api/v1/enrich/adresser/{id}/enhed` | adgangsadresse-id | Alle enheder i opgangen |
| `GET /api/v1/enrich/adresser/{id}/enhed` | adresse-id (med etage/dør) | Kun den ene enhed |

`/bbr` giver det samme svar for et adresse-id med etage og dør som for adgangsadressen, fordi bygningen hører til indgangen. Ukendte id'er giver `404` med koden `not_found`. Datavask og autocomplete returnerer begge id'er direkte (se [Adresse eller adgangsadresse](/guides/adresse-vs-adgangsadresse)).

## Bygningen

```bash id=bbr-curl run=syntax
curl -s "https://api.danadresse.dk/api/v1/enrich/adresser/0a3f507f-0959-32b8-e044-0003ba298018/bbr" \
  -H "X-Api-Key: $DANADRESSE_API_KEY"
```

```json id=bbr-svar run=no
{
  "adresseid": "0a3f507f-0959-32b8-e044-0003ba298018",
  "bygning": {
    "id": "23e6f5c3-af8c-4700-bb1a-b23bb2107e04",
    "bygningsnr": "1",
    "opfoerelsesaar": 1968,
    "ombygningsaar": 1992,
    "samletBygningsareal": 5652,
    "samletBoligAreal": null,
    "samletErhvervsareal": 5652,
    "bebyggetAreal": 2826,
    "antalEtager": 2,
    "antalBoliger": null,
    "anvendelseKode": "321",
    "anvendelseNavn": "Bygning til kontor",
    "ydervaegKode": "1",
    "tagKode": "2",
    "varmeKode": "1",
    "opvarmningsmiddelKode": null,
    "stormraadetOversvoemmelse": null,
    "stormflodRegistreret": false
  },
  "data_source": "BBR (Bygnings- og Boligregistret)",
  "license": "CC BY 4.0 Klimadatastyrelsen"
}
```

| Felt | Indhold |
|---|---|
| `opfoerelsesaar`, `ombygningsaar` | Byggeår og år for seneste større ombygning |
| `samletBygningsareal`, `samletBoligAreal`, `samletErhvervsareal` | Etageareal i m² |
| `bebyggetAreal` | Bygningens fodaftryk på grunden i m² |
| `antalEtager`, `antalBoliger` | Etager og boliger i bygningen |
| `anvendelseKode`, `anvendelseNavn` | Hvad bygningen bruges til, som kode og tekst |
| `ydervaegKode`, `tagKode` | Materialer, som BBR-koder |
| `varmeKode`, `opvarmningsmiddelKode`, `energiforsyningKode` | Varmeinstallation og brændsel, som BBR-koder |
| `vandforsyningKode`, `afloebKode`, `fredningKode` | Vand, kloak og fredning, som BBR-koder |
| `stormflodRegistreret` | `true`, hvis bygningen har en registreret skadesag hos Stormrådet |

Kun anvendelsen har en tekst. De øvrige felter er rå koder fra BBR's kodelister, så du skal selv oversætte dem til tekst i din app.

## Enhederne

```bash id=enhed-curl run=syntax
curl -s "https://api.danadresse.dk/api/v1/enrich/adresser/0a3f507c-0624-32b8-e044-0003ba298018/enhed" \
  -H "X-Api-Key: $DANADRESSE_API_KEY"
```

```json id=enhed-svar run=no
{
  "adresseid": "0a3f507c-0624-32b8-e044-0003ba298018",
  "antal_enheder": 6,
  "enheder": [
    {
      "id": "760562d0-4ea6-4c94-94d7-506d12c4d0de",
      "etage": "st",
      "doer": "1",
      "anvendelseKode": "322",
      "boligtype": { "kode": "E", "navn": "Andet" },
      "samletAreal": 83,
      "arealBeboelse": null,
      "arealErhverv": 83,
      "antalVaerelser": 2,
      "antalToiletter": 1,
      "antalBadevaerelser": null,
      "toilet": { "kode": "T", "navn": "Vandskyllende toilet i enheden" },
      "bad": { "kode": "D", "navn": "Hverken badeværelse eller adgang til badeværelse" },
      "koekken": { "kode": "H", "navn": "Ingen fast kogeinstallation" },
      "udlejningKode": null,
      "bygningId": "70f6f506-2c5b-408f-8e9c-32353f2e0be9"
    }
  ]
}
```

Enhederne er sorteret efter etage (kælder, stue, 1., 2. …) og dør. `boligtype`, `toilet`, `bad` og `koekken` har både kode og tekst. `bygningId` peger på den bygning, enheden ligger i.

## I Python: fra adresse-id til bygning og bolig

```python id=bbr-python run=syntax
import os
import requests

API = "https://api.danadresse.dk"
s = requests.Session()
s.headers["X-Api-Key"] = os.environ["DANADRESSE_API_KEY"]

adresse_id = "0a3f50a4-0c39-32b8-e044-0003ba298018"   # Strandvejen 100, 1., 2900 Hellerup

r = s.get(f"{API}/api/v1/enrich/adresser/{adresse_id}/bbr", timeout=15)
if r.status_code == 503:
    raise SystemExit(f"Registret er midlertidigt utilgængeligt, prøv igen om {r.headers.get('Retry-After')} s")
r.raise_for_status()
byg = r.json()["bygning"]
if byg.get("_status"):
    print("Ingen BBR-bygning knyttet til adressen endnu")
else:
    print(byg["anvendelseNavn"], byg["opfoerelsesaar"], byg["samletBygningsareal"], "m²")

enheder = s.get(f"{API}/api/v1/enrich/adresser/{adresse_id}/enhed", timeout=15).json()
for e in enheder["enheder"]:
    print(e["etage"], e["doer"], e["samletAreal"], "m²,", e["antalVaerelser"], "værelser")
```

## Når data mangler

- **`_status: needs_bbr_etl`** i `bygning` betyder, at der ikke er knyttet en BBR-bygning til adressen i vores kopi af registret. Alle felter er så `null`.
- **`_status: needs_bbr_enhed_etl`** på `/enhed` betyder, at der ikke er fundet enheder. `enheder` er en tom liste. Det kan også være korrekt: et skur eller en transformerstation har ingen boliger.
- **Enkelte felter er `null`.** BBR er ikke komplet. Ældre bygninger mangler ofte ombygningsår eller areal. Vis "ukendt" i stedet for 0.
- **`_truncated: true`** på `/enhed` betyder, at adressen har flere end 1000 enheder, og kun de første 1000 er med.

## Flere bygninger på samme adresse

En adresse kan have flere bygninger: et hus med garage og udhus, eller et erhvervsområde med flere haller. `/bbr` returnerer hovedbygningen: en bygning med en egentlig anvendelse før garager, carporte og udhuse (anvendelseskode 900 og op), bygninger med data før tomme rækker, og derefter den største. Skal du se alle bygninger, så brug `bygninger` i `GET /api/v1/enrich/adresser/{id}/ejendom` (se [Matrikel, jordstykke og BFE](/guides/matrikel-og-jordstykke)). Den liste har id, nummer, opførelsesår, areal, etager og anvendelse for hver bygning, med hovedbygningen først. Skal du bruge bygningen for en bestemt bolig, så tag den, som enheden i `/enhed` peger på via `bygningId`.

## Nøgler og fejl

- Testnøgler får `403` med koden `sandbox_scope`, og browsernøgler får `403` med `browser_key_scope`. Kald endpointet fra din server.
- `/bbr` og `/enhed` læser fra vores egen kopi af BBR. `/ejendom` og `/installations` henter data fra Datafordeleren, når de kaldes, og kan svare `503` med koden `upstream_unavailable` og en `Retry-After`-header under Datafordelerens servicevinduer.
- Data fra BBR er under CC BY 4.0. Vis kildeangivelsen "Indeholder data fra Klimadatastyrelsen (CC BY 4.0)", når du viser data til brugere.

## Næste skridt

- [Matrikel, jordstykke og BFE-nummer](/guides/matrikel-og-jordstykke)
- [Oversvømmelsesrisiko for en adresse](/guides/oversvoemmelsesrisiko)
- Oversigt over BBR-data: [BBR](/bbr)
