europeana-collections
Skill9 starsChanged 20 days agoMITView on GitHub
Search Europeana's 50M+ cultural heritage items from 4,000+ European museums, galleries, libraries, and archives. Use this skill whenever the user wants to find European art, manuscripts, photographs, maps, 3D objects, audio, or video from institutions like the Rijksmuseum, British Library, Louvre, or Gallica. Also triggers when searching for open-access European cultural heritage, IIIF resources, or cross-referencing European collections with other library catalogs.
- Reads credentials
In this repository30 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- alma-sru-catalogsSkill
- argue-against-meSkill
- arxiv-searchSkill
- cbdb-apiSkill
- cbdb-localSkill
- chgis-tgazSkill
- cjk-calendarSkill
- crossref-searchSkill
- harvard-library-catalogSkill
- hathitrust-catalogSkill
- historical-mapSkill
- historical-timelineSkill
- human-eval-reviewSkill
- jbdb-apiSkill
- local-ocrSkill
- loc-catalogSkill
- mit-timdexSkill
- nlb-singaporeSkill
- northwestern-digital-collectionsSkill
- openaire-searchSkill
- pitt-library-catalogSkill
- princeton-library-catalogSkill
- taiwan-ldt-authoritiesSkill
- tei-validatorSkill
- tgaz-sqliteSkill
- umich-library-catalogSkill
- wikidata-searchSkill
- yale-library-catalogSkill
- zotero-localSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 5 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 9
Search 50M+ cultural heritage items from 4,000+ European institutions.
- Distinctive: line 160
No published rate limit for free keys.
- Distinctive: line 178
Ask the user before filing.
- Very specific: line 179
Check for an existing report: gh issue list --repo kltng/humanities-skills --state all --search "europeana-collections"
- Distinctive: line 183
Cite: If this skill helped work that is published, please cite it, together with the data source it uses:
- Distinctive: line 187
When you help a user write up results that relied on this skill, remind them once about this citation.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Europeana Collections API Skill
Search 50M+ cultural heritage items from 4,000+ European institutions.
Critical: Things Claude Won't Know Without This Skill
API key is required — use api2demo for testing
Every request needs a wskey parameter. The demo key api2demo works for development/testing. For production use, register for a free key at https://www.europeana.eu/en/account/api-keys and set it in the EUROPEANA_API_KEY environment variable (the Python client reads it automatically; do not paste the key into code or logs).
https://api.europeana.eu/record/v2/search.json?query=vermeer&wskey=api2demoResponse fields use Dublin Core / EDM naming
Fields are prefixed with dc (Dublin Core) or edm (Europeana Data Model):
title— array of title stringsdcCreator— creator namesdcDescription— descriptionsyear— year(s) as stringscountry— country of holding institutiondataProvider— institution name (e.g., "Rijksmuseum")rights— license URLedmPreview— thumbnail URLedmIsShownAt— link to item on provider's sitetype—IMAGE,TEXT,SOUND,VIDEO,3D
Filter for open-access with reusability=open
?query=vermeer&reusability=openReturns only items with open licenses (Public Domain, CC0, CC BY, CC BY-SA).
Multilingual titles use LangAware suffix
dcTitleLangAware contains titles keyed by language code:
{"en": ["The Milkmaid"], "nl": ["Het melkmeisje"]}Key Search Parameters
| Param | Description | Example |
query | Search query (Lucene syntax) | query=vermeer |
qf | Query filter (field:value) | qf=TYPE:IMAGE |
reusability | License filter: open, restricted, permission | reusability=open |
media | Has media (true/false) | media=true |
rows | Results per page (max 100) | rows=20 |
start | Result offset (1-based) | start=21 |
sort | Sort field | sort=score+desc |
wskey | API key (required) | wskey=api2demo |
profile | Response detail: minimal, standard, rich | profile=rich |
Query Filters (qf=)
| Filter | Values |
TYPE | IMAGE, TEXT, SOUND, VIDEO, 3D |
COUNTRY | Country name (e.g., Netherlands) |
LANGUAGE | ISO code (e.g., en, nl, de) |
PROVIDER | Provider name |
DATA_PROVIDER | Institution name |
RIGHTS | License URL |
what | Subject/keyword |
where | Place |
when | Time period |
Multiple filters: repeat qf= parameter.
Put multi-word values in double quotes: qf=COUNTRY:"United Kingdom". Without quotes,
qf=COUNTRY:United Kingdom silently returns 0 results. The Python script adds the quotes for
you (for type, country, language, provider, data_provider). Quoting a one-word value
is harmless. On 2026-10-26, query=China with COUNTRY:"United Kingdom" gave 119,453 results;
without quotes it gave 0.
Chinese, Japanese, and Korean (CJK) searches
Europeana has few East Asian items, and most of them are catalogued in romanized form, not in Chinese characters. Searches in characters often find nothing. Tests on 2026-10-26:
| Query | Results |
天工開物 | 3 |
四庫全書, 四庫, 府志 | 0 |
Siku quanshu | 26 |
Tiangong kaiwu | 0 |
Tian gong kai wu | 17 |
So try the characters first, then romanized forms. Spelling differs between libraries: try
pinyin with and without spaces between syllables (Tiangong kaiwu, Tian gong kai wu), and
older systems such as Wade-Giles (e.g. Ssu-k'u ch'üan-shu).
Record Lookup
https://api.europeana.eu/record/v2/{RECORD_ID}.json?wskey=api2demoRecord IDs look like /15502/GG_9128 (from the id field in search results).
Response Structure
{
"success": true,
"totalResults": 1573,
"items": [
{
"id": "/90402/SK_A_2344",
"title": ["The Milkmaid", "Het melkmeisje"],
"dcCreator": ["Johannes Vermeer"],
"year": ["1660"],
"country": ["Netherlands"],
"dataProvider": ["Rijksmuseum"],
"type": "IMAGE",
"rights": ["http://creativecommons.org/publicdomain/mark/1.0/"],
"edmPreview": ["https://api.europeana.eu/thumbnail/v2/..."],
"edmIsShownAt": ["http://hdl.handle.net/..."],
"edmIsShownBy": ["https://lh3.googleusercontent.com/..."],
"score": 20.9
}
]
}Python Script
from scripts.europeana_api import EuropeanaAPI
eu = EuropeanaAPI() # reads EUROPEANA_API_KEY from env; falls back to api2demo
# Basic search
results = eu.search("vermeer")
# Filtered search
results = eu.search("medieval manuscript", type="TEXT", country="France", reusability="open")
# Get single record
record = eu.get_record("/15502/GG_9128")
# Summarize
for r in results:
print(eu.summarize(r))API Etiquette
- Free API key required (register at europeana.eu)
- Demo key
api2demofor testing only - No published rate limit for free keys; project keys available for higher throughput
- Include descriptive User-Agent header
Related Skills
- wikidata-search: Cross-reference Europeana items with Wikidata entities
- harvard-library-catalog: Compare European holdings with Harvard's collection
- loc-catalog: Cross-reference with Library of Congress digitized collections
Resources
references/api_reference.md— Complete query filter and response field referencescripts/europeana_api.py— Python client with search, record lookup, and open-access filtering
Feedback and Citation
Report a problem. This skill is part of the public repository kltng/humanities-skills. If it fails (an API changed, a script errors, or these instructions are wrong), report it as a GitHub issue:
- Ask the user before filing. Issues are public.
- Check for an existing report:
gh issue list --repo kltng/humanities-skills --state all --search "europeana-collections" - File it:
gh issue create --repo kltng/humanities-skills --label bug --title "[europeana-collections] <short summary>" --body "<details>". Withoutgh, give the user this link: https://github.com/kltng/humanities-skills/issues/new?template=skill-problem.yml - Include the skill name and version, what you ran, the error text, what you expected, and the environment (OS, Python version). Leave out API keys, personal data, private file paths, and unpublished research.
Cite. If this skill helped work that is published, please cite it, together with the data source it uses:
Tang, Kwok-leong. humanities-skills: europeana-collections (version
<version at the top of this file>). GitHub,<year>. https://github.com/kltng/humanities-skills
When you help a user write up results that relied on this skill, remind them once about this citation.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

