Riseart.com Artist & Artwork Scraper
Pricing
from $5.00 / 1,000 results
Riseart.com Artist & Artwork Scraper
Scrape Riseart.com artworks and artist profiles via the site's own public GraphQL search API, with built-in delta mode. No login required.
Pricing
from $5.00 / 1,000 results
Rating
0.0
(0)
Developer
Artsiom Kunitsyn
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
7 hours ago
Last modified
Categories
Share
riseart-scraper
Scrapes both artworks and artist profiles from Riseart.com, a UK-based online art marketplace โ via the site's own public GraphQL search API, no HTML scraping or sitemap walking needed.
Contents
- Key features
- Output
- Input
- Input examples
- Incremental (delta) mode
- How to scrape Riseart.com
- You might also like
- FAQ
๐ Key features
- Two entity types, one Actor. Set
entityTypetoartworksorartists. - No detail-page fetch at all. Riseart's own public
searchArt/searchArtistsGraphQL queries already return every field this Actor emits, up to 100 items per request โ there's no separate "discover a URL, then fetch its detail page" step like most scrapers need. - Fast, concurrent pagination. Search-result pages are fetched in parallel (
concurrencyinput, default 20) โ validated live against Riseart's own endpoint with zero blocking at concurrency up to 50. A full, uncapped crawl of every artist (~1,625) finishes in under 5 seconds. - Multi-currency. The
storeinput picks which of Riseart's three regional stores prices are read from โeu(EUR),uk(GBP), orus(USD). - Delta mode built in. Every run classifies each item as
new,changed,unchanged, ordelistedagainst a persisted baseline โ pay for what changed, not a full re-scrape every time. maxItemsdefaults 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 (~48,800 artworks or ~1,625 artists as of this build).- Real per-artist rollup stats.
entityType: "artists"fetches each artist's complete artwork list (a real per-artist fetch, not a sample, sold pieces included) to computetotal_artworks,avg_price,for_sale_artworks,enquire_only_artworks, andsold_artworks. AminSoldArtworksinput filters what gets pushed down to artists with at least that many sales. - Full artwork detail for specific artists, sold pieces included. Set
artistIdsonentityType: "artworks"to fetch every artwork for exactly those artists instead of the general catalog โ the only way to get sold artworks with full detail (title, images, dimensions, price, medium/style/subject), since the general catalog never returns sold items at all. See How to scrape Riseart.com for the two-run workflow this enables.
๐ 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": "riseart","entity_type": "artworks","external_id": "192404","url": "https://www.riseart.com/art/192404/whispering-tides-by-paul-bennett","title": "Whispering Tides","artist_id": 2054,"artist_name": "Paul Bennett","artist_alias": "paulbennett","artist_url": "https://www.riseart.com/artist/2054/paulbennett","price": 2755,"currency": "EUR","can_buy": true,"can_rent": false,"sold": false,"stock": 1,"medium": "paintings","style": "abstract","subject": "landscapes","width_cm": 80,"height_cm": 80,"depth_cm": 4,"unit": "CENTIMETER","image_url": "https://d1ee3oaj5b5ueh.cloudfront.net/thumbs/1200x1500_processed_art_2026_08_ac409a7f-d3df-4d1c-b657-906ffe16be78-main-square.jpg","change_type": "new"}
Example artist record:
{"source": "riseart","entity_type": "artists","external_id": "131449","url": "https://www.riseart.com/artist/131449/carolin-kreutzer","name": "Carolin Kreutzer","alias": "carolin-kreutzer","gender": "F","website": "https://carolinkreutzer.de","score": 549,"commissions": true,"birth_year": 1981,"birth_city": "Hamburg","birth_country": "DE","lives_city": "Stuttgart","lives_country": "DE","ships_country": "DE","mediums": ["painters"],"total_artworks": 35,"avg_price": 1894.43,"currency": "EUR","for_sale_artworks": 30,"enquire_only_artworks": 0,"sold_artworks": 5,"change_type": "new"}
๐ง Input
| Field | Type | Default | Description |
|---|---|---|---|
entityType | string | artworks | artworks or artists. |
store | string | eu | Currency/region for artwork prices: eu (EUR), uk (GBP), us (USD). Ignored for artists. |
sort | string | featured | Passed through to Riseart's own search API. Only affects discovery order, not coverage. |
rankingCountry | string | โ | Optional 2-letter country code affecting search ranking only. |
artistIds | array | โ | artworks only. List of Riseart artist ids โ fetches every artwork for exactly those artists (sold pieces included) instead of the general catalog. See How to scrape Riseart.com. |
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 | 20 | How many result pages (100 items each) to fetch in parallel. |
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, EUR):
{ "entityType": "artworks" }
Full artist directory:
{ "entityType": "artists", "maxItems": null }
Artworks priced in GBP:
{ "entityType": "artworks", "store": "uk", "maxItems": null }
Every artist with at least one sale, plus full detail on all their artworks (two runs):
{ "entityType": "artists", "minSoldArtworks": 1, "maxItems": null }
Take the external_id of every artist record this returns, then:
{ "entityType": "artworks", "artistIds": ["120264", "118510", "131529"], "maxItems": null }
The second run returns every artwork (sold and unsold) for exactly those artists, with the same full
detail as a regular artworks run plus a real sold flag โ something the general artworks catalog
can't give you, since it never returns sold items at all.
๐ Incremental (delta) mode
auto mode does a full scan the first time it runs for a given entityType/store 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 Riseart.com
Riseart's frontend calls its own public GraphQL API directly (https://graphql.riseart.com) โ this
Actor replicates exactly those calls (searchArt/searchArtists), the same requests your own
browser makes when you browse the site, just automated and exhaustive.
๐ You might also like
- SaatchiArt Artist & Artwork Scraper โ the same entity-type design pointed at a first, independent art marketplace, with a real per-artist rollup (avg price, medium mix, sold count) computed from an artist's full catalog.
- Artmajeur Artist & Artwork Scraper โ a second independent art marketplace source, same rollup-stats design.
- Artsper Artist & Artwork Scraper โ a third, independent art marketplace source, same design.
- Artfinder Artist & Artwork Scraper โ a fourth, independent art marketplace source, same design.
- Artsy Artist, Artwork & Gallery Scraper โ a fifth, independent art marketplace source, plus a genuine dealer/gallery angle (real represented-artist rollups per gallery) this collection doesn't otherwise have.
- Bluethumb Artist & Artwork Scraper โ a sixth, independent art marketplace source (Australia's largest), with real per-artist sold/available/total counts read from a single profile-page fetch, no rollup fan-out needed.
- Kunsthaus ARTES Artist & Artwork Scraper โ a seventh, independent art marketplace source (German gallery), with a real four-state availability signal (for sale, price-on-request, reserved, sold) read from the site's own schema.org microdata.
- Ars Mundi Artist & Artwork Scraper โ an eighth, independent art marketplace source (a sibling German gallery running the same underlying platform as Kunsthaus ARTES), also selling jewelry and decorative objects alongside paintings/sculptures.
- Artprice.com Artist & Artwork Scraper โ a ninth, independent art marketplace source, built on Artprice.com's own public unauthenticated JSON APIs (artist directory + current marketplace listings), with real per-artist rollup stats and multi-currency pricing (EUR/USD/GBP/CNY/BTC/ETH) on every artwork.
โ FAQ
Does this Actor tell me how many artworks an artist has sold?
Yes โ sold_artworks on every artist record, computed from that artist's complete artwork list
(sold pieces included). Confirmed live at scale: a 40-artist random sample came back with 1,159
total artworks, 244 sold (21%), across 28/40 artists with at least one sale. Set minSoldArtworks
to only push artists who've sold at least that many pieces. Separately, for_sale_artworks counts
directly-buyable listings and enquire_only_artworks counts price-on-request ones โ a genuine,
different-from-sold distinction (an enquire-only listing is still for sale, just not via direct
checkout).
Can I get full detail (images, price, dimensions) on sold artworks?
Yes, but only via artistIds โ the general entityType: "artworks" catalog never returns sold
items at all (confirmed live: none of a known-sold artist's sold pieces show up in a normal search,
however it's sorted/filtered). Set artistIds to a specific list of artist ids and every artwork for
those artists comes back, sold pieces included with a real sold flag. The usual workflow: run
entityType: "artists" with minSoldArtworks: 1 first to collect the artist ids you care about, then
feed those into an artistIds-scoped artworks run. See Input examples.
Why does the same artwork show a different price across runs if I only changed store?
That's expected โ store selects genuinely different regional pricing (EUR/GBP/USD), not just a
currency conversion, and delta mode scopes its baseline by store for exactly this reason: switching
it starts a fresh baseline rather than reporting every item as "changed".
Does this need a proxy? No โ no anti-bot friction was found anywhere on the endpoint this Actor uses.