Museum & Cultural Heritage Collections Scraper avatar

Museum & Cultural Heritage Collections Scraper

Pricing

from $0.35 / 1,000 results

Go to Apify Store
Museum & Cultural Heritage Collections Scraper

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

ninhothedev

Maintained by Community

Actor 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-scrapermuseum-collections-scraper (this Actor)
Sources1 β€” The Metropolitan Museum of Art3 β€” Europeana + Smithsonian + Art Institute of Chicago
Coverage~500,000 Met objectsMillions of objects across 4,000+ European institutions, 19 Smithsonian museums and the Art Institute
SchemaMet-native fieldsUnified cross-museum schema β€” the same 26 columns no matter which museum a row came from
Best forDeep dives into the Met collectionComparative research, cross-institution datasets, large image corpora
museum columnn/aartic | 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

FieldMeaning
museumartic, europeana or smithsonian
object_idStable identifier inside that museum
titleObject title
artistCreator name (plain)
artist_displayCreator with life dates / nationality, when the source has it
date_displayHuman-readable date exactly as the museum publishes it
year_start / year_endNumeric year range
place_of_originGeographic origin
mediumMaterials / technique
dimensionsPhysical size
departmentCuratorial department or collection
classificationMuseum classification
object_typeObject type (painting, sculpture, IMAGE, TEXT…)
descriptionDescription / notes, capped at 2,000 characters
image_urlFull-size image
thumbnail_urlSmall preview
is_public_domaintrue / false / null (see the rights note below)
rightsRights statement or licence URI
credit_lineAcquisition / credit text
data_providerHolding institution
countryCountry of the holding institution (Europeana)
detail_urlPublic page for the object
queryThe search term that produced this row
sourceAPI host the row came from
scraped_atUTC 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
}
InputTypeDefaultWhat it does
modeselectsearchCurrently one mode: keyword search across the selected APIs
queriesarray["sunflower","samurai"]Free-text terms β€” artist, motif, culture, material, period
sourcesarrayall threeWhich museum APIs to query
maxItemsPerSourceinteger50Cap per source per query, so one huge collection cannot dominate
maxItemsinteger300 (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: true when 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.

SourceAuthNotes and limits
Art Institute of Chicago (api.artic.edu)None at all β€” fully openThe 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 api2demoA 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_KEYThe 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_domain flag.
  • Europeana β€” true when the rights URI contains publicdomain or CC0, false for a restrictive licence, null when 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 the rights column.

Always verify rights on the museum's own page (detail_url) before republishing an image.



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


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.