Artprice.com Artist & Artwork Scraper avatar

Artprice.com Artist & Artwork Scraper

Pricing

from $5.00 / 1,000 results

Go to Apify Store
Artprice.com Artist & Artwork Scraper

Artprice.com Artist & Artwork Scraper

Scrape Artprice.com's marketplace artworks and artist directory with real per-artist rollup stats and built-in delta mode. No login required.

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

artprice-scraper

Scrapes both current marketplace artworks and artist profiles from Artprice.com, the world's largest art-market database โ€” via the site's own public, unauthenticated JSON APIs. No login, no HTML scraping.

Contents

๐Ÿ”‘ Key features

  • Two entity types, one Actor. Set entityType to artworks or artists.
  • No detail-page fetch at all. Artprice's own public marketplace/artist-search APIs already return every field this Actor emits โ€” no separate "discover a URL, then fetch its detail page" step.
  • Fast, concurrent fetching. Both marketplace pages and per-artist rollups are fetched in parallel (concurrency input, default 20) โ€” validated live against Artprice's own endpoints with zero blocking at concurrency up to 40 (~46 req/s in testing).
  • Real per-artist rollup stats. entityType: "artists" computes total_artworks, avg_price_eur, and mediums from an artist's complete current marketplace listing.
  • Multi-currency pricing. Every artwork carries its price in all 6 currencies the site itself reports (EUR, USD, GBP, CNY, BTC, ETH) โ€” price/currency is the listing's own native pair, price_eur/price_usd/etc. give every conversion without you having to do it yourself.
  • Full artwork detail for specific artists. Set artistIds on entityType: "artworks" to fetch every current listing for exactly those artists instead of the full site-wide catalog. Pair with an entityType: "artists" run to first collect the artist ids you want.
  • 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.
  • maxItems defaults to 50 โ€” a fast preview, and what keeps an unconfigured run within Apify's automated 5-minute QA check. Clear it (null) for a full crawl of the catalog (~70,000 artworks or the full ~916,000-artist directory as of this build).

๐Ÿ“‹ 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": "artprice",
"entity_type": "artworks",
"external_id": "2993521",
"url": "https://www.artprice.com/marketplace/2993521?category=&title=bouquet-a-la-pomme-a-r-306",
"title": "Bouquet a la pomme (A. R. 306)",
"artist_id": 22796,
"artist_name": "Pablo PICASSO",
"artist_url": "https://www.artprice.com/artist/22796",
"price": 7500,
"currency": "eur",
"price_eur": 7500,
"price_usd": 8690,
"price_gbp": 6418,
"price_cny": 58397,
"price_btc": 0.1117,
"price_eth": 3.5612,
"dealer_name": "PMGALLERY",
"dealer_url": "https://www.artprice.com/store/PMGALLERY",
"category": "Ceramics - Glass",
"material": "Ceramic",
"condition": "excellent",
"year": 1956,
"width_cm": 25.5,
"height_cm": 26.0,
"length_cm": 3.0,
"has_certificate": true,
"has_signature": false,
"has_bill": false,
"description": "Pablo Picasso (1881-1973), Bouquet a la pomme(A.R.306) Unglazed ceramic Signed on the reverse. Diameter: 26x 25.5 cm. Provenance: Private Collection, Israel",
"image_url": "https://imgprivate2.artprice.com/get/classifieds/.../450/450/....jpg",
"full_image_url": "https://imgprivate2.artprice.com/get/classifieds/.../1024/1024/....jpg",
"change_type": "new"
}

Example artist record:

{
"source": "artprice",
"entity_type": "artists",
"external_id": "22796",
"url": "https://www.artprice.com/artist/22796/pablo-picasso?cl=en",
"name": "Pablo PICASSO",
"birth_year": 1881,
"death_year": 1973,
"is_blue_chip": true,
"total_artworks": 404,
"avg_price_eur": 6793.01,
"mediums": "Ceramics - Glass",
"change_type": "new"
}

๐Ÿ”ง Input

FieldTypeDefaultDescription
entityTypestringartworksartworks or artists.
artistIdsarrayโ€”artworks only. List of Artprice artist ids โ€” fetches every current listing for exactly those artists instead of the full catalog. Not supported for entityType: "artists" (no id-based artist lookup exists on this site โ€” see FAQ).
maxItemsinteger50Stop after pushing this many items. Set to null for a full crawl.
modestringautoauto / full / incremental โ€” see Incremental mode.
concurrencyinteger20How many requests (marketplace pages, or per-artist rollup fetches) to run in parallel.
impersonatestringchromecurl_cffi TLS-impersonation target โ€” not required (bare requests work fine), kept for consistency.
proxyConfigurationobjectoffApify Proxy config โ€” not needed; no anti-bot friction found.

๐Ÿ“ฅ Input examples

Default preview (50 artworks):

{ "entityType": "artworks" }

Full artist directory:

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

Full artwork detail for specific artists:

{ "entityType": "artworks", "artistIds": ["22796"], "maxItems": null }

๐Ÿ” Incremental (delta) mode

auto mode does a full scan the first time it runs for a given entityType/scope combination, then only pushes new/changed items on later runs โ€” cutting cost on repeat runs by not re-charging for items that haven't changed. Only an uncapped run (no maxItems limit reached, and no page errors) can detect delistings or update the baseline.

๐ŸŒ How to scrape Artprice.com

Artprice's frontend calls its own public JSON APIs directly (artist_search, marketplace) โ€” this Actor replicates exactly those calls, the same requests your own browser makes when you browse the site, just automated and exhaustive. Historical/realized auction prices are a separate, paywalled product on this site and are not covered by this Actor โ€” see the FAQ below.

๐Ÿ”— You might also like

โ“ FAQ

Does this Actor give me historical/realized auction prices? No. Artprice's core product โ€” its "Cote" historical auction-price index โ€” sits behind both a paywall and a JS-based bot-check challenge on every page that would show it. This Actor covers what is genuinely public: the artist directory and current marketplace (dealer/gallery for-sale) listings, via Artprice's own open JSON APIs.

Can I get full detail on a specific artist's artworks by id? Yes for entityType: "artworks" โ€” set artistIds. Not for entityType: "artists": there is no id-based artist lookup API on this site (only name-based search), so a specific artist's base record (name/dates/image) can't be re-fetched by id alone; only a fresh rollup can. Run entityType: "artists" unscoped/with maxItems instead to (re)discover artist records.

Does total_artworks on an artist record include sold pieces? No โ€” it's the count of that artist's current marketplace listings. Sold-item data isn't exposed by this site's public API (a real, checked finding, not a guess โ€” see the Actor's build docs).

Does this need a proxy? No โ€” no anti-bot friction was found anywhere on the JSON APIs this Actor uses.