# Ændringsfeed for adresser og bygninger

`GET /v1/aendringer` · Overvågning

Nye, ændrede og nedlagte adresser og bygninger i en kommune eller et postnummer — ét feed, sidet med en cursor.

Feedet fletter to logs efter registreringstidspunkt, ældste først. **Adresser** kommer fra DARs daglige ændringsudtræk: typisk et døgn bagud, og de gemmes i 35 dage. **Bygninger** findes ved at sammenligne to udgaver af vores nationale bygningsindeks, som bygges ud fra BBR’s samlede udtræk. En bygningsændring dukker derfor først op, når den næste udgave er indlæst — `meta.daekning.bygning.seneste_snapshot` siger, hvor gammel den nyeste er — og kun de felter, indekset rummer (anvendelse, år, arealer, etager, varme, tag, ydervæg, asbest, olietank, adresse, BFE og koordinat), sammenlignes.

`bygning.tilkommet` betyder, at bygningen nu er registreret som opført, og `bygning.udgaaet`, at den ikke længere er det — revet ned, eller registreringen er rettet. Ingen af dem er en påstand om, hvad der er sket på stedet.

Angiv mindst én `kommunekode` eller ét `postnr`. Gem `naeste_cursor`, og send den som `cursor` i næste kald; så hverken springer du over eller gentager. Et tomt svar betyder kun "ingen ændringer" inden for det vindue, `meta.daekning` beskriver. Kunne et DARs udtræks ændringer ikke logges, står udtrækket i `meta.daekning.adresse.huller`, og `forsinket` er `true` — de adresseændringer er ikke i feedet.

**Godkendelse:** API-nøgle eller dashboard-session · kræver Pro-planen

**Afregning:** Ikke målt.

## Parametre

| Navn | Placering | Type | Påkrævet | Beskrivelse |
| --- | --- | --- | --- | --- |
| `kommunekode` | query | string | nej | Op til 10 kommunekoder, kommaseparerede. Tre cifre udfyldes med 0 foran. |
| `postnr` | query | string | nej | Op til 50 postnumre, kommaseparerede. |
| `type` | query | string | nej | `adresse`, `bygning` eller begge, kommaseparerede. Standard er begge. |
| `siden` | query | string | nej | Kun ændringer, Grundfast har registreret fra denne dato eller dette tidspunkt (ISO 8601). |
| `cursor` | query | string | nej | `naeste_cursor` fra forrige svar. Udelad for at starte fra den ældste. |
| `antal` | query | integer | nej | Ændringer pr. side, 1-100. |

## Eksempel

```bash
curl "https://api.grundfast.dk/v1/aendringer?kommunekode=0101&postnr=2200&siden=2026-10-01" \
  -H "Authorization: Bearer $GRUNDFAST_API_KEY"
```

## Svar (200)

```json
{
  "antal": 2,
  "aendringer": [
    {
      "type": "adresse",
      "id": "adresse:48210",
      "haendelse": "adresse.oprettet",
      "registreret": "2026-10-01T05:10:02.551Z",
      "kommunekode": "0101",
      "postnr": "1560",
      "adgangsadresse_id": "b1d2e3f4-0a1b-4c2d-9e3f-4a5b6c7d8e9f",
      "betegnelse": "Kalvebod Brygge 59, 1560 København V",
      "status": "gaeldende",
      "aendrede_felter": [],
      "foer": null,
      "efter": {
        "betegnelse": "Kalvebod Brygge 59, 1560 København V",
        "vejnavn": "Kalvebod Brygge",
        "husnr": "59",
        "postnr": "1560",
        "postnrnavn": "København V",
        "kommunekode": "0101",
        "koordinat": { "lon": 12.56712, "lat": 55.66431 }
      },
      "kilde": "DAR_20261001040010"
    },
    {
      "type": "bygning",
      "id": "bygning:913",
      "haendelse": "bygning.aendret",
      "registreret": "2026-10-03T18:20:11.004Z",
      "kommunekode": "0101",
      "postnr": "1560",
      "adgangsadresse_id": "b1d2e3f4-0a1b-4c2d-9e3f-4a5b6c7d8e9f",
      "betegnelse": "Kalvebod Brygge 59, 1560 København V",
      "bygning_id": "5f0c7a52-0d4e-4a34-9b6c-2f1d7e8a9b10",
      "bfe_nummer": 100154,
      "aendrede_felter": ["varmeinstallation"],
      "foer": { "id": "5f0c7a52-0d4e-4a34-9b6c-2f1d7e8a9b10", "varmeinstallation": { "kode": "2", "tekst": "Centralvarme med én fyringsenhed" } },
      "efter": { "id": "5f0c7a52-0d4e-4a34-9b6c-2f1d7e8a9b10", "varmeinstallation": { "kode": "1", "tekst": "Fjernvarme/blokvarme" } },
      "kilde": "2026-10-02T00:00:00.000Z"
    }
  ],
  "naeste_cursor": "eyJhIjo0ODIxMCwiYiI6OTEzfQ",
  "flere": false,
  "meta": {
    "kilde": "Danmarks Adresseregister (DAR, dagligt ændringsudtræk) og BBR (sammenligning af bygningsindeksets udgaver), via Grundfast",
    "grundfast_version": "1.0.0",
    "daekning": {
      "adresse": {
        "daekket_fra": "2026-09-01T05:10:04.118Z",
        "senest_opdateret": "2026-10-01T05:10:09.402Z",
        "seneste_udtraek": "DAR_20261001040010",
        "opbevaring_dage": 35,
        "forsinket": false,
        "huller": []
      },
      "bygning": {
        "daekket_fra": "2026-10-03T18:20:11.004Z",
        "seneste_snapshot": "2026-10-02T00:00:00.000Z",
        "opbevaring_dage": 120
      }
    }
  }
}
```

## Vigtige felter

| Felt | Type | Betydning |
| --- | --- | --- |
| `aendringer[].type` | string | `adresse` eller `bygning`. |
| `aendringer[].haendelse` | string | `adresse.oprettet` / `adresse.aendret` / `adresse.nedlagt`, eller `bygning.tilkommet` / `bygning.aendret` / `bygning.udgaaet`. |
| `aendringer[].aendrede_felter` | string[] | Kun for `*.aendret`: hvilke felter der ændrede sig, med de samme navne som i `foer`/`efter`. |
| `aendringer[].foer / efter` | object \| null | Adressen eller bygningen før og efter. En bygning har samme form som et hit i [bygningssøgningen](https://grundfast.dk/docs/api/bbr-bygningssoegning), med oversatte koder. |
| `aendringer[].kilde` | string | DAR-udtrækket (`DAR_<yyyymmddhhmmss>`) eller BBR-snapshottet (ISO 8601), ændringen blev fundet i. |
| `naeste_cursor` | string | Send som `cursor` i næste kald. |
| `meta.daekning` | object | For adresser: `daekket_fra`, `senest_opdateret`, `seneste_udtraek`, `forsinket` og `huller` (DAR-udtræk, hvis ændringer ikke blev logget). For bygninger: `daekket_fra` og `seneste_snapshot`. Begge med `opbevaring_dage`. |

## Fejl

| Status | Betydning |
| --- | --- |
| 400 | Hverken kommunekode eller postnr angivet, en ugyldig værdi, for mange værdier, eller en cursor, API’et ikke har udstedt. |
| 401 | Hverken en gyldig nøgle eller en session. |
| 402 | Planen er under Pro. |
| 403 | Nøglen er en admin-nøgle, eller kontoen er suspenderet. |
| 429 | Burst-grænsen eller månedskvoten er nået. Se `Retry-After`. |
