Skip to content

Cadastre API

The land under any Danish property, as data

One call on a BFE number returns the property’s parcels from Matriklen, the Danish cadastre: parcel number (matrikelnummer), cadastral district (ejerlav), area and boundary in WGS84. Draw them on your own map, or use them for area and screening.

Læs denne side på dansk

Request

One call per property

The answer on the right is complete — the keyless /v1/demo/matrikel returns exactly this property, a house on a single 460 m² parcel in Silkeborg.

import { GrundfastClient } from '@grundfast/sdk';

const gf = new GrundfastClient({ apiKey: process.env.GRUNDFAST_API_KEY! });
const property = await gf.matrikel(5651067);

// Each parcel is a GeoJSON geometry in WGS84 — put them straight on a map:
const features = property.jordstykker.map((j) => ({
  type: 'Feature',
  geometry: j.geometri,
  properties: { matrikelnummer: j.matrikelnummer, ejerlav: j.ejerlav.navn },
}));
GET /v1/matrikel/ejendom/5651067json
{
  "bfe_nummer": 5651067,
  "type": "samlet_fast_ejendom",
  "jordstykker": [
    {
      "id": "1928359",
      "matrikelnummer": "138o",
      "ejerlav": { "kode": 2006552, "navn": "Silkeborg Markjorder" },
      "areal_m2": 460,
      "kommunekode": "0740",
      "geometri": {
        "type": "Polygon",
        "coordinates": [[
          [9.5326405, 56.1579596],
          [9.532631, 56.1579199],
          [9.5326084, 56.1578249],
          [9.5330829, 56.1577643],
          [9.5331362, 56.1578905],
          [9.5326405, 56.1579596]
        ]],
        "epsg25832_ring": [
          [533083.822, 6223788.017],
          [533083.267, 6223783.588],
          [533081.942, 6223773.004],
          [533111.469, 6223766.491],
          [533114.672, 6223780.561],
          [533083.822, 6223788.017]
        ]
      }
    }
  ],
  "dagi": {
    "kommune": { "kode": "0740", "navn": "Silkeborg" },
    "region": { "kode": "1082", "navn": "Region Midtjylland" }
  },
  "meta": {
    "kilde": "Datafordeler Matriklen via Grundfast",
    "grundfast_version": "0.1.0"
  }
}

What you get

The cadastre, assembled per property

Datafordeler serves the cadastre as separate entities in UTM 32N. A lookup here gathers them per property and hands them over ready to use.

  • Every parcel on the property

    A property can consist of many parcels — a farm, a castle, a block. You get all of them in one answer, each with its number and area.

  • Cadastral district by code and name

    A parcel number is only unique within its ejerlav, so the district comes with both its code and its readable name.

  • Boundaries ready for a map

    Each parcel as a WGS84 Polygon — or a MultiPolygon with every piece — and the same ring in EPSG:25832 for work in metres.

  • The BFE bridge

    The BFE number ties the land to the buildings in BBR, the valuation and the addresses: one key across every register.

Response

Fields in the answer

Field names are the cadastre’s own Danish terms, glossed here. Coordinates are [lon, lat], as GeoJSON orders them.

Fields in the cadastre response
FieldTypeDescription
bfe_nummernumberThe property’s BFE number — the key on to BBR, the valuation and the addresses.
typestring"samlet_fast_ejendom" — the property as the cadastre registers it (literally “combined real property”).
jordstykker[]Jordstykke[]Every parcel (jordstykke) the property consists of. One property can have many.
jordstykker[].matrikelnummerstringThe parcel number, e.g. "138o". Unique only together with its ejerlav.
jordstykker[].ejerlav{ kode, navn }The cadastral district the parcel is numbered within, by code and name.
jordstykker[].areal_m2number | nullThe parcel’s registered area in m².
jordstykker[].geometriPolygon | MultiPolygonThe boundary in WGS84. A parcel in several pieces arrives as a MultiPolygon with every piece; the same ring in EPSG:25832 sits beside it.
dagi{ kommune, region }Municipality and region.

Endpoints

Parcels by property, by point, over time

Same key, same billing. Parameters and fields are in the API reference; from a coordinate, see reverse geocoding.

GET/v1/matrikel/ejendom/:bfe
A property’s parcelsEvery parcel with number, cadastral district, area and boundary.
GET/v1/jordstykker/reverse?lon=&lat=
The parcel at a pointThe parcel covering a WGS84 coordinate, with the BFE of its property.
GET/v1/ejerlav
Cadastral districtsEvery ejerlav with its code and name, with lookup and autocomplete.
POST/v1/matrikel/ejendom:batch
Many properties per callPro and upParcels for a list of BFE numbers, one call per distinct BFE.
GET/v1/matrikel/ejendom/:bfe/historik
How the parcels changedScale and upEvery version on record; or ?asOf=YYYY-MM-DD for the parcels as registered on a date.

FAQ

Questions about the cadastre

A parcel (jordstykke) is a piece of land. It is named by its matrikelnummer plus its ejerlav (cadastral district), because the same number is reused in many districts. A property (samlet fast ejendom) consists of one or more parcels and has one BFE number — the ID every Danish property register shares.

Yes. Each parcel comes as a WGS84 polygon, so you draw the boundaries straight into MapLibre, Leaflet or OpenLayers, in your own style. Grundfast does not serve finished map images of the cadastre; aerial imagery tiles to put underneath are available at /v1/orto/tile/:z/:x/:y.

Address search (/v1/adresse/search) returns the BFE number on every hit, and /v1/matrikel/ejendom/:bfe returns the parcels. With only a coordinate, /v1/jordstykker/reverse finds the parcel covering the point.

They are the cadastre’s registered boundaries, reprojected from EPSG:25832 to WGS84 — and the original ring is delivered alongside. They are right for maps, screening and area calculations; a legal boundary survey is still a matter for a licensed surveyor.

Yes, from the Scale plan: ?asOf=YYYY-MM-DD returns the parcels as registered on that date, with the geometry from the same time where it can be found; /historik returns the full sequence of versions.

See also

Put Danish parcels on your map

Create a free key and make your first call in a minute. Build against a gf_test_ key that is never billed, and upgrade when the traffic is real.

Free up to 5,000 calls a month · no card · test keys never billed · data from Klimadatastyrelsen / Datafordeler, CC BY 4.0