# Register of national monuments

The register of the Cultural Heritage Agency: 63,098 national monuments on 15 October 2026, of which 61,637 built and 1,461 archaeological. With number, category, registration date, BAG address and map point or outline. Also the protected townscapes and world heritage. As a map service (WFS), download and linked data with SPARQL.

- Publisher: Rijksdienst voor het Cultureel Erfgoed
- Area: Netherlands · Finest detail: monument
- Period: 1965 – heden · Refreshed: daily
- Access: Open · Licence: CC BY 4.0 (linked data RCE, tenzij anders vermeld)
- Join keys: rijksmonumentnummer, BAG-id (verblijfsobject), postcode + huisnummer, coördinaten
- Status: ok (2026-10-16) · 63.098 rijksmonumenten (linked data)
- URL: https://monumentenregister.cultureelerfgoed.nl

## What can you do with it?
- **Which municipality has the most monuments?.** Amsterdam leads with 7,679 national monuments, followed by Maastricht (1,672) and Utrecht (1,586). Divide by population for a fairer ranking.
- **New monuments.** Few national monuments are still being added: 19 registered in 2026 (the latest on 7 August), 5 in 2025. Which ones are they?
- **Monuments and making homes greener.** Join through the BAG address to construction year and energy labels. How many homes in your area are monuments, and so harder to insulate?
- **What was removed from the list?.** 4,354 objects in the linked data have the status 'geen rijksmonument' (no longer a monument) and 44 are 'voorbeschermd' (provisionally protected). Find out what disappeared, and why.

## How to process it
1. **Quickly onto a map via the WFS.** The RCE map service has layers for monument points, monument outlines, townscapes (including withdrawn ones) and world heritage. Ask for GeoJSON in longitude and latitude.
   `https://services.rce.geovoorziening.nl/rce/wfs?request=GetFeature&service=WFS&version=2.0.0&typeNames=rce:NationalListedMonumentPoints&outputFormat=application/json&count=5&srsName=EPSG:4326`
2. **Or download everything at once.** All monument points as a shapefile in RD (zip, 3.5 MB). On 15 October 2026 the file was from that same morning.
   `https://services.rce.geovoorziening.nl/www/download/data/Rijksmonumentpunten_28992.zip`
3. **Address and municipality via SPARQL.** The WFS has no address or municipality. Those are in the linked data, which you query with SPARQL. This query counts national monuments per municipality; set Accept to text/csv for a table.
   `https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql?query=PREFIX%20ceo%3A%20%3Chttps%3A%2F%2Flinkeddata.cultureelerfgoed.nl%2Fdef%2Fceo%23%3E%0APREFIX%20skos%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F2004%2F02%2Fskos%2Fcore%23%3E%0ASELECT%20%3Fgemeente%20(COUNT(DISTINCT%20%3Fm)%20AS%20%3Faantal)%20WHERE%20%7B%0A%20%20%3Fm%20a%20ceo%3ARijksmonument%20%3B%0A%20%20%20%20%20ceo%3AheeftJuridischeStatus%2Fskos%3AprefLabel%20%22rijksmonument%22%20%3B%0A%20%20%20%20%20ceo%3AheeftBasisregistratieRelatie%2Fceo%3Agemeentenaam%20%3Fgemeente%20.%0A%7D%20GROUP%20BY%20%3Fgemeente%20ORDER%20BY%20DESC(%3Faantal)%20LIMIT%205`
4. **Filter on the status.** The linked data also holds removed objects. Keep only ceo:heeftJuridischeStatus with label 'rijksmonument'. Always count with COUNT(DISTINCT): many facts appear twice.
5. **Read the description per monument.** Each point in the WFS has a link (rijksmonumenturl) to its page in the monument register, with the description.
   `https://monumentenregister.cultureelerfgoed.nl/monumenten/341971`

## Interesting combinations
- How old and how large are the listed homes? → [pdok-bag](https://www.opendataindex.nl/en/bron/pdok-bag.md) via BAG-id (verblijfsobject). The linked data gives the BAG unit IDs per monument (for example 0014010011071583), plus postcode and house number. Fetch construction year and floor area from the BAG.
- Where are the most monuments per resident? → [cbs-kwb](https://www.opendataindex.nl/en/bron/cbs-kwb.md) via gemeente. The linked data gives the municipality name and a municipality URI (such as …/Uitgeest_(gemeente)), not a CBS code. Join on name and check municipalities renamed after mergers.

## Similar sources
- [pdok-bag](https://www.opendataindex.nl/en/bron/pdok-bag.md): All buildings with construction year, including unprotected ones. Says nothing about monument status.
- [openstreetmap](https://www.opendataindex.nl/en/bron/openstreetmap.md): Volunteers add the monument number to objects with the ref:rce tag (10,067 times on 15 October 2026, according to taginfo). Handy for maps, not complete.

## What to watch out for
- **Map service without address.** The WFS points have number, category and status, but no name, address or municipality. For that you need the linked data or the register.
- **Point or outline.** There are 63,083 monument points and 4,217 outlines. A complex (such as a country estate) consists of several monuments sharing a complex number.
- **Counts differ per route.** On 15 October 2026 the linked data counted 63,098 national monuments and the WFS 63,083 points. Always state which route and which day you used.
- **The Atom feed lags behind.** The INSPIRE download feed says it was updated on 20 May 2025, while the zip files themselves are from today. Check the file's Last-Modified.
- **SPARQL has a time limit.** A query may run for 58 seconds. Don't scan all 59 million statements at once; start from ceo:Rijksmonument.

## API (OGC WFS 2.0.0)

- Base: https://services.rce.geovoorziening.nl/rce/wfs
- Access: No key. Fees: ?; access constraints: ?. (from the description)
- Formats: application/gml+xml; version=3.2, DXF, DXF-ZIP, GML2, KML, SHAPE-ZIP, application/json, application/vnd.google-earth.kml xml, application/vnd.google-earth.kml+xml, csv, gml3, gml32, json, text/csv, text/xml; subtype=gml/2.1.2, text/xml; subtype=gml/3.1.1, text/xml; subtype=gml/3.2
- Size: 63083 features in rce:NationalListedMonumentPoints (tested)
- Filtering: OGC Filter Encoding (FES 2.0); PropertyIsLessThan, PropertyIsGreaterThan, PropertyIsLessThanOrEqualTo, PropertyIsGreaterThanOrEqualTo, PropertyIsEqualTo, PropertyIsNotEqualTo, PropertyIsLike, PropertyIsBetween, PropertyIsNull, PropertyIsNil, Disjoint, Equals, DWithin, Beyond, Intersects, Touches, Crosses, Within, Contains, Overlaps, BBOX, After, Before, Begins, BegunBy, TContains, During, TEquals, TOverlaps, Meets, OverlappedBy, MetBy, EndedBy

### Endpoints
- `GET ?request=GetCapabilities`: service description
- `GET ?request=DescribeFeatureType`: fields of a layer (XSD)
- `GET ?request=GetFeature`: the features themselves, with geometry
- `GET ?request=GetPropertyValue`: only the values of one field
- `GET ?request=ListStoredQueries`: stored queries
- `GET ?request=DescribeStoredQueries`: stored query details
- `GET ?request=CreateStoredQuery`: CreateStoredQuery
- `GET ?request=DropStoredQuery`: DropStoredQuery

### Parameters
- `typeNames`: which layer: rce:NationalListedMonumentPolygons, rce:NationalListedMonumentPoints, rce:Townscapes, rce:WorldHeritage, rce:ingetrokken_stadsendorpsgezichten (from the description)
- `outputFormat`: e.g. application/json for GeoJSON (from the description)
- `srsName`: projection, e.g. EPSG:4326 for web maps (default EPSG:28992, RD) (from the description)
- `count / startIndex`: paging (from the description)
- `filter`: FES XML filter on fields or geometry (from the description)
- `bbox`: box in the chosen projection (platform)

### Fields (11)
`id` long, `geom` geometrie, `rijksmonument_nummer` int, `complex_nummer` int, `juridische_status` string, `aard_monument` string, `herkomst` string, `kwaliteit_geometrie` string, `hoofdcategorie` string, `subcategorie` string, `rijksmonumenturl` string

### Limits and pitfalls
- At most 2,147,483,647 features per request (CountDefault). (from the description)
- Paging supported: count and startIndex (ImplementsResultPaging). (from the description)
- Without count you get the whole layer (63,083 points). Always pass count if you only want a look. (tested)
- Layers (resultType=hits, 15 Oct 2026): NationalListedMonumentPoints 63,083, NationalListedMonumentPolygons 4,217, Townscapes 472, WorldHeritage 19. (tested)
- GeoServer also supports cql_filter, for example cql_filter=aard_monument='archeologisch' (1,461 points). (tested)
- For address, municipality and BAG link: SPARQL at https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql (TriplyDB, dataset rce/cho, reloaded daily). Accept application/json gives a flat list, application/sparql-results+json the standard format. (tested)
- The INSPIRE harmonised model is also on PDOK: https://service.pdok.nl/rce/beschermde-gebieden-cultuurhistorie/wfs/v1_0 (from the description)
- The same INSPIRE data is also available as OGC API Features: https://api.pdok.nl/rce/beschermde-gebieden-cultuurhistorie/ogc/v1 (collections rce_inspire_points and rce_inspire_polygons, CC BY 4.0, updated 15 October 2026). Each object has the link to the monument register in ci_citation and the registration date in legalfoundationdate. Note: localid is not the monument number (localid 10001.00 belongs to monument 26722); the number is at the end of ci_citation. You can only filter on localid. (tested)

### Example
```
https://services.rce.geovoorziening.nl/rce/wfs?request=GetFeature&service=WFS&version=2.0.0&typeNames=rce:NationalListedMonumentPoints&outputFormat=application/json&count=1&srsName=EPSG:4326
```

## How to fetch it

### curl
```bash
curl "https://services.rce.geovoorziening.nl/rce/wfs?request=GetFeature&service=WFS&version=2.0.0&typeNames=rce:NationalListedMonumentPoints&outputFormat=application/json&count=5&srsName=EPSG:4326"
```

### python
```python
import requests

vraag = """
PREFIX ceo: <https://linkeddata.cultureelerfgoed.nl/def/ceo#>
PREFIX skos: <http://www.w3.org/2004/02/skos/core#>
SELECT ?gemeente (COUNT(DISTINCT ?m) AS ?aantal) WHERE {
  ?m a ceo:Rijksmonument ;
     ceo:heeftJuridischeStatus/skos:prefLabel "rijksmonument" ;
     ceo:heeftBasisregistratieRelatie/ceo:gemeentenaam ?gemeente .
} GROUP BY ?gemeente ORDER BY DESC(?aantal) LIMIT 10"""
r = requests.post("https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql",
                  data={"query": vraag}, headers={"Accept": "application/json"})
for rij in r.json():
    print(rij["gemeente"], rij["aantal"])
```

## What you can build with it
- [A monument walk through your own neighbourhood](https://www.opendataindex.nl/en/bouwen/monumentenwandeling.md): An app that builds a walk past ten listed monuments around any starting point, with address, description, photo, a historic image from the Rijksmuseum and a café on the way.


## Examples with real figures (2)

For each example the finding, the reference date and the call that fetches exactly these figures.

- **National monuments per municipality: most Amsterdam (7,679 national monuments), then Maastricht and Utrecht** (oktober 2026). Table rce/cho. [Example](https://www.opendataindex.nl/en/voorbeeld/rijksmonumenten-gemeenten)
  - `https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql?query=PREFIX%20ceo%3A%20%3Chttps%3A%2F%2Flinkeddata.cultureelerfgoed.nl%2Fdef%2Fceo%23%3E%0APREFIX%20skos%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F2004%2F02%2Fskos%2Fcore%23%3E%0ASELECT%20%3Fgemeente%20(COUNT(DISTINCT%20%3Fm)%20AS%20%3Fn)%20WHERE%20%7B%0A%20%20%3Fm%20a%20ceo%3ARijksmonument%20%3B%20ceo%3AheeftJuridischeStatus%2Fskos%3AprefLabel%20%22rijksmonument%22%20%3B%0A%20%20%20%20%20ceo%3AheeftBasisregistratieRelatie%2Fceo%3Agemeentenaam%20%3Fgemeente%20.%0A%7D%20GROUP%20BY%20%3Fgemeente%20ORDER%20BY%20DESC(%3Fn)`
- **National monuments: highest in Noord-Holland (14,052 national monuments), lowest in Flevoland (110 national monuments)** (oktober 2026). Table rce/cho. [Example](https://www.opendataindex.nl/en/voorbeeld/rijksmonumenten-provincies)
  - `https://api.linkeddata.cultureelerfgoed.nl/datasets/rce/cho/services/cho/sparql?query=PREFIX%20ceo%3A%20%3Chttps%3A%2F%2Flinkeddata.cultureelerfgoed.nl%2Fdef%2Fceo%23%3E%0APREFIX%20skos%3A%20%3Chttp%3A%2F%2Fwww.w3.org%2F2004%2F02%2Fskos%2Fcore%23%3E%0ASELECT%20%3Fprov%20(COUNT(DISTINCT%20%3Fm)%20AS%20%3Fn)%20WHERE%20%7B%0A%20%20%3Fm%20a%20ceo%3ARijksmonument%20%3B%20ceo%3AheeftJuridischeStatus%2Fskos%3AprefLabel%20%22rijksmonument%22%20%3B%0A%20%20%20%20%20ceo%3AheeftBasisregistratieRelatie%2Fceo%3AheeftProvincie%20%3Fprov%20.%0A%7D%20GROUP%20BY%20%3Fprov`
