SaatchiArt.com Artist & Artwork Scraper avatar

SaatchiArt.com Artist & Artwork Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
SaatchiArt.com Artist & Artwork Scraper

SaatchiArt.com Artist & Artwork Scraper

SaatchiArt.com artist & artwork scraper with real per-artist rollup stats (avg price, medium mix, sold count) from each artist's full catalog, plus delta mode.

Pricing

from $5.00 / 1,000 results

Rating

0.0

(0)

Developer

Artsiom Kunitsyn

Artsiom Kunitsyn

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 days ago

Last modified

Categories

Share

saatchiart-scraper

Scrapes both artworks and artist profiles from SaatchiArt.com, including per-artist rollup stats (average price, medium mix, sold count, latest artwork) computed from the artist's full catalog — not a sample.

Contents

🔑 Key features

  • Two entity types, one Actor. Set entityType to artworks or artists — no need for two separate scrapers to build a full picture of an artist and their work.
  • Real per-artist rollup stats, not a sample. Average price, unique medium mix, sold-artwork count, and latest artwork are computed from an artist's entire catalog via a paginated API call, cross-checked to match the artist's own stated artwork total.
  • Delta mode built in. Every run classifies each item as new, changed, unchanged, or delisted against a persisted baseline — pay for what changed, not a full re-scrape every time.
  • Exhaustive when you ask for it. A plain run (no category, no startUrls) crawls the full site sitemap — every artwork, every artist, not a filtered subset. maxItems defaults to 50 (a fast preview, and what keeps an unconfigured run within Apify's automated 5-minute QA check) — clear it or raise it for a real full crawl.
  • Optional cheaper category browse, with narrowing filters. Setting category uses a faster search API instead of the sitemap. On its own it's a bounded preview (the API caps its reported result count at 10,000, and a broad category has far more artworks than that) — but combining it with subject/mediums/styles/country/availability can narrow a query enough to become genuinely exhaustive, and the Actor detects and logs which case you're in (see Input).

📋 Output

One dataset item per artwork or artist, depending on entityType — see .actor/dataset_schema.json for the full field list, or the Output tab's Artworks / Artists views for a readable table.

Example artwork record:

{
"source": "saatchiart",
"entity_type": "artworks",
"external_id": "P1-U476-A11979-T1",
"url": "https://www.saatchiart.com/art/Painting-Dinner-With-Tristan/476/4942/view",
"artwork_title": "Dinner With Tristan",
"artist_name": "Gregg Simpson",
"artist_url": "https://www.saatchiart.com/greggsimpson",
"category": "Painting",
"mediums": "Oil, Other",
"materials": "Canvas",
"price_eur": 12165.0,
"original_status": "avail",
"height_cm": 152.4,
"width_cm": 165.1,
"change_type": "new"
}

Example artist record:

{
"source": "saatchiart",
"entity_type": "artists",
"external_id": "476",
"url": "https://www.saatchiart.com/greggsimpson",
"full_name": "Gregg Simpson",
"country": "Canada",
"followers_total": 1234,
"total_artworks": 315,
"sold_artworks": 42,
"avg_price_eur": 987.5,
"mediums": "Acrylic, Oil, Watercolor",
"latest_artwork_title": "Improvised Inlet",
"change_type": "new"
}

Results can be downloaded as JSON, CSV, or Excel from the Console's Output tab, or pulled via the Apify API/dataset endpoint.

Known gap: uploaded_at is only populated for artworks discovered via the category input (the search-API path carries a timestamp the sitemap detail-page path doesn't expose) — null otherwise.

⚙️ Input

See .actor/input_schema.json for the full JSON schema.

ParameterTypeDefaultDescription
entityTypeStringartworksartworks or artists.
categoryString(none)Artworks only. Restrict discovery to one category via a faster search API instead of the sitemap. The API caps its reported result count at 10,000 regardless of a category's true size — combine with the filters below to narrow enough for complete, delta-trackable coverage; check the run log for "exhaustive" vs "capped". Leave empty for a full, always-exhaustive sitemap crawl.
availabilityStringavailArtworks only, category mode. Narrow by listing status: avail, sold, reserved, unavail, or empty for all. Including more statuses only widens the result count.
subjectString(none)Artworks only, category mode. e.g. floral, landscape, abstract, portrait.
mediumsString(none)Artworks only, category mode. e.g. oil, acrylic, watercolor, black & white.
stylesString(none)Artworks only, category mode. e.g. realism, abstract expressionism, minimalism.
countryString(none)Artworks only, category mode. Artist's country, e.g. united states, sweden.
startUrlsArray of strings(none)Artworks only. Specific artwork URLs to scrape directly, instead of discovering via sitemap or category.
maxItemsInteger50Stop after pushing this many dataset items. Defaults to a fast, cheap preview (also what keeps an unconfigured run within Apify's automated 5-minute QA check). A full crawl covers the entire site (hundreds of thousands of artworks, or the full artist directory) — raise this or clear it for that.
modeStringautoauto (recommended): full scan on the first run, incremental after. full: always push every item and refresh the baseline. incremental: always push only new/changed items. Only a plain, unscoped sitemap crawl can detect delistings or update the baseline.
impersonateStringfirefox (internal)curl_cffi TLS-impersonation target. SaatchiArt blocks plain requests, so this is set internally by default — override only if that stops working.
proxyConfigurationObject{"useApifyProxy": false}Apify Proxy config. Off by default — try residential (not datacenter) proxies only if you start seeing blocks.

🧪 Input examples

Full artwork catalog scan (exhaustive, slow — every artwork's detail page is fetched; maxItems: null explicitly overrides the 50-item default):

{ "entityType": "artworks", "maxItems": null }

Quick category preview (fast, but broad — capped at 10,000 results, not exhaustive; the default run without maxItems set already gives you a 50-item preview):

{ "entityType": "artworks", "category": "photography", "maxItems": 200 }

Narrow category query (fast and exhaustive — narrow enough to drop under the cap):

{ "entityType": "artworks", "category": "photography", "country": "sweden", "subject": "floral", "maxItems": null }

Full artist directory, with rollup stats:

{ "entityType": "artists", "maxItems": null }

Scheduled tracking run — only new/changed/delisted items since the last baseline:

{ "entityType": "artworks", "mode": "incremental" }

🔄 Incremental (delta) mode

Every run classifies each item as new, changed (price or status moved, for artworks; catalog size/sold-count/avg-price moved, for artists), unchanged, or delisted, using a state baseline persisted in a named Apify Key-Value Store scoped to entityType (+ category, for artworks).

  • mode: auto (default) — first run for a scope pushes everything (full); later runs push only new/changed/delisted (incremental).
  • A startUrls-scoped artwork run is always partial and never updates the baseline. A category-scoped run updates the baseline only when it's narrow enough to be exhaustive (see Input) — check the run log to see which case a given run landed in.

Full design: ../../docs/incremental-mode.md.

🚀 How to scrape SaatchiArt.com

  1. Open the SaatchiArt Artist & Artwork Scraper in Apify Console and go to the Input tab.
  2. Pick entityType (artworks or artists).
  3. Optionally set category (artworks only) for a quick, cheaper preview, or leave it empty for the full, exhaustive catalog.
  4. maxItems defaults to 50 (a quick preview) — raise it or clear it (set to null) for a full, uncapped run.
  5. Click Start.
  6. When the run finishes, browse results in the Output tab, or download as JSON/CSV/Excel, or fetch them via the API.
  7. To track over time instead of scraping once: create a Schedule with mode: auto — the first run does a full scan, every run after only bills what actually changed.

🔗 You might also like

  • Artmajeur Artist & Artwork Scraper — the same entity-type/rollup-stats design pointed at a second, independent art marketplace, for expanding artist coverage or cross-referencing the same artist's presence and pricing across platforms.
  • Artsper Artist & Artwork Scraper — a third, independent art marketplace source, same design.

❓ FAQ

Is it legal to scrape SaatchiArt.com? It's legal to collect publicly available marketplace data such as artwork listings, prices, and public artist profile information. Scrape it only with a legitimate purpose under GDPR.

How do I get only new/changed items? Use mode: auto (or incremental) on a schedule — see Incremental mode.

Why is avg_price_eur different from what's shown on the site? It's the artist's own catalog average in SaatchiArt's Central-Europe reference price (EU1C), computed across every artwork — not a single artwork's price.

Search keywords

saatchiart scraper, saatchi art scraper, art marketplace scraper, artist data scraper, artwork data scraper, art price data, art market analytics, saatchiart api, art collector data feed