# Christies Lots Search Scraper (`stealth_mode/christies-lots-search-scraper`) Actor

Scrape Christie's auction lot search results with ease. This scraper collects lot details including titles, estimates, prices realized, auction dates, and 27+ fields per lot — perfect for collectors, dealers, researchers, and auction market analysts.

- **URL**: https://apify.com/stealth\_mode/christies-lots-search-scraper.md
- **Developed by:** [Stealth mode](https://apify.com/stealth_mode) (community)
- **Categories:** Automation, Developer tools, E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Christie's Lots Search Scraper: Extract Auction Data Instantly

---

### What Is Christie's and Why Scrape It?

Christie's is the world's leading auction house for fine art, jewelry, collectibles, and decorative objects. Their catalog contains thousands of active and historical lots with pricing, estimates, and detailed descriptions. Manually collecting this data across multiple searches is tedious — the **Christie's Lots Search Scraper** automates the extraction, delivering structured auction data for analysis, market research, and business intelligence.

---

### Overview

The **Christie's Lots Search Scraper** extracts auction lot listings from Christie's search results pages, converting unstructured catalog data into clean, machine-readable records. It is designed for:

- **Art dealers & collectors** tracking market prices and comparable sales
- **Appraisers** researching valuation benchmarks
- **Auction analysts** monitoring trends across product categories
- **Researchers** studying art market dynamics and auction patterns
- **Data aggregators** building comprehensive art market databases

Key strengths include configurable item limits per search URL, graceful error handling, and comprehensive field coverage spanning lot metadata, pricing, auction status, and bidding information.

---

### Input Format

The scraper accepts a JSON configuration object with three main parameters:

```json
{
  "urls": [
    "https://www.christies.com/en/search?entry=blue&page=1&sortby=relevance&tab=sold_lots"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 200
}
````

#### Input Parameters Explained

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | Direct links to Christie's lot search result pages (e.g., category catalogs, keyword searches). Add one or multiple URLs. |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues if a URL fails. If `false`, the run stops on the first failure. Default: `true`. |
| `max_items_per_url` | Integer | Maximum number of lot items to extract per URL. Set to `200` for full catalogs or lower for partial data collection. |

***

### Output Format

**Sample output**

```json
{
  "object_id": "6569607",
  "lot_id_txt": "476",
  "analytics_id": "24592.476",
  "event_type": "Sale",
  "start_date": "2026-02-13T00:00:00",
  "end_date": "2026-02-13T00:00:00",
  "url": "https://www.christies.com/en/lot/lot-6569607",
  "is_auction_over": true,
  "is_in_progress": false,
  "title_primary_txt": "A PAIR OF GEORGE III ORMOLU-MOUNTED BLUE JOHN CANDLE-VASES",
  "title_secondary_txt": "BY MATTHEW BOULTON, CIRCA 1775",
  "title_tertiary_txt": "",
  "consigner_information": "",
  "description_txt": "A PAIR OF GEORGE III ORMOLU-MOUNTED BLUE JOHN CANDLE-VASES<br> BY MATTHEW BOULTON, CIRCA 1775<br> Each surmounted by a removable top with pinecone finial above a spreading domed acanthus base and pearled neck, the top reversing to form a baluster-shaped stiff-leaf candle nozzle with removable drip pan, the ovoid body with reeded rim flanked by scrolled handles cast with rosettes, husk trails and acanthus sprays, above an acanthus cup and fluted spreading circular socle with laurel collar and square base<br> 12 ¾ in. (32.4 cm.) high<br> ",
  "image": {
    "image_src": "https://www.christies.com/img/lotimages/2026/NYR/2026_NYR_24592_0476_000(a_pair_of_george_iii_ormolu-mounted_blue_john_candle-vases_by_matthew021459).jpg?mode=max",
    "image_mobile_src": "https://www.christies.com/img/lotimages/2026/NYR/2026_NYR_24592_0476_000(a_pair_of_george_iii_ormolu-mounted_blue_john_candle-vases_by_matthew021459).jpg?mode=max",
    "image_tablet_src": "https://www.christies.com/img/lotimages/2026/NYR/2026_NYR_24592_0476_000(a_pair_of_george_iii_ormolu-mounted_blue_john_candle-vases_by_matthew021459).jpg?mode=max",
    "image_desktop_src": "https://www.christies.com/img/lotimages/2026/NYR/2026_NYR_24592_0476_000(a_pair_of_george_iii_ormolu-mounted_blue_john_candle-vases_by_matthew021459).jpg?mode=max",
    "image_alt_text": "A PAIR OF GEORGE III ORMOLU-MOUNTED BLUE JOHN CANDLE-VASES"
  },
  "estimate_visible": true,
  "estimate_on_request": false,
  "lot_estimate_txt": "",
  "price_on_request": false,
  "estimate_txt": "USD 200,000 - 300,000",
  "lot_withdrawn": false,
  "price_realised_txt": "USD 355,600",
  "current_bid": null,
  "current_bid_txt": null,
  "is_saved": false,
  "show_save": true,
  "sale": {
    "id": "31234",
    "number": "24592",
    "location": "New York",
    "type": "NormalSale"
  },
  "from_url": "https://www.christies.com/en/search?entry=blue&page=1&sortby=relevance&tab=sold_lots"
}
```

Each scraped lot returns a comprehensive record with 27 fields covering identification, auction details, pricing, and metadata:

#### Lot Identification & Metadata

| Field | Meaning |
|---|---|
| `Object ID` | Unique identifier for the lot object in Christie's system |
| `Lot ID` | Specific lot number within an auction event |
| `Analytics ID` | Internal tracking ID for analytics and reporting |
| `URL` | Direct link to the individual lot page on Christie's website |

#### Auction Event Information

| Field | Meaning |
|---|---|
| `Event Type` | Type of auction (e.g., sale, online auction, estimate request) |
| `Start Date` | Official start date/time of the auction |
| `End Date` | Official end date/time when bidding closes |
| `Sale` | Name or reference of the specific sale/auction event |
| `Is Auction Over` | Boolean flag indicating if the auction has ended |
| `Is In Progress` | Boolean flag indicating if the auction is currently active |

#### Lot Titles & Descriptions

| Field | Meaning |
|---|---|
| `Primary Title` | Main title of the lot (e.g., artwork name, artist, period) |
| `Secondary Title` | Additional descriptive title or subtitle |
| `Tertiary Title` | Further classification or detail (e.g., edition, series) |
| `Description` | Full HTML description including provenance, condition, and historical context |
| `Consigner Information` | Details about the consigner (owner submitting the lot) |
| `Image` | URL to the primary lot image |

#### Valuation & Pricing

| Field | Meaning |
|---|---|
| `Lot Estimate` | Estimated lot value range (typically in format "low–high USD") |
| `Estimate Visible` | Boolean indicating if the estimate is publicly displayed |
| `Estimate On Request` | Boolean indicating if the estimate requires contacting Christie's |
| `Estimate` | Parsed or formatted estimate value |
| `Price On Request` | Boolean flag for lots with prices not publicly listed |
| `Price Realised` | Actual hammer price (sale price) after bidding closes |
| `Current Bid` | Highest bid amount during an active auction |
| `Current Bid Text` | Formatted current bid display (e.g., "€150,000") |
| `Lot Withdrawn` | Boolean flag indicating if the lot was removed from auction |

#### User Interaction & Status

| Field | Meaning |
|---|---|
| `Is Saved` | Boolean indicating if the lot is saved in the user's watchlist |
| `Show Save` | Boolean indicating if the save button should display |

***

### How to Use

1. **Navigate Christie's** — Browse to a Christie's category page or use the search function (e.g., `https://www.christies.com/en/search?entry=blue&page=1&sortby=relevance&tab=sold_lots`).
2. **Copy the search URL** — Grab the full page URL from the address bar.
3. **Configure the scraper** — Paste the URL(s) into the `urls` array. Set `max_items_per_url` to the number of lots you need (up to the page limit).
4. **Set error handling** — Use `ignore_url_failures: true` for robust bulk runs.
5. **Run the scraper** — Execute and monitor the progress log in real-time.
6. **Export & analyze** — Download results as JSON, CSV, or Excel for analysis, comparison, or database import.

**Best practices:**

- Use category URLs or filtered search results to target specific lot types.
- Set `max_items_per_url: 200` to capture full catalog pages (adjust if the page has fewer items).
- Export data regularly for large scraping jobs to avoid timeout issues.

***

### Use Cases & Business Value

- **Price comparisons:** Research hammer prices across auctions to inform valuations
- **Market trends:** Identify demand patterns by analyzing lot estimates vs. realized prices
- **Competitive intelligence:** Monitor competitor lots, pricing strategies, and auction activity
- **Research projects:** Build historical datasets for academic or industry studies
- **Automated aggregation:** Populate internal databases or platforms with up-to-date auction catalogs

The Christie's Lots Search Scraper transforms hours of manual data collection into minutes, enabling faster research, better market insights, and data-driven decision-making for professionals in the art, collectibles, and auction industries.

***

### Conclusion

The **Christie's Lots Search Scraper** is an essential tool for anyone working with auction data. With 27 detailed fields per lot and flexible URL configuration, it streamlines the collection of pricing, estimates, and lot metadata at scale. Whether you're an appraiser, dealer, researcher, or data analyst, this scraper delivers the structured intelligence you need to stay competitive in the dynamic art market.

# Actor input Schema

## `urls` (type: `array`):

Add the URLs of the lots search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.

## `ignore_url_failures` (type: `boolean`):

If true, the scraper will continue running even if some URLs fail to be scraped.

## `max_items_per_url` (type: `integer`):

The maximum number of items to scrape per URL.

## Actor input object example

```json
{
  "urls": [
    "https://www.christies.com/en/search?entry=blue&page=1&sortby=relevance&tab=sold_lots"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}
```

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "urls": [
        "https://www.christies.com/en/search?entry=blue&page=1&sortby=relevance&tab=sold_lots"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 20
};

// Run the Actor and wait for it to finish
const run = await client.actor("stealth_mode/christies-lots-search-scraper").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "urls": ["https://www.christies.com/en/search?entry=blue&page=1&sortby=relevance&tab=sold_lots"],
    "ignore_url_failures": True,
    "max_items_per_url": 20,
}

# Run the Actor and wait for it to finish
run = client.actor("stealth_mode/christies-lots-search-scraper").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "urls": [
    "https://www.christies.com/en/search?entry=blue&page=1&sortby=relevance&tab=sold_lots"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 20
}' |
apify call stealth_mode/christies-lots-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=stealth_mode/christies-lots-search-scraper",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Christies Lots Search Scraper",
        "description": "Scrape Christie's auction lot search results with ease. This scraper collects lot details including titles, estimates, prices realized, auction dates, and 27+ fields per lot — perfect for collectors, dealers, researchers, and auction market analysts.",
        "version": "0.0",
        "x-build-id": "TvfIToOauxUWij4IX"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/stealth_mode~christies-lots-search-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-stealth_mode-christies-lots-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/stealth_mode~christies-lots-search-scraper/runs": {
            "post": {
                "operationId": "runs-sync-stealth_mode-christies-lots-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/stealth_mode~christies-lots-search-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-stealth_mode-christies-lots-search-scraper",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "title": "URLs of the lots search list urls to scrape",
                        "type": "array",
                        "description": "Add the URLs of the lots search list urls you want to scrape. You can paste URLs one by one, or use the Bulk edit section to add a prepared list.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "ignore_url_failures": {
                        "title": "Continue running even if some URLs fail to be scraped",
                        "type": "boolean",
                        "description": "If true, the scraper will continue running even if some URLs fail to be scraped."
                    },
                    "max_items_per_url": {
                        "title": "Max items per URL",
                        "type": "integer",
                        "description": "The maximum number of items to scrape per URL."
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
