# Rijksmuseum collection

The Rijksmuseum shares its collection data through six services without a key (plus the deprecated SRU): a search API, a resolver for its persistent identifiers (Linked Art), OAI-PMH, a change stream (LDES), IIIF for images and data dumps. On 16 October 2026 the search API counted 841,378 objects, 735,784 of them with a digital image, 425,961 under prints and 5,337 paintings.

- Publisher: Rijksmuseum
- Area: Netherlands · Finest detail: object
- Period: actuele collectie (objecten uit de oudheid tot nu) · Refreshed: daily
- Access: Open · Licence: Publiek domein of CC0; CC BY 4.0 waar auteursrecht geldt; enkele stukken met beperkingen (per object aangegeven)
- Join keys: objectnummer (SK-C-5), persistent identifier (id.rijksmuseum.nl), maker
- Status: ok (2026-10-16) · LDES, dag 2026-10-16: 10 wijzigingen op de eerste pagina
- URL: https://data.rijksmuseum.nl

## What can you do with it?
- **All paintings by one artist.** Combine creator and type: Rembrandt van Rijn with type painting returns 25 paintings. Fetch each object's data through the resolver and put them on a timeline.
- **Images for an infographic.** 735,784 objects have a digital image. With IIIF you request exactly the size you need, for example The Night Watch at 800 pixels wide. Check the rights per object.
- **What changes in the collection?.** The LDES stream lists per day which objects were created, updated or deleted. Follow new acquisitions or improved descriptions without downloading everything again.
- **A century in prints and photographs.** Search with creationDate and a wildcard (19??) plus a type, for example photograph. Compare the counts with 19*: they differ a lot (see limitations), so state which query you used.

## How to process it
1. **Search and count.** The search API returns 100 identifiers per page and the total in partOf.totalItems. Filters: creator, type, material, technique, title, objectNumber, creationDate, description, aboutActor and imageAvailable. Dutch and English terms both work.
   `https://data.rijksmuseum.nl/search/collection?creator=Rembrandt%20van%20Rijn&type=painting`
2. **Data for one object.** Look up the object by number (SK-C-5 is The Night Watch) and request the identifier with _profile=la-framed for Linked Art as JSON-LD. Without a profile a browser is redirected to the collection website.
   `https://id.rijksmuseum.nl/200107928?_profile=la-framed`
3. **The image via IIIF.** The Linked Art data contains a IIIF address (iiif.micr.io). Replace full/max with full/800, for an image 800 pixels wide; info.json gives the dimensions.
   `https://iiif.micr.io/PJEZO/full/800,/0/default.jpg`
4. **Everything or just the changes.** For the whole collection: OAI-PMH (formats edm and oai_dc) or the data dumps. For keeping up: the LDES stream, organised by year, month and day.
   `https://data.rijksmuseum.nl/ldes/collection.json`

## Interesting combinations
- How does this object appear in Europeana? → [europeana](https://www.opendataindex.nl/en/bron/europeana.md) via objectnummer of identifier van het Rijksmuseum. The Rijksmuseum also offers its data in the Europeana Data Model (EDM, via OAI-PMH and the resolver). Search Europeana by title or object number to place an object next to similar ones from other countries.
- What was printed when this print was made? → [kb-linked-data](https://www.opendataindex.nl/en/bron/kb-linked-data.md) via naam van maker of auteur. Put 17th and 18th century prints next to the titles the STCN lists for the same year or printer.

## Similar sources
- [europeana](https://www.opendataindex.nl/en/bron/europeana.md): Europeana combines collections from thousands of European institutions, including Dutch ones, but the API requires a (free) key.
- [rijksmonumenten](https://www.opendataindex.nl/en/bron/rijksmonumenten.md): Also national heritage, but buildings and archaeology on the map rather than museum objects.
- [Netwerk Digitaal Erfgoed, Datasetregister](https://datasetregister.netwerkdigitaalerfgoed.nl): Catalogue of over 3,400 heritage datasets from Dutch museums and archives; it lists collections not in this index.

## What to watch out for
- **Types overlap.** The type search field is a partial match: print also finds photomechanical print, and schilderij (4,893) gives different counts than painting (5,337). Count per term and say which term you used.
- **Library and archive not in the search API.** The search API covers museum objects only. Data from the museum library are in the data dumps, including 321,354 bibliographic works (work.tar.gz).
- **Rights per object.** Most data and images are public domain or CC0, but works still under copyright carry CC BY 4.0 or a restriction. This is stated per object on the collection website.
- **Dates are text.** creationDate with 16?? finds 44,973 objects, 16* finds 103,635. The documentation does not say how date ranges are matched. For real dating use begin_of_the_begin and end_of_the_end in the Linked Art data.
- **Old API with a key.** Many examples online use the old Rijksmuseum API at rijksmuseum.nl/api with a key. The services on data.rijksmuseum.nl work without a key and use different identifiers.

## API (Linked Art (JSON-LD), OAI-PMH, LDES, IIIF)

- Base: https://data.rijksmuseum.nl
- Access: No key (the old API at rijksmuseum.nl/api with a key is something else). (tested)
- Formats: json-ld, json, xml, RDF/XML (EDM), n-triples, jpeg
- Size: 841378 objects in the Search API (16 Oct 2026), 735,885 of them with an image (tested)
- Filtering: Query parameters, combinable (AND); creator, material, technique and aboutActor are repeatable. Partial matching on text, wildcards * and ? only for objectNumber and creationDate.; veld=waarde, herhaald veld, *, ?

### Endpoints
- `GET /search/collection`: Search the museum collection; 100 identifiers per page, total in partOf.totalItems, next page in next.id.
- `GET https://id.rijksmuseum.nl/{nummer}?_profile=la-framed`: Resolver: all data on an object, person, place … as Linked Art JSON-LD. Without _profile a browser is redirected to the collection website.
- `GET /{nummer}`: The same data on data.rijksmuseum.nl, always as data (not the canonical URI).
- `GET /oai?verb=…`: OAI-PMH: Identify, ListMetadataFormats (edm, oai_dc), ListSets, ListIdentifiers, ListRecords, GetRecord. Museum objects only.
- `GET /ldes/collection.json`: LDES change stream (Create, Update, Delete), organised by year, month and day via tree:relation; also per dataset: /ldes/dataset/{number}/collection.json.
- `GET /cd/collection.json`: IIIF Change Discovery: Activity Streams of changes, start at the last page.
- `GET https://iiif.micr.io/{id}/full/{breedte},/0/default.jpg`: IIIF Image API: an image at any size; info.json gives the dimensions, /manifest the IIIF Presentation manifest.

### Parameters
- `creator`: Creator, partial match (Rembrandt finds Rembrandt van Rijn); repeatable. (from the description)
- `type`: Object type, Dutch or English (painting, schilderij); partial match. (from the description)
- `title`: Title, e.g. Night Watch. (from the description)
- `objectNumber`: Object number with wildcards: SK-C-5* finds SK-C-5, SK-C-50 … (from the description)
- `creationDate`: Year or period with * and ? (16??). Note: 16?? returned 44,973 objects, 16* 103,635. (experience)
- `material / technique`: Material (canvas, oil paint) and technique; repeatable. (from the description)
- `description`: Words in the description. (from the description)
- `aboutActor`: Objects depicting or about a person or group. (from the description)
- `imageAvailable`: true or false: only objects with (or without) a digital image. (tested)
- `memberOfSetId`: Objects in a set, e.g. https://id.rijksmuseum.nl/260251. (from the description)
- `pageToken`: Paging; take the full address from next.id. (from the description)
- `_profile`: Resolver: la-framed (Linked Art), * (default) or other profiles such as EDM; also via the Accept-Profile header. (from the description)

### Fields in Search and Linked Art (selection) (12)
`partOf.totalItems` getal, `orderedItems[].id` uri, `next.id` url, `identified_by[].content` tekst, `produced_by.part[].carried_out_by` uri, `produced_by.timespan` object, `classified_as[]` uri, `made_of[]` uri, `dimension[]` object, `shows[]` uri, `subject_of[].digitally_carried_by[].access_point` url, `current_location` uri

### Limits and pitfalls
- Search: always 100 results per page; no limit on the number of pages (according to the documentation). (from the description)
- No documented rate limit. data.rijksmuseum.nl has no robots.txt (404); iiif.micr.io does have Disallow: / for all bots: fetch images for display, not in automated bulk. (tested)
- type is a partial match: print also finds photomechanical print, schilderij and painting return different counts. State the term you used. (experience)
- OAI-PMH ListSets returned 'An unhandled exception occurred.' on 16 Oct 2026; ListIdentifiers with metadataPrefix=edm worked (completeListSize 846,804). (tested)
- Since 11 June 2026 the EDM in OAI-PMH strictly follows Europeana's schemas; anyone parsing the XML directly should check this. (from the description)
- Library and archive are not in Search and OAI-PMH. Library data are in the LDES stream and the data dumps (including 321,354 bibliographic works in work.tar.gz). (from the description)

### Example
```
https://data.rijksmuseum.nl/search/collection?creator=Rembrandt%20van%20Rijn&type=painting
```

## How to fetch it

### curl
```bash
curl "https://data.rijksmuseum.nl/search/collection?creator=Rembrandt%20van%20Rijn&type=painting"
```

### python
```python
import requests

zoek = "https://data.rijksmuseum.nl/search/collection"
r = requests.get(zoek, params={"objectNumber": "SK-C-5"}).json()
pid = r["orderedItems"][0]["id"]                  # https://id.rijksmuseum.nl/200107928
obj = requests.get(pid, params={"_profile": "la-framed"}).json()
print([x["content"] for x in obj["identified_by"]][:2])   # ['SK-C-5', 'De Nachtwacht']
```

## 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.

- **Rijksmuseum objects with and without a digital image (figures from the Rijksmuseum API): with an image is the largest part, 87% in October 2026** (oktober 2026). Table search/collection. [Example](https://www.opendataindex.nl/en/voorbeeld/rijksmuseum-met-afbeelding)
  - `https://data.rijksmuseum.nl/search/collection?imageAvailable=true`
  - `https://data.rijksmuseum.nl/search/collection?imageAvailable=false`
- **Objects in the Rijksmuseum collection by type: most prints (425,961 objects), then photographs and drawings** (oktober 2026). Table search/collection. [Example](https://www.opendataindex.nl/en/voorbeeld/rijksmuseum-objecten-per-soort)
  - `https://data.rijksmuseum.nl/search/collection`
  - `https://data.rijksmuseum.nl/search/collection?type=print`
  - `https://data.rijksmuseum.nl/search/collection?type=photograph`
  - `https://data.rijksmuseum.nl/search/collection?type=drawing`
