Een monumentenkaart combineert de rijksmonumenten van de RCE met de eigen lijst van de gemeente en koppelt beide aan de BAG. De rijksdata is open, met licentie CC0 of CC BY, en bereikbaar via linked data en een PDOK-API. Gemeentelijke monumenten haalt u bij de gemeente zelf. Hieronder staat een getest voorbeeld voor de Grote Markt in Haarlem.

Laatst bijgewerkt:

Welke monumentendata is open beschikbaar?

Voor rijksmonumenten zijn drie open toegangen bruikbaar, naast de zoekpagina van het register zelf. Op 11 oktober 2026 zijn ze naast elkaar gelezen en getest. Alle drie komen van de Rijksdienst voor het Cultureel Erfgoed (RCE); de PDOK-laag is een INSPIRE-bewerking van dezelfde bron.

Open bronnen voor monumenten (gelezen op 11 oktober 2026)
BronInhoudToegangLicentie
RCE dataset erfgoed-sdoRijksmonumenten, complexen, gezichten en werelderfgoed in Schema.org, met naam, adres, postcode, functie en punt of vlakZoekindex (Elasticsearch-API) op api.linkeddata.cultureelerfgoed.nl; laatst gewijzigd 9 oktober 2026CC0 1.0
RCE dataset choBrondata van alle cultuurhistorische objecten, inclusief archeologie, in CIDOC-CRMSPARQL-endpoint; 59.456.334 statements op 11 oktober 2026CC BY (datasetpagina; CC BY 4.0 volgens data.overheid.nl)
PDOK Beschermde gebieden cultuurhistorieRijksmonumenten, stads- en dorpsgezichten en UNESCO-werelderfgoed als INSPIRE ProtectedSite, in twee collecties (punten en vlakken)OGC API Features met GeoJSON; CORS staat openCC BY 4.0
RijksmonumentenregisterHet register zelf, doorzoekbaar op monumentnummer, adres, postcode, naam en omschrijvingWebpagina's per monumentZie de site van de RCE

Wie PDOK al kent uit het overzicht van open geodata en PDOK, herkent het patroon van de OGC API. Een uitgebreider overzicht van de dataset zelf staat bij Rijksmonumenten.

Wat is een rijksmonument en wat valt er niet onder?

Een rijksmonument is een object dat in het rijksmonumentenregister staat. Dat is een wettelijke definitie, geen kwaliteitsoordeel. De Erfgoedwet zegt het zo:

rijksmonument: monument of archeologisch monument dat is ingeschreven in het rijksmonumentenregister

Bron: Erfgoedwet, artikel 1.1 (begripsbepalingen), geraadpleegd op wetten.overheid.nl op 11 oktober 2026.

Gemeentelijke monumenten staan dus niet in dit register. Een gemeente wijst die zelf aan en houdt ook zelf de lijst bij. Wilt u op één kaart beide soorten tonen, dan hebt u twee bronnen en twee juridische regimes. Dat verschil moet in de kaart zichtbaar zijn, omdat een eigenaar bij een rijksmonument in beginsel een vergunning voor een rijksmonumentenactiviteit nodig heeft:

Het is verboden zonder omgevingsvergunning de volgende activiteiten te verrichten: a. een omgevingsplanactiviteit, b. een rijksmonumentenactiviteit, […]

Bron: Omgevingswet, artikel 5.1, lid 1, geraadpleegd op 11 oktober 2026. Hoe de Omgevingswet aan kaartdata hangt, leest u op de pagina over de Omgevingswet en het DSO. De kaart is altijd een hulpmiddel: het register blijft de bron voor wat er juridisch geldt.

Hoe ziet de architectuur van een monumentenkaart eruit?

Een monumentenkaart heeft vier stappen: ophalen, koppelen, opslaan en tonen. Het ophalen en koppelen draait als geplande taak, bijvoorbeeld wekelijks, en niet bij elk kaartbezoek.

Architectuur van een monumentenkaart Drie bronnen (RCE linked data, PDOK en gemeentelijke lijst) gaan via een ophaalscript en een tussenopslag met BAG-koppeling naar een GeoJSON-bestand en een kaartviewer. RCE linked data (CC0) PDOK OGC API (CC BY 4.0) Lijst van de gemeente Ophaalscript+ BAG-koppeling GeoJSON ofPostGIS Kaartviewer+ zoeken

De reden voor een tussenopslag is praktisch. De RCE-zoekindex is geen OGC-standaard, dus u wilt uw kaart niet rechtstreeks aan die vorm van API koppelen. Een bestand met GeoJSON of een tabel in PostGIS geeft u controle over uw eigen veldnamen en over de herstart na een storing. De kaart zelf bouwt u met MapLibre of OpenLayers.

De BAG-koppeling is wat de lijst bruikbaar maakt. Met het BAG-nummeraanduiding-id of verblijfsobject-id kunt u een monument later koppelen aan een pand, een bouwjaar of een vergunningdossier. De BAG levert die sleutels; de PDOK-geocodeerservice zet het adres om.

Werkend voorbeeld: monumenten aan een straat, gekoppeld aan de BAG

Het script hieronder zoekt de objecten van het type monument aan de Grote Markt in Haarlem, haalt per object de BAG-sleutels op en schrijft een GeoJSON-feature. Het draait op Node 18 of nieuwer en in een browser, omdat de RCE-index Access-Control-Allow-Origin: * teruggeeft. Het is gedraaid op 11 oktober 2026 met Node 24.

// Node 18+ (of een browser). Rijksmonumenten aan een straat, gekoppeld aan de BAG.
const RCE = 'https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/erfgoed-sdo/services/Erfgoed-sdo-nl3/_search';
const S = 'https://schema org/'; // let op: de punt in 'schema.org' is in de veldnamen een spatie
const WKT = 'http://www opengis net/ont/geosparql#asWKT';
const TYPE = 'http://www w3 org/1999/02/22-rdf-syntax-ns#type.keyword';

async function monumentenAanStraat(plaats, straat) {
  const res = await fetch(RCE, {
    method: 'POST',
    headers: { 'content-type': 'application/json' },
    body: JSON.stringify({
      size: 100,
      _source: [S + 'name', S + 'address', S + 'postalCode', S + 'identifier', S + 'additionalType', WKT],
      query: { bool: { filter: [
        { term: { [S + 'addressLocality.keyword']: plaats } },
        { term: { [TYPE]: 'https://schema.org/LandmarksOrHistoricalBuildings' } },
        { prefix: { [S + 'address.keyword']: straat } },
      ] } },
    }),
  });
  if (!res.ok) throw new Error('RCE gaf status ' + res.status);
  const { hits } = await res.json();
  return hits.hits.map(({ _source: s }) => {
    const p = /Point \(([\d.]+) ([\d.]+)\)/.exec(s[WKT]?.[0] ?? '');
    return {
      type: 'Feature',
      geometry: p ? { type: 'Point', coordinates: [Number(p[1]), Number(p[2])] } : null,
      properties: {
        monumentnummer: s[S + 'identifier']?.[0],
        naam: s[S + 'name']?.[0] ?? null,
        adres: s[S + 'address']?.[0],
        postcode: s[S + 'postalCode']?.[0],
        functie: s[S + 'additionalType']?.[0] ?? null,
      },
    };
  });
}

// BAG-koppeling: postcode + huisnummer naar nummeraanduiding en verblijfsobject
async function bag({ postcode, adres }) {
  const huisnummer = /(\d+\s?\w*)$/.exec(adres)?.[1].replace(/\s/g, '');
  const u = new URL('https://api.pdok.nl/bzk/locatieserver/search/v3_1/free');
  u.searchParams.set('q', postcode + ' ' + huisnummer);
  u.searchParams.set('fq', 'type:adres');
  u.searchParams.set('fl', 'nummeraanduiding_id,adresseerbaarobject_id');
  u.searchParams.set('rows', '1');
  const { response } = await (await fetch(u)).json();
  return response.docs[0] ?? null;
}

const features = await monumentenAanStraat('Haarlem', 'Grote Markt');
for (const f of features) Object.assign(f.properties, await bag(f.properties));

console.log(features.length + ' monumenten aan de Grote Markt in Haarlem');
console.log(JSON.stringify(features.find((f) => f.properties.naam), null, 1));

Uitvoer van die run:

18 monumenten aan de Grote Markt in Haarlem
{
 "type": "Feature",
 "geometry": { "type": "Point", "coordinates": [4.635042674969597, 52.38121631961557] },
 "properties": {
  "monumentnummer": "19256",
  "naam": "de Vergulde Druif",
  "adres": "Grote Markt 4",
  "postcode": "2011RD",
  "functie": "Woonhuis",
  "nummeraanduiding_id": "0392200000022719",
  "adresseerbaarobject_id": "0392010000022719"
 }
}

Twee dingen zijn belangrijk om te weten. De veldnamen in de index bevatten een spatie waar normaal een punt staat (https://schema org/address), omdat de index geen punten in veldnamen toestaat. En de identifier is het monumentnummer uit het register, dus 19256, niet het getal in het URI van het object. Met het monumentnummer bouwt u de link naar het register: https://monumentenregister.cultureelerfgoed.nl/monumenten/19256.

Kan ik de geometrie ook rechtstreeks via PDOK ophalen?

Ja. De PDOK-API levert GeoJSON volgens OGC API Features en is daarmee stabieler voor kaartlagen dan de zoekindex. Het nadeel is dat de eigenschappen schaars zijn: u krijgt geen naam of adres, wel een verwijzing naar het register.

curl -s "https://api.pdok.nl/rce/beschermde-gebieden-cultuurhistorie/ogc/v1/collections/rce_inspire_points/items?f=json&limit=100&bbox=4.634,52.380,4.637,52.382"

Dit gaf op 11 oktober 2026 71 punten rond de Grote Markt terug, waaronder ook stads- en dorpsgezichten. Per punt zijn onder meer ci_citation (de link naar het register), legalfoundationdate (datum van aanwijzing), localid en namespace aanwezig. De waarde nlps-rijksmonumenten in namespace onderscheidt monumenten van nlps-stadsendorpsgezichten. Filter daar zelf op, want de API laat geen attribuutfilter toe naast bbox.

Een goede werkverdeling is: PDOK voor het kaartbeeld, de RCE-index voor naam, functie en adres. Combineer ze op locatie of op monumentnummer. Hoe WFS en OGC API Features zich verhouden, staat in de kennisbank bij WFS en OGC API Features.

Waar staat de lijst met gemeentelijke monumenten?

Bij de gemeente zelf, en in een vorm die per gemeente verschilt. Er is geen landelijk register voor gemeentelijke monumenten dat op dezelfde manier open staat als dat van de RCE. Een zoekopdracht naar "gemeentelijke monumenten" in het open-dataregister van de overheid gaf op 11 oktober 2026 70 treffers. De drie hieronder zijn voorbeelden van het soort variatie dat u tegenkomt.

Voorbeelden van gepubliceerde gemeentelijke monumentendata (data.overheid.nl, 11 oktober 2026)
UitgeverDatasetFormatenLicentie
Gemeente ArnhemGemeentelijke monumenten ArnhemWFS, WMS, JSON, CSVCC BY 4.0
Gemeente UtrechtGemeentelijke MonumentenJSON, WMS, SHP, WFSCC0 1.0
Gemeente GroningenMonumenten gemeente GroningenJSON, ZIPCC BY 4.0

Deze gemeenten zijn hier uitgever van open data, geen opdrachtgever van TechinFlow. Het punt van de tabel: veldnamen, formaten en licenties verschillen. Plan daarom een mappingstap in uw ophaalscript, met een vaste eigen structuur (nummer, naam, adres, soort, bron, geometrie). Voor de licenties is open data-licenties het naslagwerk. Staat de lijst van uw eigen gemeente alleen in een PDF of Excel, dan is eerst publiceren de stap: zie open data publiceren als gemeente.

Welke valkuilen zijn er bij een monumentenkaart?

De meeste fouten zitten in de koppeling, niet in de kaart. Dit zijn de punten waar u op test.

  • Adressen zonder BAG-treffer. Monumenten zonder huisnummer, zoals terreinen of bruggen, vinden geen BAG-adres. Bewaar dan alleen de geometrie en markeer het veld als leeg in plaats van het script te laten falen.
  • De limiet van de zoekindex. Zonder track_total_hits telt de index niet verder dan 10.000 en geeft hij "gte 10000" terug. Wilt u alles ophalen, splits dan de vraag op, bijvoorbeeld per gemeente of per straat.
  • Punt of vlak. Sommige objecten hebben een vlakgeometrie. Een script dat alleen Point (...) parseert, slaat die over; controleer het type in de WKT-tekst.
  • Dubbele bronnen. Een rijksmonument kan ook in de lijst van de gemeente staan. Ontdubbel op monumentnummer en laat het rijksregister voorgaan.
  • Verouderd gegeven. De index heeft een eigen wijzigingsdatum, het register kan verder zijn. Toon op de kaart de datum waarop u hebt opgehaald.
  • Toegankelijkheid. Een kaart alleen is niet genoeg voor wie geen muis gebruikt. Bied dezelfde lijst ook als doorzoekbare tabel; zie toegankelijke kaarten.

Wanneer is een eigen monumentenkaart niet nodig?

Als u alleen de rijksmonumenten wilt tonen, hoeft u niets te bouwen. De RCE biedt zelf het register met een zoekfunctie, en PDOK biedt de laag als kaartdienst die u in een bestaande viewer kunt hangen. Een eigen kaart loopt pas lonend wanneer u de rijksdata moet combineren met gemeentelijke monumenten, vergunningen, beschermde gezichten uit het omgevingsplan of eigen foto's en dossiers.

Dat is meestal een uitbreiding van een bestaande GIS-viewer voor gemeenten, waar de monumentenlaag één van de lagen is, en niet een losse applicatie. Voor het ontwerp van de koppeling met brondata en beheer kijkt u bij API-koppelingen.

Veelgestelde vragen

Is de data van de RCE vrij te gebruiken?

De dataset erfgoed-sdo staat op 11 oktober 2026 onder CC0 1.0 en de dataset cho onder CC BY. De PDOK-laag vermeldt CC BY 4.0. Bij CC BY moet u de bron vermelden. Controleer de licentie per dataset vlak voor publicatie, omdat die in de metadata kan veranderen.

Hoe vaak wordt de monumentendata bijgewerkt?

De RCE vermeldt bij de dataset cho een doorlopende actualisatie. De dataset erfgoed-sdo gaf als laatste wijziging 9 oktober 2026. Een vast tijdschema is niet gevonden. Haal daarom wekelijks op en toon de ophaaldatum, in plaats van te vertrouwen op een belofte over actualiteit.

Waarom staat mijn gemeentelijk monument niet in de RCE-data?

Het rijksmonumentenregister bevat per wettelijke definitie alleen rijksmonumenten. Gemeentelijke monumenten wijst de gemeente zelf aan, en die lijst staat bij de gemeente. Vraag uw gemeente of de lijst als open data is gepubliceerd, bijvoorbeeld via het open-dataregister van de overheid.

Kan ik de kaart zonder eigen server bouwen?

Ja, voor een eenvoudige variant. Beide RCE-API's en de PDOK-API geven CORS-headers mee, dus een statische pagina kan ze direct aanroepen. Voor een productiekaart is een tussenopslag verstandiger: u beperkt het aantal verzoeken, u verbergt de eigenaardigheden van de zoekindex en u houdt een bruikbare kaart bij een storing.

Hoe koppel ik een monument aan de BAG?

Zoek op postcode en huisnummer in de PDOK Locatieserver en bewaar het nummeraanduiding_id en het adresseerbaarobject_id. Dat levert een stabiele sleutel op. Controleer steekproefsgewijs de treffers, want een adres met toevoeging of een object zonder huisnummer vraagt om handmatige beoordeling.

Bronnen

Meer over TechinFlow

Een nieuw bureau in Haarlem voor maatwerk software, GIS en dataplatforms op open standaarden.

023 230 21 42Neem contact op

Een vraag of opdracht?

Vertel kort wat er speelt en voor welke organisatie. We reageren per e-mail.

Stuur een bericht