Tappan Collective Artist & Artwork Scraper
Pricing
from $5.00 / 1,000 results
Tappan Collective Artist & Artwork Scraper
Scrape TappanCollective.com limited-edition fine-art photography/print products (price range, size/edition/frame variants, artist) and a real artist directory with live product counts, 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
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
tappan-collective-scraper
Scrapes artworks (limited-edition fine-art photography/print products) and a real artist directory from Tappan Collective, a curated contemporary-art marketplace representing emerging artists โ via the site's own real Shopify product data. No login required.
Contents
๐ Key features
- Two entity types, one Actor. Set
entityTypetoartworksorartists. - Every real purchasable size/edition/frame/mount combination, not just one price per artwork โ a single artwork can have dozens of variants (size ร edition ร frame finish ร mount type), each with its own price, pulled from Shopify's own structured variant options (not parsed out of a compound title string).
- A real, exhaustive artist directory with live product counts โ unlike some sibling actors in
this portfolio, Tappan Collective's own
/pages/artistspage is a genuine, complete artist list, soentityType=artistsis a fresh live crawl every run, not an accumulator that only grows asartworksruns happen to see a given artist. - Delta mode built in for
artworksโ every run classifies each item asnew,changed,unchanged, ordelistedagainst a persisted baseline. - Confirmed-dead listings are never re-fetched. A removed artwork returns a plain HTTP 404 โ tracked in a persisted registry so a future run skips it without a wasted request.
maxItemsdefaults to 50 โ a fast, cheap preview, and what keeps an unconfigured run within Apify's automated 5-minute QA check. Clear it (null) for a full crawl (~8,000 artworks, ~133 artists 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.
Example artwork record:
{"source": "tappan-collective","entity_type": "artworks","external_id": "2180501125","url": "https://www.tappancollective.com/products/nathalie","name": "Nathalie","description": "DESCRIPTION 2016 This Exclusive Tappan Edition is an archival photographic art print...","artist_name": "Gia Coppola","product_type": "Photograph","tags": ["gia-coppola", "artist-roster", "collection-California", "..."],"image_urls": ["https://cdn.shopify.com/s/files/..."],"price_min": 275.0,"price_max": 275.0,"currency": "USD","variant_count": 1,"variants": [{"sku": "GC.N_XF_9.45x14","title": "9.45 x 14 inches | Edition of 100 / White / Matted","size_raw": "9.45 x 14 inches","width": 9.45,"height": 14,"unit": "in","edition_type": "Edition","edition_size": 100,"finish": "White","mount_type": "Matted","price": 275.0,"currency": "USD","available": true}],"change_type": "new"}
Example artist record:
{"source": "tappan-collective","entity_type": "artists","external_id": "gia-coppola","url": "https://www.tappancollective.com/collections/gia-coppola","name": "Gia Coppola","tracked_product_count": 44}
๐ง Input
| Field | Type | Default | Description |
|---|---|---|---|
entityType | string | artworks | artworks or artists. |
startUrls | array | โ | Specific artwork product URLs to scrape directly instead of the full sitemap. artworks only. |
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 | 25 | How many product (or artist collection) pages to fetch in parallel. |
impersonate | string | chrome | curl_cffi TLS-impersonation target. |
๐ฅ Input examples
Default preview (50 artworks):
{ "entityType": "artworks" }
Full artwork catalog:
{ "entityType": "artworks", "maxItems": null }
Full artist directory:
{ "entityType": "artists", "maxItems": null }
๐ Incremental (delta) mode
auto mode does a full scan the first time it runs for entityType=artworks, then only pushes
new/changed items on later runs (price_min/price_max/variant_count are the watched fields).
Only an uncapped, unscoped run (no maxItems limit reached, no startUrls, no item errors) can
detect delistings or update the baseline. entityType=artists has no delta mode โ it's a fresh live
directory crawl every run.
โ FAQ
Why is structured data (dimensions, edition) parsed from variant options instead of the product
description or tags?
A real, deliberate choice based on live evidence: this site's own product tags are internal
marketing/SEO labels with no consistent schema, and the description text's own structure varies
product to product (different section labels, sometimes no structure at all). Shopify's own variant
option2/option3 fields cleanly and consistently carry frame finish and mount type across every
product checked; only the combined size+edition string (option1) needs light parsing, handled
defensively โ an unrecognized shape keeps the raw string rather than guessing.
Why can tracked_product_count undercount a very prolific artist?
It's read from Shopify's own /collections/{artist}/products.json?limit=250 endpoint, which caps at
250 products per page. An artist with more than 250 listed works would be undercounted. Given ~8,000
total artworks spread across ~133 artists, this is not expected to bind for any single artist, but
hasn't been exhaustively verified for every one.
Why is entityType=artists slow (~4 minutes for the full directory)?
A real, hard rate limit on the artist-collection endpoint (/collections/{slug}/products.json) that
even a lower concurrency plus retries couldn't clear cleanly. Fixed with fully sequential fetching
plus a 1-second pause between requests, which reliably gets all 133 real artists with 0 errors. This
doesn't affect entityType=artworks, which uses a completely different endpoint with no rate-limit
issue found even at real scale (7,326 products, concurrency 25, 0 errors).
Does this need a proxy? No โ no anti-bot friction was found anywhere on this site while building this Actor (a real burst test came back 100% clean, and a full large-scale run confirmed it holds at real volume).