Skip to main content

Europeana Search API quick reference

This reference covers the specific parts of the Europeana Search API used in the companion tutorial, Build a command-line search tool with the Europeana API. It summarizes the endpoint, request parameters, response fields, error codes, and rights values.

For the complete API, see the official Europeana APIs documentation.

Endpoint

GET https://api.europeana.eu/record/v2/search.json

Requests are authenticated with an API key passed as the wskey query parameter. Responses are JSON.

API keys

Key typeIntended use
Personal API keyLearning, testing, and personal use
Project API keyProduction applications with higher request rates

Register a key at europeana.eu/en/account/api-keys.

Request parameters

ParameterTypeRequiredDescription
querystringYesKeyword search across all fields. Because it matches text anywhere, prefer specific terms ( ancient greek amphora) over general ones (greek vase) to avoid returning modern objects.
wskeystringYesYour API key.
rowsintegerNoNumber of results per response. Default: 12.
qfstringNoAdditional query filter in FIELD:value form. For example, TYPE:IMAGE returns only image records.
reusabilitystringNoFilters results by license category: open, restricted, or permission. See Rights and reusability.
cursorstringNoPagination token. Pass cursor=* on the first request. See Pagination.

Pagination

The API pages through result sets with a cursor:

  1. The first request sends cursor=*.
  2. When more pages exist, the response includes a nextCursor value.
  3. Each following request passes the previous response's nextCursor as cursor. The value must be URL-encoded — in Python, urllib.parse.quote(cursor, safe=''). An unencoded cursor returns 400 Bad Request.
  4. The final page contains no nextCursor.

Response

Top-level fields

FieldTypeDescription
successbooleanWhether the request succeeded.
itemsCountintegerNumber of items in this response, controlled by rows.
totalResultsintegerTotal matching items in the database, independent of itemsCount.
nextCursorstringToken for the next page of results. Present only when more pages are available.
itemsarrayThe matching records. See Item fields.

Item fields

FieldTypeDescription
countryarrayThe country where the physical artifact is currently located.
dataProviderarrayThe institution holding the physical item.
dcTitleLangAwareobjectTitles keyed by language code (for example, en, ro). The en key is absent when the institution provides no English metadata; fall back to title.
edmIsShownByarrayDirect URL to the full-quality media file at the source institution. Distinct from edmPreview.
edmPreviewarrayURL of a Europeana-hosted thumbnail. Display is governed by previewNoDistribute.
edmTimespanLabelarrayDate or date range of the artifact, accessed as edmTimespanLabel[0]["def"]. Many records omit this field, so your code must handle missing values safely.
guidstringURL of the item's page on Europeana. Includes your API key as a tracking parameter — remove this before sharing the link publicly.
linkstringRecord API URL for the item, for programmatic access only. Contains the API key as a query parameter — do not log, cache, or display this link.
previewNoDistributebooleanWhen true, the thumbnail is restricted from redistribution: do not render edmPreview.
rightsarrayFull license URL for the item. See Rights and reusability.
titlearrayItem title, possibly in several languages. Prefer dcTitleLangAware when selecting a title by language.
typestringMedia type: IMAGE, TEXT, VIDEO, or SOUND.

Example response

{
"success": true,
"requestNumber": 999,
"itemsCount": 1,
"totalResults": 240,
"nextCursor": "AoREQ3Pekv69iAM/FS85NTEvQ3VsdHVyYWxpYV8yNzFjODk4Yl8xMWMyXzQ3ODRfOGU2Zl84MmUzNzQxN2ZjOTQ=",
"items": [
{
"dataProvider": ["National Museum of Romanian History"],
"country": ["Romania"],
"dcTitleLangAware": { "ro": ["Amforă"] },
"title": ["Amforă"],
"edmIsShownBy": ["https://resource.culturalia.ro/imagini-clasate/imagini50/c9e3a5a12c3c4ddc80600a1d3a5f6b001200.jpg"],
"edmPreview": ["https://api.europeana.eu/thumbnail/v2/url.json?uri=...&type=IMAGE"],
"guid": "https://www.europeana.eu/item/2048047/Clasate_1a4ad07a715847d3a76a2086fc535307",
"link": "https://api.europeana.eu/record/2048047/Clasate_1a4ad07a715847d3a76a2086fc535307.json",
"rights": ["http://creativecommons.org/licenses/by-sa/4.0/"],
"previewNoDistribute": false,
"type": "IMAGE"
}
]
}

In this record, dcTitleLangAware has no en key and edmTimespanLabel is absent. Both situations are common.

Errors

HTTP statusJSON codeCause
400 Bad Request400-SCMalformed request — most often an unencoded or invalid cursor value.
400 Bad Request401_key_invalidAuthentication failed: the wskey value is missing, expired, or invalid. Despite the code's name, the API returns HTTP 400, not 401, for this error.

Rights and reusability

The reusability request parameter filters results by license category. The rights response field states each item's exact license. In short: the filter controls which items you get back; the field tells you the exact rules for using them.

reusability valueWhat it returns
openItems that permit free reuse (but may still require attribution, like CC BY).
restrictedItems that permit reuse with restrictions (such as non-commercial use).
permissionItems that require the rights holder's explicit permission.

Common rights values:

License URLMeaning
http://creativecommons.org/publicdomain/mark/1.0/Public domain — no restrictions.
http://creativecommons.org/licenses/by/4.0/CC BY — free to use with attribution.
http://creativecommons.org/licenses/by-nc/4.0/CC BY-NC — non-commercial use only.
http://rightsstatements.org/vocab/InC/1.0/In copyright — permission required.

See also