Museum & Cultural Heritage Collections Scraper
Pricing
from $0.35 / 1,000 results
Museum & Cultural Heritage Collections Scraper
$0.35/1K π₯ Museum collections scraper! Artworks from Europeana, Smithsonian & Art Institute in one schema with images. No key. JSON, CSV, Excel or API in seconds. Build art datasets & exhibitions β‘
Pricing
from $0.35 / 1,000 results
Rating
0.0
(0)
Developer
ninhothedev
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Search three major open museum APIs at once β Europeana, the Smithsonian Open Access API and the Art Institute of Chicago β and get every artwork, artifact and cultural heritage object back in ONE unified schema. No API key, no login, no account setup. Just type what you are looking for.
Museum data is notoriously fragmented. Every institution ships its own JSON shape: the Art Institute returns flat fields plus an IIIF image server, Europeana wraps almost every leaf in a list, and the Smithsonian buries titles five levels deep inside content.descriptiveNonRepeating.title.content. This Actor does the normalisation work so you can go straight to the data.
How is this different from the Met Museum Scraper?
If you already use met-museum-scraper, here is the split:
| met-museum-scraper | museum-collections-scraper (this Actor) | |
|---|---|---|
| Sources | 1 β The Metropolitan Museum of Art | 3 β Europeana + Smithsonian + Art Institute of Chicago |
| Coverage | ~500,000 Met objects | Millions of objects across 4,000+ European institutions, 19 Smithsonian museums and the Art Institute |
| Schema | Met-native fields | Unified cross-museum schema β the same 26 columns no matter which museum a row came from |
| Best for | Deep dives into the Met collection | Comparative research, cross-institution datasets, large image corpora |
museum column | n/a | artic | europeana | smithsonian |
They complement each other. Use the Met scraper when you need the Met specifically; use this one when you want breadth across institutions in a single, join-ready table.
What you get
One row per artwork, identical columns for every source:
{"museum": "artic","object_id": "20029","title": "Sunflowers, MarchΓ© St Germain, Paris","artist": "James McNeill Whistler","artist_display": "James McNeill Whistler\nAmerican, 1834β1903","date_display": "1888/93","year_start": 1888,"year_end": 1893,"place_of_origin": "France","medium": "Watercolor, with black chalk, on ivory wove paper","dimensions": "12.7 Γ 21.6 cm","department": "Prints and Drawings","classification": "drawing and watercolor","object_type": "drawing and watercolor","description": "A work made of watercolor on paper.","image_url": "https://www.artic.edu/iiif/2/2e9476db-2d28-c197-25d8-9b525d63d5a0/full/843,/0/default.jpg","thumbnail_url": "https://www.artic.edu/iiif/2/2e9476db-2d28-c197-25d8-9b525d63d5a0/full/200,/0/default.jpg","is_public_domain": true,"rights": "Public Domain","credit_line": "Gift of Bertha E. Brown","data_provider": "Art Institute of Chicago","country": null,"detail_url": "https://www.artic.edu/artworks/20029","query": "sunflower","source": "api.artic.edu","scraped_at": "2026-07-28T14:52:11Z"}
Field reference
| Field | Meaning |
|---|---|
museum | artic, europeana or smithsonian |
object_id | Stable identifier inside that museum |
title | Object title |
artist | Creator name (plain) |
artist_display | Creator with life dates / nationality, when the source has it |
date_display | Human-readable date exactly as the museum publishes it |
year_start / year_end | Numeric year range |
place_of_origin | Geographic origin |
medium | Materials / technique |
dimensions | Physical size |
department | Curatorial department or collection |
classification | Museum classification |
object_type | Object type (painting, sculpture, IMAGE, TEXTβ¦) |
description | Description / notes, capped at 2,000 characters |
image_url | Full-size image |
thumbnail_url | Small preview |
is_public_domain | true / false / null (see the rights note below) |
rights | Rights statement or licence URI |
credit_line | Acquisition / credit text |
data_provider | Holding institution |
country | Country of the holding institution (Europeana) |
detail_url | Public page for the object |
query | The search term that produced this row |
source | API host the row came from |
scraped_at | UTC timestamp |
Every field is nullable. When a source does not publish a concept, the column is null β never a guessed or invented value. Europeana, for example, has no dimensions field in its search API, so that column is null for Europeana rows rather than filled with something plausible.
Input
{"mode": "search","queries": ["sunflower", "samurai"],"sources": ["artic", "europeana", "smithsonian"],"maxItemsPerSource": 50,"maxItems": 300}
| Input | Type | Default | What it does |
|---|---|---|---|
mode | select | search | Currently one mode: keyword search across the selected APIs |
queries | array | ["sunflower","samurai"] | Free-text terms β artist, motif, culture, material, period |
sources | array | all three | Which museum APIs to query |
maxItemsPerSource | integer | 50 | Cap per source per query, so one huge collection cannot dominate |
maxItems | integer | 300 (max 2000) | Hard stop for the whole run |
A failing source never kills the run. If Europeana is down or the Smithsonian rate limit is hit, the Actor logs a warning and keeps the other sources going. The run only fails when every selected source returned zero items.
Pricing
Roughly $0.50 per 1,000 artworks on the Apify platform (512 MB memory, pay-per-usage). A typical exploratory run of 300 objects across all three museums costs a few cents and finishes in well under a minute.
Use cases
- Art datasets β build a cross-institution corpus of paintings, sculptures or textiles with consistent columns, ready for pandas or a database import.
- AI training data β harvest image URLs plus rich, human-written captions (title, medium, date, description) with explicit rights information, and filter to
is_public_domain: truewhen you need permissive material. - Education β assemble teaching packs for a period, region or artist across European and American collections in one query.
- Digital exhibitions β power a virtual gallery, a museum-comparison site or a "this day in art history" feed with live links back to each institution.
Also popular for: provenance research, iconography studies, collection-gap analysis, and generative-art reference libraries.
Data sources, keys and limits
All three APIs are queried with public credentials that ship with the Actor. You never supply a key.
| Source | Auth | Notes and limits |
|---|---|---|
Art Institute of Chicago (api.artic.edu) | None at all β fully open | The most generous of the three. Images are delivered through the museum's IIIF server; the Actor builds {iiif_url}/{image_id}/full/843,/0/default.jpg for image_url and a 200 px variant for thumbnail_url. Note that the IIIF host expects a browser-style request β when downloading images programmatically, send a Referer: https://www.artic.edu/ header. |
Europeana (api.europeana.eu) | Public demo key api2demo | A shared testing key intended for evaluation, so it is rate limited and shared with every other demo user. For heavy production use, request a free personal key at pro.europeana.eu. The Actor uses profile=rich so creator names arrive as readable labels rather than bare VIAF URIs. |
Smithsonian Open Access (api.si.edu) | Public DEMO_KEY | The strictest limit of the three: the response advertises x-ratelimit-limit: 10, and sustained querying returns 429 OVER_RATE_LIMIT. The Actor spaces requests out and backs off on 429. A free personal key from api.data.gov lifts this substantially. Because relevance-sorted Smithsonian results are dominated by library catalogue records with no media, the Actor queries digitised objects (online_visual_material:true) first and then fills the remaining slots from the plain keyword query. |
Rights and public domain
is_public_domain is only set when the source states it:
- Art Institute β taken directly from the museum's own
is_public_domainflag. - Europeana β
truewhen the rights URI containspublicdomainor CC0,falsefor a restrictive licence,nullwhen no rights statement exists. - Smithsonian β always
null. The Smithsonian publishes a CC0 flag for its metadata, which is not the same as a public-domain statement for the object itself, so the Actor refuses to infer one. The raw value is still available in therightscolumn.
Always verify rights on the museum's own page (detail_url) before republishing an image.
Related Actors
- Met Museum Scraper β deep, single-museum coverage of The Metropolitan Museum of Art
- Internet Archive Scraper β books, audio, film and software from archive.org
- Project Gutenberg Scraper β 70,000+ public-domain ebooks with full metadata
- Wikivoyage Scraper β free travel guides, districts and points of interest
FAQ
Do I need an API key? No. All three sources are reached with public or demo credentials bundled with the Actor.
Why are some fields empty? Because the source genuinely does not publish them. Europeana's search API has no medium or dimensions; natural-history records have no artist. The Actor emits null instead of inventing values.
Why does one query return fewer Smithsonian rows than requested? The public DEMO_KEY throttles hard. Lower maxItemsPerSource, or run Smithsonian queries in a separate run.
Can I get only images I'm allowed to reuse? Filter the dataset on is_public_domain: true, or inspect rights for a CC0 / CC-BY licence.
Which formats can I export? Anything Apify supports: JSON, CSV, Excel, XML, JSONL, plus the API and integrations (Google Sheets, S3, webhooks).
Legal
This Actor reads publicly documented, officially provided open-data APIs and respects their published rate limits. Object metadata and images remain subject to each institution's own terms and to the rights statement recorded in the rights column.