Skip to content
    ↑↓ to choose · Enter to open

    · 15 min read

    Christie's Lot & Auction Scraper: Up to 1,000 Free Results a Month

    By CrawlerBros Engineering Team

    A thousand results cost $5.00 on the free-plan price, delivering detailed auction data directly to your database. Output details vary by mode: search results yield 31 lot fields, while fetching full detail pages by URL retrieves 22 fields. For upcoming events, the auction calendar mode outputs 22 fields covering dates and locations. This Actor is designed for art investment analysts, valuation professionals, and fine art collectors tracking market activity. It is not for teams trying to scrape catalog-level details from online-only auctions via direct URLs, as those live on a separate subdomain that is not supported by the URL mode.

    Try it: open Christie's Lot & Auction Scraper on Apify, sign in on the free plan and run the prefilled example.

    Can you try Christie's Lot & Auction Scraper before paying?

    Yes. Apify's free plan includes $5.00 of prepaid usage every month and asks for no credit card. At $0.005 per result, that covers up to 1,000 results of Christie's Lot & Auction Scraper a month, before run-start charges and platform usage.

    Christie's Lot & Auction Scraper was last updated on 2026-08-14. It is one of 1,729 Actors CrawlerBros publishes on Apify, which together have 762,160 lifetime public runs and an average rating of 4.63 out of 5 across 416 reviews.

    What does it cost to run Christie's Lot & Auction Scraper?

    Each result costs $0.005 on Apify's free plan, which is $5.00 per 1,000 results. Starting a run is charged separately at $0.005 per GB of Actor memory. Apify also bills the platform usage each run consumes, at the rates of your Apify plan, on top of these charges.

    Apify plan Per result Per 1,000 results
    FREE $0.005 $5.00
    BRONZE $0.00433 $4.33
    SILVER $0.00367 $3.67
    GOLD $0.003 $3.00
    PLATINUM $0.003 $3.00
    DIAMOND $0.003 $3.00

    The includeLotDetail boolean has the largest impact on your bill because it requires the Actor to make an additional HTTP request for every search result. To test your setup cheaply before scaling, disable includeLotDetail and cap maxItems at 5. This lets you inspect the structure of the data without consuming your free plan limits on detail requests.

    How do you run Christie's Lot & Auction Scraper from the API?

    The schema marks 1 of its 11 controls as required: mode. Every value in the payload below comes from the published schema's own prefills, which means you can paste it, swap the token, and get a real result.

    Call the synchronous endpoint to start a run and receive dataset items in one request:

    curl -X POST "https://api.apify.com/v2/acts/crawlerbros~christies-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
      -H "Content-Type: application/json" \
      -d '{"mode":"search"}'
    

    The same run from Python, using the official client:

    from apify_client import ApifyClient
    
    client = ApifyClient("<YOUR_APIFY_TOKEN>")
    
    run_input = {
      "mode": "search"
    }
    
    run = client.actor("crawlerbros~christies-scraper").call(run_input=run_input)
    
    for item in client.dataset(run["defaultDatasetId"]).iterate_items():
        print(item)
    

    And from Node.js:

    import { ApifyClient } from 'apify-client'
    
    const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' })
    
    const input = {
      "mode": "search"
    }
    
    const run = await client.actor('crawlerbros~christies-scraper').call(input)
    const { items } = await client.dataset(run.defaultDatasetId).listItems()
    console.log(items)
    

    That endpoint blocks until the run completes. Fine while you are testing a handful of records, risky once a run takes minutes: a dropped connection loses the response even though the run itself finished. Switch to an asynchronous start with polling or a webhook before you schedule anything.

    Which Christie's Lot & Auction Scraper inputs matter, and which can you skip?

    The mode control determines which public endpoint the scraper queries. For text searches, searchQuery is your primary control, whereas department drives the scraper when browsing active category tiles. Most users should leave the proxy configuration off on a first run since the Actor executes direct HTTP requests.

    • mode (string): What to fetch. Default: "search".
    • searchQuery (string): Free-text keyword matching lot artist, title, or description (mode=search). Default: "monet".
    • department (string): Christie's department whose lots to browse (mode=browseByDepartment). Default: "jewellery".
    • lotUrls (array): Full lot detail URLs, e.g. https://www.christies.com/en/lot/lot-6452945 (mode=byUrl). Default: [].
    • lotIds (array): Numeric lot IDs, e.g. 6452945 (mode=byUrl). Default: [].
    • dateRangeFrom (string): Only keep lots/sales whose auction starts on or after this date (ISO YYYY-MM-DD). Default: "".
    • dateRangeTo (string): Only keep lots/sales whose auction starts on or before this date (ISO YYYY-MM-DD). Default: "".
    • containsKeyword (string): Only keep records whose artist, title, description, or sale name contains this substring (case-insensitive). Default: "".
    • includeLotDetail (boolean): When enabled, the actor fetches each search-result lot's detail page and adds detail fields (description sections, provenance, literature, exhibited). Slower; disabled by default (mode=search). Default: false.
    • maxItems (integer): Hard cap on emitted records. Default: 50.
    • proxyConfiguration (object): Optional Apify proxy. The actor first tries a direct connection and only engages the proxy if the source blocks the request. Default: {"useApifyProxy":false}.

    Fixed-choice controls: mode accepts search (Search lots (keyword)), browseByDepartment (Browse lots by department), upcomingSales (auction calendar), byUrl (Fetch lots by URL or lot ID); department accepts 63 values (default jewellery), including jewellery, 19th-century-european-art (19th Century European Art), 19th-century-furniture-and-works-of-art (19th Century Furniture & Works of Art), african-and-oceanic-art (African and Oceanic Art).

    What does Christie's Lot & Auction Scraper return?

    The returned records are perfect for building valuation models, monitoring upcoming auction inventories, and capturing provenance histories. They conspicuously do not contain past-sale result totals or catalog-level fields for online-only auction pages. If you need registration databases or buyer contact details, this tool is not suitable as it only extracts public lot information.

    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)
    • lotType - Live / 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)

    • 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

    These are the documented fields. Optional ones can be empty on a given record, so measure how often each field your deliverable depends on is populated across a real sample before automating the handoff.

    How do you build the workflow end to end?

    Open Christie's Lot & Auction Scraper and work through these in order. Each step ends with something to check, so a bad configuration surfaces on a small run rather than a scheduled one.

    1. Select your run strategy by configuring the mode control to search, browseByDepartment, upcomingSales, or byUrl.
    2. Input a targeted keyword into searchQuery like "picasso" to filter the active index.
    3. Decide if you require catalog-level history and toggle includeLotDetail to true if you need provenance, literature, and extra images.
    4. Establish a budget guardrail by setting the maxItems integer control to protect your platform usage and result counts.
    5. Refine your target window by adding dateRangeFrom and dateRangeTo using strict ISO YYYY-MM-DD formatting.
    6. Apply a containsKeyword filter to ensure the Actor only outputs records containing specific artist or description text.
    7. Verify your settings by executing a test run with a low maxItems value and inspecting the resulting dataset.

    How do you apply it? Three worked playbooks

    These are Christie's Lot & Auction Scraper's own documented use cases, each worked through as an operating pattern rather than a description.

    Use case 1: Art market research

    Outcome: Track estimates and realized prices for artists across sales

    Configure: Set mode to "search", searchQuery to "monet", includeLotDetail to true, and maxItems to 50.

    Working method: Execute the search to extract both listing-level and deep catalog data for the target artist. Map the priceRealisedUsd against the estimateLowUsd and estimateHighUsd fields. Calculate the percentage variance between the low estimates and realized prices to establish valuation trends.

    Deliverable: A dataset of past auction lots including artist name, estimates, final realized prices, and full provenance sections.

    Stop condition: The returned records show missing priceRealised and priceRealisedUsd fields across historical auction dates.

    Use case 2: Price benchmarking

    Outcome: Compare auction results by artist, department, and sale date

    Configure: Set mode to "browseByDepartment", department to "jewellery", dateRangeFrom to "2026-01-01", and maxItems to 100.

    Working method: Run the Actor for your designated department slug to pull active seasonal listings. Group the extracted items by their saleStartDate to establish historical quarters. Compare priceRealisedText across similar items to build price benchmarks.

    Deliverable: A spreadsheet categorized by sale date, containing department-specific items with their estimates and realized prices.

    Stop condition: The dataset returns empty results even though active sales are visible on the main website department page.

    Use case 3: Watch lists

    Outcome: Identify lots by artist or keyword ahead of upcoming sales

    Configure: Set mode to "upcomingSales", containsKeyword to "diamond", and maxItems to 30.

    Working method: Query the upcoming calendar to pull scheduled auctions. Filter the output records using containsKeyword to pinpoint target lots before bidding commences. Extract viewing locations and registration dates for follow-up.

    Deliverable: An active alert feed listing upcoming auction events, event dates, locations, and direct catalog links.

    Stop condition: The eventId or startDate fields are missing or return placeholder dates like 0001-01-01.

    What breaks, and how do you design around it?

    • 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 depth - search and browseByDepartment emit listing-level records; full detail sections (provenance, literature, exhibited) require includeLotDetail: true or mode byUrl.

    When encountering unsupported online-only URLs in byUrl mode, switch your workflow to search mode to retrieve their basic listing-level data instead. If your date filters return empty results due to Christie's dropping placeholder dates, broaden your dateRangeFrom and dateRangeTo values.

    When should you not use Christie's Lot & Auction Scraper?

    Do not use this Actor if you need to extract coin and numismatic auction histories, as Christie's does not specialize in this volume. Instead, use CoinArchives Numismatic Auction Results Scraper which is specifically built for historical coin catalogs. If your primary focus is on mid-century modern furniture and American design, you will get better coverage and detailed condition reports using Wright Auctions Scraper or Toomey & Co Auctions Scraper. Additionally, if you require data from a broader European marketplace that operates outside traditional auction houses, Catawiki Auction Scraper is a superior choice for live, community-driven bidding activity.

    What should you check before trusting the output?

    • Confirm that the priceRealised field exists for sold lots, checking that isUnsold or withdrawn are false if the price is missing.
    • Validate that estimateLow and estimateHigh are present unless estimateOnRequest is set to true on the record.
    • Inspect the imageUrls array to ensure that all returned image assets point to the live Christie's CDN.
    • Check that the provenance and literature fields are non-empty when includeLotDetail has been explicitly enabled.
    • Verify that the scrapedAt timestamp is present and correctly formatted on every returned JSON object.

    None of this proves a record is correct. It gives a scheduled Christie's Lot & Auction Scraper run defined points where it should stop instead of quietly passing bad data downstream.

    Frequently asked questions

    Is a proxy or login required to run this scraper?

    No. The scraper operates using pure HTTP requests and does not require logins or proxies to access Christie's public data. However, if the site starts blocking your requests during heavy runs, the Actor is configured to automatically engage the Apify proxy fallback to maintain stability.

    Can I fetch past sales and auction result totals?

    No. The endpoints utilized by this scraper do not expose past-sale result aggregates or total revenue for completed auctions. You can, however, find historical lots along with their individual realized prices by searching for specific artists or keywords in search mode.

    How much does it cost to extract 10,000 lots?

    Based on the free-plan price of $5.00 per 1,000 results, extracting 10,000 lots would cost $50.00 in result charges. Keep in mind that Apify also charges a platform usage fee for the compute resources consumed during the run, as well as a run-start fee every time a run is initiated.

    Why do some lot records lack provenance and literature details?

    These granular, catalog-level fields are only available when you fetch lots using the byUrl mode, or when you explicitly enable the includeLotDetail control in search mode. Enabling this option requires the Actor to make an additional request per lot, which increases run times.

    Can I scrape online-only lots with this Actor?

    Yes and no. Online-only lots will appear in your dataset when you use search or browseByDepartment modes, returning standard listing-level fields. However, you cannot fetch detailed records for online-only lots using byUrl mode because those listings are hosted on a separate online-only platform that does not share the same page structure.

    Where to go next

    When you are ready to run it, open Christie's Lot & Auction Scraper on Apify; the free plan covers up to 1,000 results a month.

    Start with the Christie's Lot & Auction Scraper Actor page for the current input schema, pricing tier, and run history.

    Other Actors we maintain for related data:

    • Toomey & Co Auctions Scraper: Scrape Toomey & Co (toomeyco.com) - a leading American auction house specializing in art, design, and decorative arts.
    • CoinArchives Numismatic Auction Results Scraper: Scrape coinarchives.com's numismatic auction-results archive -- search ancient or world coin auction lots by keyword and get auction house, lot number, description, estimate, sale price/status, date, and images.
    • Wright Auctions Scraper: Scrape Wright (wright20.com) - America's leading auction house for art and design.
    • Doyle Auctions Scraper: Scrape Doyle Auctions (doyle.com) - one of the world's leading fine art, jewelry, silver, coins, and decorative arts auction houses.
    • Catawiki Auction Scraper: Scrape live auction lots from Catawiki - Europe's curated auction marketplace for art, watches, jewellery, classic cars, wine, and collectibles.
    • Auctionet Scraper: Scrape Auctionet - Scandinavia's largest online auction platform.

    Related guides:

    Resources

    • Actor documentation, input schema, and pricing: verified against the published Actor on 2026-10-09.

    • Actor last updated by its maintainers on 2026-08-14.

    • Run outcome figures cover the 30 day public window ending 2026-10-09.

    • Christie's Lot & Auction Scraper on Apify

    Featured actors

    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.

    Run on Apify ↗