Christie's Lot & Auction Scraper
Pricing
from $3.00 / 1,000 results
Christie's Lot & Auction Scraper
Scrape Christie's - one of the world's leading auction houses. Search lots by keyword, browse by department, list upcoming sales from the auction calendar, and fetch lot detail pages by URL - with artist, title, description, estimates, price realized, sale info, images, provenance, and literature.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Crawler Bros
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Share
Scrape Christie's — one of the world's leading auction houses, with sales of fine art, jewellery, watches, wine, design, and collectibles in New York, London, Paris, Geneva, Hong Kong, and beyond. Search lots by keyword, browse lots by department, list upcoming sales from the auction calendar, or fetch full lot detail pages by URL — with artist, title, description, estimates, price realized, sale dates, lot numbers, images, provenance, and literature. Pure HTTP, no login, no proxy required.
What this actor does
- Four modes:
search,browseByDepartment,upcomingSales,byUrl - Full lot records: artist, title, catalogue description, estimates, price realized, sale info
- Lot detail sections: description, provenance, literature, and exhibition history when fetched by URL
- Image URLs: primary image plus all gallery images from the lot page
- Auction calendar: upcoming sales with dates, locations, types, and landing URLs
- Filters: sale-date range, contains-keyword
- Empty fields are omitted
Data source
Lot search data is served by Christie's public search API (apim.christies.com/lots); browse, calendar, and lot-detail data are read from Christie's public website pages (www.christies.com), which embed structured JSON for each lot and sale. No authentication, cookies, or paid infrastructure is used. This is a third-party actor — it is not affiliated with Christie's.
Output per lot (mode = search / browseByDepartment)
lotId— sale-qualified lot id (e.g.7404.11)objectIdDotCom,objectIdOnline— Christie's object identifiersartist— artist / maker name (primary title)title— lot title (secondary title)description— catalogue entry textprovenance— provenance textpreLotText— pre-lot property notes (e.g. "PROPERTY FROM A PRIVATE COLLECTION")estimateLow,estimateHigh,estimateCurrency— estimate range and currencyestimateLowUsd,estimateHighUsd,priceRealisedUsd— USD-converted values when publishedpriceRealised,priceCurrency— realized price and currency (when sold)lotType—Live/OnlineauctionId— the sale's auction numberwithdrawn,referDepartment— flagssaleId,saleNumber,saleRoomCode,saleType— sale identifiersimageUrl,imageUrls[],imageAlt— lot images (absolute CDN URLs, incl. private-sale images)livingColors[]— dominant colour palette (hex / weight / rank / rgb) when the API publishes it (common on watch lots, sparse elsewhere)sourceUrl,recordType: "lot",scrapedAt
Output per lot (mode = byUrl — full detail)
Everything from the listing record plus:
lotNumber— lot number within the salelotUrl,titleTertiary— page URL and tertiary title lineestimateText,priceRealisedText— human-readable estimate / realized priceestimateOnRequest,priceOnRequest,isUnsold— flagssaleTitle,saleLocation,saleStartDate,saleEndDate,registrationCloseDate,timeZonepreviousLotUrl,nextLotUrl— navigation within the saledetails,provenance,literature,exhibited,specialNotice,saleRoomNotice— full detail-page sections when published
Output per lot (mode = browseByDepartment — listing tiles)
objectId,lotNumber,artist,title,titleTertiary,descriptionestimateText,estimateOnRequest,priceOnRequest,estimateVisible,priceRealisedText,currentBidTextsaleStartDate,saleEndDate,saleId,saleType,saleLocationwithdrawn,isAuctionOver,isInProgress,eventTypeimageUrl,imageAlt— incl. private-sale images served fromapim.christies.comsourceUrl,recordType: "lot",scrapedAt
Output per sale (mode = upcomingSales)
eventId,saleTitle,saleSubtitle,eventType— sale identitydateDisplay,startDate,endDate— sale dateslocation— sale city/countrystatus,cta,saleTotal— calendar metadataisActive,isInProgress,isLive,isOnView— flagsonViewText,viewingLocations[]— public viewing details when publishedimageUrl,imageUrls[],sourceUrl,recordType: "sale",scrapedAt
Input
| Field | Type | Default | Description |
|---|---|---|---|
mode | string | search | search / browseByDepartment / upcomingSales / byUrl |
searchQuery | string | monet | Free-text keyword (mode=search) |
department | string | jewellery | Department slug (mode=browseByDepartment) |
lotUrls | array | – | Lot detail URLs (mode=byUrl) |
lotIds | array | – | Numeric lot IDs (mode=byUrl) |
dateRangeFrom | string | – | Keep records whose sale starts ≥ this ISO date |
dateRangeTo | string | – | Keep records whose sale starts ≤ this ISO date |
containsKeyword | string | – | Keep records whose artist/title/description/sale name contains this substring |
includeLotDetail | bool | false | Fetch detail pages for search results (slower) |
maxItems | int | 50 | Hard cap on emitted records (1–1000) |
proxyConfiguration | object | off | Optional Apify proxy, engaged only if blocked |
Example: search lots by keyword
{"mode": "search","searchQuery": "monet","maxItems": 20}
Example: browse a department
{"mode": "browseByDepartment","department": "jewellery","maxItems": 20}
Example: upcoming sales
{"mode": "upcomingSales","maxItems": 30}
Example: fetch lots by URL
{"mode": "byUrl","lotUrls": ["https://www.christies.com/en/lot/lot-6452945"]}
Example: keyword search with detail enrichment and date filter
{"mode": "search","searchQuery": "picasso","includeLotDetail": true,"dateRangeFrom": "2020-01-01","maxItems": 10}
Limitations
- No online-only lots by URL — online-only lots live on a separate platform (
onlineonly.christies.com) whose pages don't expose the same structured data.byUrlaccepts main-site lot URLs and numeric lot IDs. Online lots still appear insearchandbrowseByDepartmentwith listing-level fields. - No past-sale result totals — per-sale result aggregates for past auctions are not exposed by the endpoints used; the search index does include past lots with their realized prices.
- Placeholder dates dropped — Christie's marks some historical sales with a placeholder date (
0001-01-01); the actor drops these instead of emitting sentinel values. priceRealisedonly for sold lots — unsold, withdrawn, or still-open lots omit the realized price; estimate-on-request lots omit the numeric estimate range.- Listing vs. detail depth —
searchandbrowseByDepartmentemit listing-level records; full detail sections (provenance, literature, exhibited) requireincludeLotDetail: trueor modebyUrl.
Use cases
- Art market research — track estimates and realized prices for artists across sales
- Price benchmarking — compare auction results by artist, department, and sale date
- Collector intelligence — monitor what's being offered in specific departments
- Watch lists — identify lots by artist or keyword ahead of upcoming sales
- Auction calendar feeds — power dashboards with upcoming sale schedules
- Due diligence — collect provenance and literature for lots of interest
FAQ
What is the data source? Search results come from Christie's public search API; browse, calendar, and lot-detail data come from Christie's public website. This is a third-party actor using public endpoints — it is not affiliated with Christie's.
Is a proxy or login required? No. All endpoints used are public and work with plain HTTP requests. An optional proxy is available as a fallback if the source starts blocking requests.
What does browseByDepartment return? It uses Christie's department filter on the public lot-browse page and returns the lots currently listed for that department (mostly private-sale and online-auction lots, matching what the department's browse view shows).
Why are some lots missing priceRealised? Only sold lots have a realized price; unsold, withdrawn, or still-open lots omit it. Estimate-on-request lots omit the numeric range.
How fresh is the data? Search results mirror the live search index; the calendar reflects the currently published upcoming-sale schedule.
What does includeLotDetail do? When enabled, every search-result lot is enriched by fetching its detail page — adding provenance, literature, exhibition history, and extra images. This is slower (one extra request per lot) and is off by default.
What date formats are accepted for dateRangeFrom / dateRangeTo? ISO YYYY-MM-DD (e.g. 2026-01-01). The comparison uses each lot/sale's sale start date at day granularity.
Do image URLs work outside the site? Yes — the image URLs point at Christie's public image CDN and load without any special headers or referer.
Can I scrape auction results / past sales? This actor covers current lot search, department browse, upcoming sales, and lot detail. Past-sale result totals are not exposed; the search index does include past lots with their realized prices.
Can I fetch online-only lots by URL? Online-only lots live on a separate platform (onlineonly.christies.com) whose pages don't expose the same structured data. byUrl accepts main-site lot URLs and numeric lot IDs; online-only URLs are not supported. Online lots still appear in search and browseByDepartment with listing-level fields.
Why are some sale dates missing? Christie's marks some historical sales with a placeholder date (0001-01-01). The actor drops such placeholder dates instead of emitting them, so records never contain sentinel values.
What if my search returns nothing? Try a broader keyword or fewer filters. Zero results is reported in the run's status message and the run still succeeds.