Getty Museum Artworks Scraper avatar

Getty Museum Artworks Scraper

Pricing

from $1.15 / 1,000 artwork extracteds

Go to Apify Store
Getty Museum Artworks Scraper

Getty Museum Artworks Scraper

Export supplied Getty Museum artwork URLs or IDs as structured creator, date, material, dimensions, rights, image, credit, and provenance records.

Pricing

from $1.15 / 1,000 artwork extracteds

Rating

0.0

(0)

Developer

Automation Lab

Automation Lab

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 days ago

Last modified

Categories

Share

Export supplied Getty Museum artworks URLs or object IDs as structured, source-attributed catalog records. The Actor resolves Getty's public identifier, reads the official Museum Collection Linked Open Data record, and returns creator, date, material, dimensions, rights, credit, image, IIIF, and provenance fields.

It is designed for known-item enrichment and recurring cultural-heritage datasets. It does not search Getty or crawl the entire collection.

What this Actor does

  1. Accepts public object IDs such as 103RDF, canonical artwork URLs, or collection UUIDs.
  2. Resolves public IDs through Getty's own server-rendered identifier mapping.
  3. Fetches the official Linked.Art JSON record from data.getty.edu.
  4. Normalizes deeply nested museum data into one integration-friendly row per artwork.
  5. Deduplicates entries that resolve to the same UUID.

No Getty login, API key, browser, or paid proxy is required. The Actor does not download image binaries; it exports Getty's public IIIF references.

Who is it for?

  • Digital humanities researchers create reproducible, source-linked corpora.
  • Art historians compare makers, dates, media, measurements, and provenance.
  • Collection-data engineers normalize Getty records alongside other museum datasets.
  • Educators and curators prepare attributed object lists and teaching resources.
  • Rights reviewers shortlist records while retaining the per-record rights statement.

Data you can extract

GroupFields
IdentityobjectId, uuid, title, alternateTitle, accessionNumber
Creator and datecreator, creatorDetails, date, dateEarliest, dateLatest
Physical descriptionmaterials, medium, dimensions, measurements, classifications
Collection contextdepartment, culture, creditLine, description
Rights and mediarights, metadataLicense, imageUrl, thumbnailUrl, iiifManifestUrl
Research linksprovenance, bibliography, sourceUrl, apiUrl, scrapedAt

Fields are null or empty when Getty does not publish that value. The Actor never fabricates missing catalog data.

Getting started

  1. Open the Actor input.
  2. Add at least one Getty collection URL, object ID, or UUID to Artwork URLs or IDs.
  3. Set Maximum artworks if you want to process only the start of a list.
  4. Click Start.
  5. Open the default dataset and use the Overview view or export JSON, CSV, Excel, XML, or RSS.

A minimal input is:

{
"artworks": ["103RDF"],
"maxItems": 1
}

Input reference

artworks

Required array with 1–500 strings. Supported forms:

[
"103RDF",
"https://www.getty.edu/art/collection/object/103QZ9",
"00c4d446-cfc0-4893-b13d-5de0a8878fdd"
]

Supported URLs use www.getty.edu or getty.edu in the public /art/collection/object/ route, or the exact official data route https://data.getty.edu/museum/collection/object/<uuid>. Exact UUIDs work too. Unrelated hosts, URL credentials, and UUIDs embedded in junk are rejected. URL queries/fragments are not forwarded. Only successfully exported UUIDs are deduplicated; a later alias can recover an earlier failed fetch.

maxItems

Optional integer from 1 to 500. Omitting this field in raw API input preserves the default of 100; the Console schema default/prefill is 20 (and clients applying schema defaults may send 20). This caps supplied entries processed, before deduplication—not unique output rows—and does not trigger discovery. The whole array must contain 1–500 nonempty strings, even when this limit is smaller. Runtime or charge budgets can stop the batch earlier; inspect SUMMARY.

Output example

A current record has this shape (values shortened for readability):

{
"objectId": "103RDF",
"uuid": "00c4d446-cfc0-4893-b13d-5de0a8878fdd",
"title": "The Triumph of Venus",
"accessionNumber": "78.PA.2",
"creator": "Alessandro Magnasco",
"creatorDetails": "Alessandro Magnasco (Italian, 1667 - 1749)",
"date": "about 1720–1730",
"materials": ["Oil Paint (Paint)", "Canvas (Textile Material)"],
"medium": "Oil on canvas",
"dimensions": ["Unframed: 118.1 × 148.6 cm (46 1/2 × 58 1/2 in.)"],
"department": "Paintings (Curatorial Department)",
"rights": "No Copyright",
"imageUrl": "https://media.getty.edu/iiif/image/.../full/full/0/default.jpg",
"provenance": ["sold to the J. Paul Getty Museum, 1978."],
"bibliography": [{
"text": "<i>An Exhibition of Paintings by Fetti and Magnasco</i>, exh. cat. (London: Artemis Fine Arts, with David Carritt Ltd., 1977), unpaginated, no. 6, ill.",
"documentUrl": "https://data.getty.edu/museum/collection/document/54847b6c-88b7-41fb-89a5-ab8e32803981",
"sequence": 1
}],
"sourceUrl": "https://www.getty.edu/art/collection/object/103RDF",
"apiUrl": "https://data.getty.edu/museum/collection/object/00c4d446-cfc0-4893-b13d-5de0a8878fdd"
}

How much does it cost to extract Getty Museum artworks?

Pay per event consists of a $0.005 start fee plus a per-artwork event. The initial BRONZE rate is $0.001912 per exported artwork, with lower rates on larger Apify plans. For example, excluding platform usage paid separately by the user:

  • 1 artwork: about $0.006912
  • 25 artworks: about $0.0528
  • 100 artworks: about $0.1962

Only useful records pushed to the dataset incur the item event. Invalid identifiers, failed records, and duplicates are not charged as items. Check the Actor pricing tab for the applicable plan tier.

Build recurring cultural-heritage datasets

Use a stable list of Getty IDs as Task input, schedule it weekly or monthly, and export each run to your data warehouse. Keep uuid as the durable join key and scrapedAt as the extraction timestamp. Compare normalized fields between runs to detect source changes in attribution, descriptions, rights, or provenance.

This Actor performs extraction only. Scheduling, notifications, history comparison, and downstream storage are configured through Apify Tasks, schedules, integrations, or your own pipeline.

Legality and responsible use

This is an independent automation-lab tool, not affiliated with or endorsed by Getty. It uses Apify's standard terms and no AI models to extract or generate catalog output.

Getty exposes collection metadata and record-specific rights information, but metadata and images can have different terms. Review rights, metadataLicense, and the canonical sourceUrl before publication or commercial reuse. A public image URL is not by itself a blanket rights grant.

Descriptions may contain authored text with separate terms. Respect Getty's terms, applicable copyright, attribution expectations, rate limits, and laws. Do not use this Actor to misrepresent ownership or rights clearance.

Limits and failure behavior

  • The Actor resolves supplied records only; it does not implement keyword search or whole-catalog crawling.
  • Getty may omit values, and output preserves that uncertainty.
  • Public object URLs require one mapping request before the JSON request; UUIDs need only the JSON request.
  • Transient timeouts/resets, DNS lookup interruptions, HTTP 408/429 and 5xx responses get at most three total attempts per request, with bounded exponential backoff and jitter. Permanent 4xx responses do not retry; redirects are not followed. Requests have at most 30 seconds each, reduced to remaining time.
  • Extraction stops before the smaller of the platform timeout and 300 seconds, reserving 15 seconds for output/summary/cleanup. Retries never get a fresh run budget. A 500-entry list is supported but not guaranteed to finish in one run when Getty is slow; use SUMMARY to resume remaining entries.
  • One invalid source item does not discard valid records in the same batch. Logs identify positions and safe failure codes, not raw supplied identifiers.
  • All-invalid input fails. Partial useful extraction can succeed; SUMMARY makes losses explicit. No new item is written when the known charge budget cannot fit one. A budget stop may legitimately export zero rows.
  • The SDK-supported charge-aware write saves output before charging. Storage/billing failures fail the run and are never retried as bad artwork inputs. These two services are not atomic: a charge failure can leave a stored row. outputStateUncertain flags that case; reconcile the run's actual dataset and charge events before retrying.
  • Image binaries are not downloaded or stored. Existing representation URLs may use Getty's deprecated representation hints; newer shows media are not fetched, and availability/high-resolution completeness is not guaranteed.

Bibliography and batch summary

bibliography contains source-published bibliographic citations only: text preserves Getty's exact text, including embedded HTML, documentUrl is the first published HTTP(S) document reference or null, and sequence is Getty's explicit numeric sequence or null. Treat text as data, not trusted executable HTML. Sequenced entries are sorted ascending within their source slots; unsequenced entries keep source order/position. Missing citations yield []. The Actor never retrieves referenced documents or adds network requests for bibliography.

Open Key-value store → SUMMARY after a batch. It contains supplied, attempted, exported (confirmed write/charge operations), stored (acknowledged stored rows, or null after an uncertain output failure), duplicate, failed, notAttempted, skippedByLimit, stopped, outputStateUncertain, plus request/retry/response-byte counters. supplied = attempted + notAttempted + skippedByLimit; normally attempted = exported + duplicate + failed. On output failure, actual dataset rows may exceed confirmed exported; stored is then null, not a stale zero. Dataset metadata counters can lag writes, so reconcile against settled dataset items and charges. failures is bounded by 500 entries, each with only 1-based input position, code, phase, status, and attempts. No raw inputs, queries or exception bodies are stored there. Validation failures occur before batch work and do not create a summary.

Sanitized diagnostics

Failed operations send sanitized diagnostic input, exceptions and Actor/build/run IDs to our private GlitchTip service for repair. Secret fields and URL queries are removed; this Actor also removes the complete supplied artworks list. Reports are retained for 30 days. Getty receives only the public object/data requests needed for extraction; no supplied queries or credentials are forwarded. No model provider, proxy, or paid data supplier is used. Dataset, input, summary and run-log retention/deletion follow your Apify account's storage settings; delete run storage through Apify when no longer needed. The Actor maintains no cross-run cache.

Integrations and exports

From the default dataset you can:

  • export JSON, JSONL, CSV, Excel, XML, or RSS;
  • send records to Google Sheets through an Apify integration;
  • trigger a webhook after a scheduled refresh;
  • read dataset items from Python, JavaScript, notebooks, or ETL tools;
  • join records across runs by uuid or accessionNumber.

Nested measurements, provenance, and bibliography are richest in JSON exports. Flatten those arrays explicitly when loading CSV into a relational table.

Run through the Apify API

Replace YOUR_TOKEN with an Apify API token.

cURL

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~getty-museum-open-content-scraper/runs?token=YOUR_TOKEN&waitForFinish=120" \
-H "Content-Type: application/json" \
-d '{"artworks":["103RDF"],"maxItems":1}'

JavaScript

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('automation-lab/getty-museum-open-content-scraper').call({
artworks: ['103RDF'],
maxItems: 1,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python

from apify_client import ApifyClient
client = ApifyClient(token="YOUR_TOKEN")
run = client.actor("automation-lab/getty-museum-open-content-scraper").call(
run_input={"artworks": ["103RDF"], "maxItems": 1}
)
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

Use with MCP and AI assistants

Add the Apify MCP server to Claude Code:

claude mcp add --transport http apify \
"https://mcp.apify.com?tools=automation-lab/getty-museum-open-content-scraper"

Claude Desktop, Cursor, and VS Code setup

Desktop/editor configuration:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=automation-lab/getty-museum-open-content-scraper"
}
}
}

Example prompts:

  • “Export the Getty record for object 103RDF and summarize its rights and provenance.”
  • “Normalize these Getty collection URLs, then list accession numbers, creators, dates, and IIIF manifests.”

Troubleshooting

Why did my run fail with no records? Verify that each value is a current Getty Museum collection ID, supported collection URL, or 36-character collection UUID. Use the safe failure code and 1-based position in SUMMARY to locate unresolved entries in your own input.

Why is a field empty? Getty's Linked Open Data record may not publish it. Use apiUrl and sourceUrl to inspect the source record.

Why is an image absent? Not every catalog record exposes a representation. The Actor does not substitute unrelated media.

Why did two inputs produce one row? They resolved to the same collection UUID and were intentionally deduplicated.

FAQ

Does this scrape Getty Images? No. This Actor targets the J. Paul Getty Museum collection on getty.edu, not the Getty Images commercial service.

Can it search for an artist? No. Supply known artwork URLs or IDs. This narrow contract keeps runs deterministic and suitable for recurring enrichment.

Does it download high-resolution images? No. It exports public Getty IIIF image and manifest references without paying transfer cost for unwanted files.

Do I need a proxy? No. The current official public routes work through direct HTTP.

Can I process the same list repeatedly? Yes. Stable identifiers and source URLs make the output suitable for scheduled refreshes and change detection downstream.

This Actor is intentionally standalone within the current automation-lab portfolio: no existing Actor targets another museum collection with an equivalent identity-and-provenance contract. Use Apify dataset exports and integrations to combine its results with your other cultural-heritage sources.

Support

When reporting a problem, include the run link and a non-sensitive example identifier. Do not include API tokens. Getty can change its public data model; a concrete failed record helps distinguish a source omission from a parser regression.