Europeana
Europeana combines the collections of thousands of heritage institutions in Europe, including Dutch ones: artworks, photographs, newspapers, books, natural history items. According to its API page there are more than 3 million artworks, 6 million photographs, 2 million newspapers and 12 million natural history items. All metadata are CC0; images carry their own rights statement per object. The APIs (Search, Record, IIIF, SPARQL, OAI-PMH) require a free key.

Rijksmuseum objects with and without a digital image (figures from the Rijksmuseum API): with an image is the largest part, 87% in October 2026
Breakdown in October 2026: with an image 87%, without an image 13%. Total: 841,378 objects.
What can you do with it?3 ideas
The Netherlands next to Europe
Search a subject (a city, an artist, an event) and compare what Dutch institutions contribute with those from other countries.
Freely reusable images
Filter with reusability=open for images with an open licence or in the public domain. Useful for an article or infographic, but always check the rights statement per object.
Newspapers over time
According to its own page Europeana has more than 2 million newspapers, with millions of pages as searchable full text. Track how often a word appears in newspapers from different countries.
How to process it3 steps
Request a key
Create a free Europeana account and request a key on the API page. Without a key every call returns HTTP 401 with invalid_apikey.
https://api.europeana.eu/en
Search
The Search API with query= and your key as wskey= or in the X-Api-Key header (both recognised, tested with an invalid key). At most 100 results per request (rows); for deep paging cursor=*. Refine with qf= (repeatable) and reusability=open|restricted|permission.
https://europeana.atlassian.net/wiki/spaces/EF/pages/2385739812/Search+API+Documentation
Start without a key
To try Dutch museum data without an account first, start with the Rijksmuseum's open API. It also offers its data in the Europeana Data Model (EDM).
https://data.rijksmuseum.nl/search/collection?type=painting&imageAvailable=true
Interesting combinations
Similar sources
Rijksmuseum collectionOne Dutch museum, but fully open without a key, with images via IIIF and a daily change stream.
KB, National Library of the Netherlands (linked data)Catalogue data of everything printed in the Netherlands, as open SPARQL without a key.
- NDNDE Datasetregister not in the index yet
Overview of Dutch heritage datasets with their own (often open) access, searchable without a key.
What to watch out for
- Key required
All APIs require a personal key tied to an account. That is why this page shows no figures we fetched from Europeana ourselves; the chart on this page comes from the open Rijksmuseum API.
- Rights per object
The metadata are CC0, the images are not automatically. Each object has its own rights statement, from public domain to all rights reserved.
- Depends on what institutions supply
Europeana shows what heritage institutions supply. How completely a Dutch collection is included differs per institution; for the full collection, check the institution itself.
- Website not for scripts
The robots.txt of europeana.eu disallows search pages and /api/ for crawlers. Use the API at api.europeana.eu with a key, not the website.
APIREST (JSON), OAI-PMH 2.0, IIIF, SPARQL · read 16 Oct 2026
Search, Record, Entity and the other REST APIs require a free key tied to a Europeana account: a personal key (one per account) or a project key with higher limits. Send it in the X-Api-Key header (preferred) or as wskey= (deprecated). Without a key: HTTP 401 invalid_apikey. The OAI-PMH service and the IIIF manifests worked without a key on 16 Oct 2026. tested
datasets (OAI-PMH sets) at Europeana, 16 Oct 2026; the Rijksmuseum set 90402 alone holds 337,641 records tested
jsonjson-ldRDF/XML (EDM)OpenSearch RSSxml
Base URL
https://api.europeana.eu
Endpoints 8
- GET
/record/v2/search.jsonSearch API: search all records with query, qf, reusability, facets and paging (key required). - GET
/record/v2/{dataset}/{lokaal-id}.jsonRecord API: all metadata of one object; also .jsonld and .rdf (key required). - GET
/entity/search, /entity/{type}/base/{id}, /entity/resolveEntity API: persons, places, concepts and organisations that records refer to (key required). - GET
/fulltext/search.json, /fulltext/{record-id}/…Fulltext: searchable text of newspapers and other digitised items. - GET
/oai/record?verb=…OAI-PMH 2.0 (version 0.8 beta): Identify, ListSets (datasets), ListIdentifiers, ListRecords, GetRecord; format edm. Worked without a key. - GET
https://iiif.europeana.eu/presentation/{dataset}/{lokaal-id}/manifestIIIF Presentation manifest of an object (worked without a key); images via https://iiif.europeana.eu/image/…. - GET
https://sparql.europeana.eu/SPARQL endpoint over the EDM data; a bare GET redirects to the console at api.europeana.eu/console/sparql/. - GET
ftp://download.europeana.eu/dataset/{XML|TTL}/{dataset}.zipFull dataset as ZIP (RDF/XML or Turtle), regenerated every Sunday evening; anonymous FTP.
Filtering from the description
Search API: Lucene/Solr-style query in query= plus repeatable refinements qf=FIELD:value; ranges with [a TO b]. OAI-PMH: set (dataset) and from/until.
Parameters 12
query | Search term(s), with field search (who:, what:, when:, where:, title:) and Lucene syntax. | from the description |
qf | Refinement, repeatable: qf=where:Amsterdam, qf=TYPE:IMAGE, qf=YEAR:[1600 TO 1700]; filter fields include COUNTRY, DATA_PROVIDER, PROVIDER, RIGHTS, LANGUAGE, MIME_TYPE, IMAGE_SIZE. | from the description |
reusability | open, restricted or permission (by rights statement). | from the description |
media / thumbnail / landingpage | Only records with a reachable media file, a thumbnail or a working link to the institution. | from the description |
theme | Thematic collection: art, newspaper, photography, map, ww1 … | from the description |
profile | Richness of the response: minimal, standard, rich, facets, params … | from the description |
facet | Facets besides DEFAULT, e.g. facet=LANGUAGE&profile=facets&rows=0 for counts only. | from the description |
rows | Results per request, max 100 (default 12). | from the description |
start | Offset (first = 1); start + rows at most 1,000. | from the description |
cursor | cursor=* for deep paging; follow nextCursor. Not together with start. | from the description |
sort | score, timestamp_created, timestamp_update, europeana_id, COMPLETENESS …, with +asc/+desc; also random or random_SEED. | from the description |
X-Api-Key | The key (preferred); wskey= in the URL is deprecated. | from the description |
Fields in the Search response (according to the documentation) 10
| Name | Type | Meaning |
|---|---|---|
totalResults | getal | Totaal aantal treffers |
items[].id | tekst | Europeana-id /<dataset>/<lokaal-id> |
items[].title / dcCreator | lijst | Titel en maker |
items[].type | tekst | Soort (EDM-type, bv. IMAGE of TEXT) |
items[].country / edmDataProvider / provider | lijst | Land en instelling van herkomst, en de aggregator |
items[].year | lijst | Jaar |
items[].rights | lijst | Rechtenverklaring (URI van rightsstatements.org of Creative Commons) |
items[].edmPreview / edmIsShownBy / edmIsShownAt | url | Miniatuur, mediabestand en pagina bij de instelling |
nextCursor | tekst | Cursor voor de volgende pagina |
facets[] | lijst | Tellingen per veldwaarde (bij profile=facets) |
Limits and pitfalls
- Personal keys: limits were reduced step by step until April 2026; project keys have higher limits. When exceeded HTTP 429. from the description
- Search: max 100 per request; basic paging only over the first 1,000 results, beyond that cursor. from the description
- OAI-PMH: 300 identifiers per page; the resumptionToken is valid for one day. tested
- We have no key and do not call the Search and Record APIs; their description comes from the documentation. The example goes through the OAI-PMH service, which answers without a key. tested
- pro.europeana.eu returned 403 to our honest User-Agent; not circumvented. The documentation is also on europeana.atlassian.net/wiki (robots.txt allows /wiki/). api.europeana.eu has no robots.txt (redirect to an HTML page). tested
- Europeana keeps no register of deleted records (OAI-PMH deletedRecord=no): re-harvest at least every six months. from the description
- The Rijksmuseum is set 90402 with 337,641 records, against 841,378 objects in its own API: Europeana does not have everything. An object id looks like http://data.europeana.eu/item/90402/AK_BR_325. tested
Try it HTTP 200 · 765 ms · 16 Oct
https://api.europeana.eu/oai/record?verb=GetRecord&metadataPrefix=edm&identifier=http://data.europeana.eu/item/90402/AK_BR_325
<?xml version="1.0" encoding="UTF-8"?> <OAI-PMH xmlns="http://www.openarchives.org/OAI/2.0/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.openarchives.org/OAI/2.0/ http://www.openarchives.org/OAI/2.0/OAI-PMH.xsd"><responseDate>2026-10-16T21:52:58Z</responseDate><request verb="GetRecord" metadataPrefix="edm" identifier="http://data.europeana.eu/item/90402/AK_BR_325">https://api.europeana.eu/oai</request><GetRecord><record><header><identifier>http://data.europeana.eu/item/90402/AK_BR_325</identifier><datestamp>2014-05-27T13:00:21Z</datestamp><setSpec>90402</setSpec></header><metadata><rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:edm="http://www.europeana.eu/schemas/edm/" xmlns:owl="http://www.w3.org/2002/07/owl#" xmlns:wgs84_pos="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:rdaGr2="http://rdvocab.info/ElementsGr2/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:ebucore="http://www.ebu.ch/metadata/ontologies/ebucore/ebucore#" xmlns:doa
Shortened response, saved at harvest time. Click the URL for the real, current response.
Read from Search API: parameters, fields, facets, paging · Record API: one object in JSON, JSON-LD or RDF/XML · Access: personal and project keys, X-Api-Key · Downloads (FTP) and the OAI-PMH service · IIIF Presentation, Image and Fulltext. Labels: from the description stated in what the api itself publishes. tested from our own small call. platform applies to every api on this platform, per its documentation. experience learned while building open data index.
How to fetch it
curl "https://api.europeana.eu/record/v2/search.json?wskey=JOUW_SLEUTEL&query=Rembrandt&reusability=open&rows=10"
More in this topic
See how this page is built
bron: europeana
blokken: []
secties:
- ideeen
- verwerken
- koppelingen
- vergelijkbaar
- beperkingen
- code
cache:
tag: bron:europeana
ververs: na statuscheck, als de bron nieuwer is
statuscheck:
methode: API-pagina api.europeana.eu/en bereikbaar; de API zelf vraagt een
sleutel, die we niet hebben
verwacht: maandelijks
Source: content/bronnen/europeana.yaml · Markdown


