ArtBrokerage.com Artist & Artwork Scraper
Pricing
from $5.00 / 1,000 results
ArtBrokerage.com Artist & Artwork Scraper
Scrape ArtBrokerage.com listings and artist profiles, with rich per-listing condition/provenance detail and real buyer-demand signals. No login required.
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
3 days ago
Last modified
Categories
Share
artbrokerage-scraper
Scrapes artist profiles and artwork listings from ArtBrokerage.com, a US-based secondary-market art marketplace โ via the site's own public sitemaps, no login required.
Contents
- Key features
- Output
- Input
- Input examples
- Incremental (delta) mode
- How to scrape ArtBrokerage.com
- FAQ
๐ Key features
- Two entity types, one Actor. Set
entityTypetoartworksorartists. - Rich per-listing detail most marketplace scrapers don't carry: condition, signature details, framing, provenance ("Purchased from" / "Provenance history"), a free-text backstory, and the certificate-of-authenticity source โ genuinely server-rendered on every listing page.
- A real buyer-demand signal. Every artist record includes
collector_wanted_countโ genuine named-collector buy requests for that artist, a field no sibling art-marketplace Actor in this collection has (kept separate frombroker_wanted_count, ArtBrokerage's own generic standing interest, present for nearly every artist and not itself a strong demand signal โ see FAQ). - A genuine for-sale/sold flag on every artwork.
- Delta mode built in. Every run classifies each item as
new,changed,unchanged, ordelistedagainst a persisted baseline. maxItemsdefaults to 50 โ a fast preview, and what keeps an unconfigured run within Apify's automated 5-minute QA check. ArtBrokerage's real catalog is substantial (~40,000 listings, ~5,800 artists) โ clearmaxItems(null) for a 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": "artbrokerage","entity_type": "artworks","external_id": "120261","url": "https://www.artbrokerage.com/Larry-Rivers/Madama-Butterfly-1978-120261","title": "Madama Butterfly 1978","artist_name": "Larry Rivers","artist_url": "https://www.artbrokerage.com/Larry-Rivers","category": "Limited Edition Print","medium": "Mixed Media Work in Eight Colors in Lithography And Three Colors","size_raw": "22.75x30.5 in | 58x77 cm","height_in": 22.75,"width_in": 30.5,"edition": "From the edition of 250","sold": false,"price": 2700.0,"currency": "USD","price_note": "Mixed Media - Blue Chip","year": "1978","condition": "Excellent","purchased_from": "Gallery","provenance": "Circle Gallery, NY","certificate_of_authenticity": "Art Brokerage","art_styles": ["Contemporary"],"art_collections": ["Well Priced", "Blue Chip - Post War - MASTERS"],"change_type": "new"}
Example artist record:
{"source": "artbrokerage","entity_type": "artists","external_id": "Pablo-Picasso","url": "https://www.artbrokerage.com/Pablo-Picasso","name": "Pablo Picasso","location": "Spain","bio": "Art Brokerage: Park West Artist: Pablo Picasso Blue Chip Spanish...","for_sale_count": 151,"recent_sold_count": 16,"broker_wanted_count": 4,"collector_wanted_count": 7,"change_type": "new"}
๐ง Input
| Field | Type | Default | Description |
|---|---|---|---|
entityType | string | artworks | artworks or artists. |
maxItems | integer | 50 | Stop after pushing this many items. Set to null for a full crawl. |
mode | string | auto | auto / full / incremental โ see Incremental mode. |
concurrency | integer | 10 | How many listing/artist pages to fetch in parallel. Automatically capped to 8 for entityType=artists regardless of this value โ see FAQ. |
impersonate | string | chrome | curl_cffi TLS-impersonation target. |
proxyConfiguration | object | off | Apify 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 listing catalog:
{ "entityType": "artworks", "maxItems": null }
๐ Incremental (delta) mode
auto mode does a full scan the first time it runs for a given entityType, then only pushes
new/changed items on later runs. Only an uncapped run (no maxItems limit reached) can detect
delistings, sold-status changes, or price changes, or update the baseline.
๐ How to scrape ArtBrokerage.com
ArtBrokerage has no JSON API of any kind โ this Actor discovers its scope entirely via the site's
own public sitemaps (sitemap-artists.xml, sitemap-listings.xml) and reads each artwork/artist
page's own server-rendered HTML, the same content your browser sees.
โ FAQ
Why is price null on some for-sale (not sold) listings?
Some (typically higher-value) listings show a price tier instead of an exact figure โ the site
displays literal "$$$$$$$" characters with the real range only in a tooltip. This Actor reads that
range into price_min/price_max instead, leaving price null since no single figure exists.
What's the difference between broker_wanted_count and collector_wanted_count?
broker_wanted_count is ArtBrokerage's own standing "we'll help you sell this artist's work"
interest โ present at a low count for nearly every artist checked, including ones with zero
for-sale listings, so it isn't a meaningful demand signal by itself. collector_wanted_count is
genuine named-collector buy requests, confirmed to be entirely absent (not zero) from the page
until at least one real request exists โ this is the field worth watching for real demand.
Does this include realized/historical sale prices?
No. A sold listing on this site shows only a plain "SOLD" tag โ no price. An artist's "Recently
Sold" section is a small, capped preview (also with no price), not a queryable total or archive.
recent_sold_count reflects only what that preview shows, not a true total sold count.
Why is price sometimes accompanied by odd text like "23 Watchers" or "Inquire"?
That's price_note โ ArtBrokerage's own marketing copy next to the price on some listings. It's
kept verbatim (with decorative emoji stripped) since it occasionally carries real signal (a watcher
count, a negotiability hint), but it's free text, not a structured field.
Some size_raw values look implausible (e.g. "1312x1034 in").
A real, confirmed site-side data-entry bug on ArtBrokerage's own pages (a missing decimal point) โ
not a scraping error. The paired cm value is mathematically derived from the same (buggy) inch
value, so it inherits the same error rather than independently confirming it. Passed through as-is.
Does this need a proxy?
No โ no anti-bot friction was found anywhere on this site (plain nginx, no Cloudflare or
equivalent challenge). The origin server is simply slow (several seconds per page even under
concurrency) โ a full uncapped crawl takes hours, which is expected, not a sign of blocking.
Why is entityType=artists capped at concurrency 8 no matter what I set?
A real large-scale test found artist pages are fast/light enough that even moderate concurrency
drives a high sustained request rate, and above roughly 8 concurrent requests that rate reliably
triggers a real HTTP 403 block for the rest of that run (confirmed: concurrency 20 failed within 3
minutes; concurrency 8 ran clean across 4,500+ consecutive real artist pages). This Actor enforces
the safe value automatically rather than exposing a setting that can silently lose half a run's
results.