Open Interface (API)

All objects in the Kulturdatenbank can be retrieved via a simple, open interface – as JSON or as GeoJSON for map applications and GIS.

Basics

Base URL
https://kulturdb.de/api/v1
Access
read-only (HTTP GET), no login and no API key
Formats
JSON (RFC 8259), GeoJSON (RFC 7946, application/geo+json), character set UTF-8
Language
Field names, filter values and texts are German. /objekte/{id}?sprache=en (or sprache=fr, sprache=nl) returns the classification terms in English (or French, Dutch).
Coordinates
WGS 84 (EPSG:4326), order in GeoJSON [longitude, latitude]
Browser access
CORS is enabled (Access-Control-Allow-Origin: *) – usable directly from web applications
Caching
Responses contain Cache-Control headers (1–60 minutes)
Errors
appropriate HTTP status (400 invalid parameters, 404 not found) with {"error": "…"}
Versioning
The version is part of the path (/v1); changes that break existing applications only appear in a new version.
Object URLs
The object ID is permanent: https://kulturdb.de/objekt/{id}, English page https://kulturdb.de/en/objekt/{id}

Endpoints

GET /punkte

Very compact list of points for cluster maps with many thousands of objects: {"felder": ["id","lat","lon","titel","bereich","kategorie"], "bereiche": […], "kategorien": […], "daten": [[…], …]} – bereich and kategorie are indexes into the lists bereiche and kategorien (-1 = none). All filters are possible.

https://kulturdb.de/api/v1/punkte?landkreis=Vulkaneifel

Filters

The filters correspond to the search on the website. Values are the German terms of the database (see categories; the German term is shown in the URL of each list). They are compared exactly (case-sensitive) and combined with AND; spaces and special characters must be encoded in URLs (e.g. Barock%20%2F%20Rokoko).

ParameterValueMeaning
qtextsearch term in title, subtitle, municipality, locality, street, field name, creator, collective municipality, district or object ID; several words are combined with AND (in any field), punctuation is ignored, ß/ss and Straße/Str. are treated alike
volltext1also search the description (word beginnings and German word stems)
bereichtexte.g. Naturobjekte (see categories)
kategorietexte.g. Sakralbauten
objektarttexte.g. Kapellen
epochetexte.g. Barock / Rokoko
landkreistextdistrict, e.g. Vulkaneifel (see places)
vgtextcollective municipality (Verbandsgemeinde), e.g. Wittlich-Land
gemeindetextmunicipality, e.g. Arzfeld
seitYYYY-MM-DDonly objects edited after this date
bilder1only objects with at least one picture

Examples

QGIS

Layer › Add Layer › Add Vector Layer, source type Protocol: HTTP(S), as URI for example:

https://kulturdb.de/api/v1/objekte.geojson?landkreis=Trier-Saarburg&limit=50000

JavaScript

const res = await fetch('https://kulturdb.de/api/v1/objekte.geojson?objektart=Burgen');
const geojson = await res.json();
console.log(geojson.features.length + ' castles');

Leaflet

fetch('https://kulturdb.de/api/v1/objekte.geojson?gemeinde=Arzfeld')
  .then((r) => r.json())
  .then((data) => L.geoJSON(data, {
    onEachFeature: (f, layer) => layer.bindPopup(
      `<a href="${f.properties.url}">${f.properties.titel}</a>`)
  }).addTo(map));

OpenLayers / NETGIS Client Suite

new ol.layer.Vector({
  source: new ol.source.Vector({
    url: (extent) => 'https://kulturdb.de/api/v1/objekte.geojson?bbox=' +
      ol.proj.transformExtent(extent, 'EPSG:3857', 'EPSG:4326').join(','),
    format: new ol.format.GeoJSON(),
    strategy: ol.loadingstrategy.bbox
  })
});

Example response /objekte/99

{
    "id": 99,
    "titel": "Porta Nigra (1)",
    "untertitel": null,
    "ort": "Trier, Mitte-Gartenfeld",
    "gemeinde": "Trier",
    "ortsteil": "Mitte-Gartenfeld",
    "landkreis": "Kreisfreie Stadt Trier",
    "bereich": "Bau- und Kunstdenkmale",
    "kategorie": "Wehrbauten und militärische Anlagen",
    "objektart": "Stadtbefestigungen",
    "epoche": "Kelten- / Römerzeit",
    "zeit": "170 nach Chr.",
    "url": "https://kulturdb.de/en/objekt/99-trier-porta-nigra-1",
    "bild": "https://kulturdb.de/media/thumbs/480/lazarus_porta-nigra_1912.jpg",
    "lat": 49.759634,
    "lon": 6.644084,
    "beschreibung": "Am Nordende der Fußgängerzone. Beschreibung: Die sogenannte Porta Nigra gehört zu den am besten erhaltenen Stadttoren des römischen Reiches. Das mächtige Tor im Norden der Stadt wurde zusammen mit der Stadtmauer und weiteren Toren gleicher Art wohl im letzten Drittel des 2. Jahrhunderts n. Chr …",
    "bilder": [
        {
            "url": "https://kulturdb.de/bilder/lazarus_porta-nigra_1912.jpg",
            "quelle": "Max Lazarus: Die Porta Nigra in Trier, 1912. © Stadtmuseum Simeonstift Trier."
        },
        {
            "url": "https://kulturdb.de/bilder/lazarus_porta-nigra2_1926.jpg",
            "quelle": "Max Lazarus: Blick durch ein Fenster der Porta Nigra auf St. Gangolf, 1926. © Stadtmuseum Simeonstift Trier."
        },
        {
            "url": "https://kulturdb.de/bilder/trier_porta_nigra_1.jpg",
            "quelle": "Internet"
        },
        {
            "url": "https://kulturdb.de/bilder/trier_porta-nigra_eby.jpg",
            "quelle": "© David W. Eby, Homepage"
        },
        {
            "url": "https://kulturdb.de/bilder/trier_porta_nigra_02_iduhr.jpg",
            "quelle": "© Inge Duhr, Trier, 2020."
        }
    ],
    "stand": "2020-07-06"
}

Terms of use and attribution

The interface is freely available for non-commercial purposes, research, local history and map applications. Please cite “Kulturdatenbank Region Trier – kulturdb.de/” as the source and, where possible, link to the respective object (field url).

The rights to the pictures remain with their respective authors (field bilder[].quelle). Any further use of the pictures other than in a reference to the Kulturdatenbank requires their consent.

Please do not repeatedly retrieve large amounts of data at short intervals; use bbox, filters and caching instead. For questions or larger projects: kulturdatenbank@gmx.de.

Standardised OGC geodata services (WMS, WFS) are also available – see map services.