Christie's Lot & Auction Scraper avatar

Christie's Lot & Auction Scraper

Pricing

from $3.00 / 1,000 results

Go to Apify Store
Christie's Lot & Auction Scraper

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

Crawler Bros

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

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 identifiers
  • artist — artist / maker name (primary title)
  • title — lot title (secondary title)
  • description — catalogue entry text
  • provenance — provenance text
  • preLotText — pre-lot property notes (e.g. "PROPERTY FROM A PRIVATE COLLECTION")
  • estimateLow, estimateHigh, estimateCurrency — estimate range and currency
  • estimateLowUsd, estimateHighUsd, priceRealisedUsd — USD-converted values when published
  • priceRealised, priceCurrency — realized price and currency (when sold)
  • lotTypeLive / Online
  • auctionId — the sale's auction number
  • withdrawn, referDepartment — flags
  • saleId, saleNumber, saleRoomCode, saleType — sale identifiers
  • imageUrl, 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 sale
  • lotUrl, titleTertiary — page URL and tertiary title line
  • estimateText, priceRealisedText — human-readable estimate / realized price
  • estimateOnRequest, priceOnRequest, isUnsold — flags
  • saleTitle, saleLocation, saleStartDate, saleEndDate, registrationCloseDate, timeZone
  • previousLotUrl, nextLotUrl — navigation within the sale
  • details, provenance, literature, exhibited, specialNotice, saleRoomNotice — full detail-page sections when published

Output per lot (mode = browseByDepartment — listing tiles)

  • objectId, lotNumber, artist, title, titleTertiary, description
  • estimateText, estimateOnRequest, priceOnRequest, estimateVisible, priceRealisedText, currentBidText
  • saleStartDate, saleEndDate, saleId, saleType, saleLocation
  • withdrawn, isAuctionOver, isInProgress, eventType
  • imageUrl, imageAlt — incl. private-sale images served from apim.christies.com
  • sourceUrl, recordType: "lot", scrapedAt

Output per sale (mode = upcomingSales)

  • eventId, saleTitle, saleSubtitle, eventType — sale identity
  • dateDisplay, startDate, endDate — sale dates
  • location — sale city/country
  • status, cta, saleTotal — calendar metadata
  • isActive, isInProgress, isLive, isOnView — flags
  • onViewText, viewingLocations[] — public viewing details when published
  • imageUrl, imageUrls[], sourceUrl, recordType: "sale", scrapedAt

Input

FieldTypeDefaultDescription
modestringsearchsearch / browseByDepartment / upcomingSales / byUrl
searchQuerystringmonetFree-text keyword (mode=search)
departmentstringjewelleryDepartment slug (mode=browseByDepartment)
lotUrlsarrayLot detail URLs (mode=byUrl)
lotIdsarrayNumeric lot IDs (mode=byUrl)
dateRangeFromstringKeep records whose sale starts ≥ this ISO date
dateRangeTostringKeep records whose sale starts ≤ this ISO date
containsKeywordstringKeep records whose artist/title/description/sale name contains this substring
includeLotDetailboolfalseFetch detail pages for search results (slower)
maxItemsint50Hard cap on emitted records (1–1000)
proxyConfigurationobjectoffOptional 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. byUrl accepts main-site lot URLs and numeric lot IDs. Online lots still appear in search and browseByDepartment with 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.
  • priceRealised only 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 depthsearch and browseByDepartment emit listing-level records; full detail sections (provenance, literature, exhibited) require includeLotDetail: true or mode byUrl.

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.