Artfinder.com Artist & Artwork Scraper
Pricing
from $5.00 / 1,000 results
Artfinder.com Artist & Artwork Scraper
Artfinder.com artist and artwork scraper with real per-artist rollup stats, a sold-artworks filter, and built-in delta mode.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Artsiom Kunitsyn
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
21 hours ago
Last modified
Categories
Share
artfinder-scraper
Scrapes both artworks and artist profiles from Artfinder.com, including per-artist rollup stats (total/sold artworks, average price, medium mix) computed from the artist's full catalog โ not a sample.
Contents
- Key features
- Output
- Input
- Input examples
- Incremental (delta) mode
- How to scrape Artfinder.com
- Known gaps
- You might also like
- FAQ
๐ Key features
- Two entity types, one Actor. Set
entityTypetoartworksorartistsโ same design as this Actor's siblings for SaatchiArt.com and Artmajeur.com. - Real per-artist rollup stats, not a sample. Total/sold artwork counts and average price are computed from an artist's entire catalog, paginated to completion โ confirmed to include sold items, not just currently-for-sale ones.
minSoldArtworksfilter. Only push artists with at least N sold artworks โ skip the majority who've never sold anything, without paying for rows you'd throw away.- Delta mode built in. Every run classifies each item as
new,changed,unchanged, ordelistedagainst a persisted baseline. - Exhaustive when you ask for it. A plain run (no
startUrls) covers the whole site โ the full artist directory (~3,785 artists as of this build) or the full artwork catalog (~144,000 products across 3 sitemap shards).maxItemsdefaults to 50 (a fast preview) โ clear it or raise it for a real full run.
๐ 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": "artfinder","entity_type": "artworks","external_id": "2312900","url": "https://www.artfinder.com/product/east-meets-west-c3fc7/","title": "East Meets West","artist_name": "Teresa Pereira","artist_url": "https://www.artfinder.com/artist/teresa-pereira/","category": "Oil painting","style": "Photorealistic","materials": "oil","price": 999.0,"currency": "USD","availability_status": "avail","width_cm": 71.12,"height_cm": 55.88,"change_type": "new"}
Example artist record:
{"source": "artfinder","entity_type": "artists","external_id": "97906","url": "https://www.artfinder.com/artist/olgali/","name": "Olga Li","country": "Italy","followers_total": 194,"total_artworks": 103,"sold_artworks": 5,"avg_price_eur": 287.4,"mediums": "Collage, Mixed media","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.
โ๏ธ Input
See .actor/input_schema.json for the full JSON schema.
| Parameter | Type | Default | Description |
|---|---|---|---|
entityType | String | artworks | artworks or artists. |
startUrls | Array of strings | (none) | Specific artist or product URLs to scrape directly, instead of discovering via the artist-search API or the product sitemap. A startUrls-scoped run cannot detect delistings or update the incremental baseline, and for entityType=artists it skips the artist-search pass, so country isn't populated for that scope (see Known gaps). |
maxItems | Integer | 50 | Stop after pushing this many dataset items. Defaults to a fast, cheap preview. A full run covers the entire site โ raise this or clear it for that. |
minSoldArtworks | Integer | 0 | Artists only. Only push artist records with at least this many sold artworks (the sold_artworks rollup field) โ set to 1 to skip artists who've never sold anything. Artists are still fully tracked internally either way (delta baseline, delisted-detection); this only filters what's pushed to the dataset. |
mode | String | auto | auto (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 run (no startUrls) can detect delistings or update the baseline. |
proxyConfiguration | Object | {"useApifyProxy": false} | Apify Proxy config. Off by default โ this Actor's default (a plain browser User-Agent header, no TLS impersonation) worked cleanly from every network tested while building it. |
๐งช Input examples
Full artwork catalog scan (exhaustive, slow โ every artwork's own page is fetched;
maxItems: null explicitly overrides the 50-item default):
{ "entityType": "artworks", "maxItems": null }
Full artist directory, with rollup stats:
{ "entityType": "artists", "maxItems": null }
Artists with at least one sold artwork only (skips the majority of artists who've never sold โ useful if you only care about active sellers):
{ "entityType": "artists", "minSoldArtworks": 1, "maxItems": null }
Scheduled tracking run โ only new/changed/delisted items since the last baseline:
{ "entityType": "artists", "mode": "incremental" }
๐ Incremental (delta) mode
Every run classifies each item as new, changed (price/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.
mode: auto(default) โ first run for a scope pushes everything (full); later runs push onlynew/changed/delisted(incremental).- A
startUrls-scoped run is always partial and never updates the baseline.
Full design: ../../docs/incremental-mode.md.
๐ How to scrape Artfinder.com
- Open the Artfinder Artist & Artwork Scraper in Apify Console and go to the Input tab.
- Pick
entityType(artworksorartists). maxItemsdefaults to 50 (a quick preview) โ raise it or clear it (set tonull) for a full, uncapped run.- For
entityType: artists, optionally setminSoldArtworksto only get artists who've sold something. - Click Start.
- When the run finishes, browse results in the Output tab, or download as JSON/CSV/Excel, or fetch them via the API.
- 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.
Known gaps
countryisn't populated for astartUrls-scoped artists run. The full field set (name, country, URL) comes from the artist-search discovery pass, which astartUrls-scoped run skips entirely โ the artist's identity is instead recovered from their own artwork records (which do carry name, but not country). Not populated in that scope only, not a bug.- No
joined_date, social links, or bio. Those only exist on an artist's own profile page, a second per-artist request this Actor deliberately doesn't make (seesrc/artfinder.py's module docstring) since they weren't needed for the fields this Actor was built to report. Worth revisiting if a customer needs them. - No
latest_artwork_*fields, unlike this Actor's SaatchiArt/Artmajeur siblings โ the rollup data source has no reliable timestamp to determine "latest" from (only anis_newboolean, and an unconfirmed default sort order), so this Actor doesn't report an unverified guess. avg_price_eur/sold_avg_price_eurare converted display prices, not each artwork's real native currency โ the per-artist rollup endpoint doesn't expose a native-currency marker the way the artwork detail page does (which is whyartworksrecords report realprice+currencyinstead).
๐ You might also like
- SaatchiArt Artist & Artwork Scraper โ the same entity-type/rollup-stats design pointed at a first, independent art marketplace.
- Artmajeur Artist & Artwork Scraper โ a second independent art marketplace source, same design.
- Artsper Artist & Artwork Scraper โ a third, independent art marketplace source, same design.
โ FAQ
Is it legal to scrape Artfinder.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 artists who've sold something? Set minSoldArtworks: 1 โ see
Input examples.
How do I get only new/changed items? Use mode: auto (or incremental) on a schedule โ see
Incremental mode.
Search keywords
artfinder scraper, artfinder.com scraper, art marketplace scraper, artist data scraper, artwork data scraper, art price data, art market analytics, art collector data feed