# Sotheby's Lot Scraper (`crawlerbros/sothebys-lot-scraper`) Actor

Scrape Sotheby's, one of the world's oldest and largest auction houses with upcoming auctions and buy-now lots spanning art, jewelry, watches, furniture, and collectibles globally.

- **URL**: https://apify.com/crawlerbros/sothebys-lot-scraper.md
- **Developed by:** [Crawler Bros](https://apify.com/crawlerbros) (community)
- **Categories:** Automation, Developer tools, Other
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $3.00 / 1,000 results

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Sotheby's Lot Scraper

Extract auction lot data from **Sotheby's** — one of the world's oldest and most prestigious auction houses, offering fine art, jewelry, watches, furniture, and collectibles through in-room, online, and buy-now sales globally.

### What You Can Scrape

- **Upcoming auction lots** with title, department, artist, estimate range, auction date, and location
- **Buy-now listings** with fixed prices and availability
- **Past sold lots** with realized prices
- **Rich metadata**: lot number, sale number, auction type, geographic region, full description

### Output Fields

| Field | Type | Description |
|---|---|---|
| `lotId` | String | Sotheby's internal lot identifier |
| `title` | String | Full lot title / description |
| `department` | String | Category (Contemporary Art, Jewelry, Watches, etc.) |
| `artistName` | String | Artist or maker name |
| `brand` | String | Brand name (for watches, jewelry, etc.) |
| `auctionTitle` | String | Name of the auction event |
| `auctionType` | String | In-Room / Online Auctions / etc. |
| `saleType` | String | `auction` or `buy_now` |
| `lotNumber` | String | Lot number within the sale |
| `saleNumber` | String | Sale identifier |
| `auctionStartDate` | String | ISO auction start date |
| `auctionEndDate` | String | ISO auction end date |
| `auctionDetails` | String | Human-readable date/location string |
| `estimateLow` | Float | Low estimate |
| `estimateHigh` | Float | High estimate |
| `currency` | String | Currency code (USD, GBP, EUR, etc.) |
| `listPrice` | Float | Buy-now price (for retail lots) |
| `salePrice` | Float | Final realized price (for sold lots) |
| `location` | String | Sale location city |
| `region` | String | Geographic region (Europe, North America, etc.) |
| `description` | String | Full lot description text |
| `imageUrl` | String | Primary image URL |
| `imageAltText` | String | Image alt text |
| `lotUrl` | String | Full URL of the lot page |
| `slug` | String | URL slug identifier |
| `scrapedAt` | String | ISO timestamp of when data was scraped |

### Input Parameters

#### Mode

| Mode | Description |
|---|---|
| `search` | Search lots by keyword |
| `byLot` | Get details for a specific lot URL |

#### Parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `mode` | Enum | `search` | Scraping mode (required) |
| `query` | String | `vintage watch` | Search keyword (mode=search) |
| `saleType` | Enum | `upcoming` | Filter by upcoming or sold lots |
| `department` | Enum | All | Department/category filter |
| `lotUrl` | String | — | Full lot URL (mode=byLot) |
| `maxItems` | Integer | `50` | Maximum number of results |

#### Sale Types

| Value | Description |
|---|---|
| `upcoming` | Upcoming auctions and buy-now listings |
| `sold` | Past auction results with realized prices |

#### Departments

Art, Jewelry, Watches, Furniture, Collectibles, Contemporary Art, Modern Art, Impressionist Art, Chinese Works of Art, Asian Art, Photographs, Books & Manuscripts, Wine, Automobilia.

### Example Inputs

**Search for upcoming watch auctions:**
```json
{
  "mode": "search",
  "query": "Rolex",
  "saleType": "upcoming",
  "maxItems": 20
}
````

**Search past art sales:**

```json
{
  "mode": "search",
  "query": "impressionist painting",
  "saleType": "sold",
  "maxItems": 50
}
```

**Filter by department:**

```json
{
  "mode": "search",
  "query": "diamond",
  "saleType": "upcoming",
  "department": "Jewelry",
  "maxItems": 30
}
```

**Get specific lot:**

```json
{
  "mode": "byLot",
  "lotUrl": "https://www.sothebys.com/en/buy/_vintage-patek-philippe-hour-glass-reference-1593-86c0"
}
```

### Sample Output

```json
{
  "lotId": "DHYXZ",
  "title": "Vintage Patek Philippe Hour Glass (Reference 1593). A 39mm yellow gold manual wind wristwatch.",
  "department": "Watches",
  "artistName": "Patek Philippe",
  "brand": "Patek Philippe",
  "saleType": "buy_now",
  "estimateLow": 28000.0,
  "estimateHigh": 28000.0,
  "currency": "USD",
  "listPrice": 28000.0,
  "location": "US",
  "imageUrl": "https://sothebys-md.brightspotcdn.com/dims4/default/watch.jpg",
  "lotUrl": "https://sothebys.com/en/buy/_vintage-patek-philippe-hour-glass-reference-1593-86c0",
  "scrapedAt": "2026-05-25T12:00:00+00:00"
}
```

```json
{
  "lotId": "DCZ9P",
  "title": "two studies for self-portrait",
  "department": "Contemporary Art",
  "artistName": "Francis Bacon",
  "brand": "Francis Bacon",
  "auctionTitle": "Fine Jewelry",
  "auctionType": "Online Auctions",
  "saleType": "auction",
  "lotNumber": "234",
  "saleNumber": "L26050",
  "auctionDetails": "20 May–3 June 2026 | 2:00 PM BST | London",
  "auctionEndDate": "2026-06-03T13:00:00+00:00",
  "estimateLow": 8000000.0,
  "estimateHigh": 12000000.0,
  "currency": "GBP",
  "location": "London",
  "region": "Europe",
  "imageUrl": "https://sothebys-com.brightspotcdn.com/dims4/default/bacon.jpg",
  "lotUrl": "https://www.sothebys.com/en/auctions/lot.234.html",
  "scrapedAt": "2026-05-25T12:00:00+00:00"
}
```

### Use Cases

- **Art market research**: Track estimates and realized prices for specific artists or periods
- **Auction monitoring**: Stay updated on upcoming sales matching your collecting interests
- **Price benchmarking**: Compare Sotheby's prices against other auction houses
- **Investment research**: Analyze auction trends for fine art, jewelry, and watches
- **Collection valuation**: Research current market estimates for similar pieces
- **Academic research**: Build datasets of auction results for art market analysis

### FAQ

**Does this scraper require login or API keys?**
No. All scraped data is from Sotheby's publicly accessible search pages. No credentials needed.

**How many results can I get per search?**
Sotheby's typically returns up to 32 results per query on the search page. Set `maxItems` accordingly.

**What currencies are used?**
Lots are denominated in the sale's local currency — typically USD (New York), GBP (London), EUR (Paris/Milan), or HKD (Hong Kong).

**Can I get results from specific sale categories?**
Yes. Use the `department` parameter to filter by Art, Jewelry, Watches, Furniture, etc.

**What's the difference between `upcoming` and `sold` sale types?**
`upcoming` returns active listings (auction lots and buy-now items). `sold` returns past auction results, including realized prices when available.

**Are estimates always in the same currency as the sale?**
Yes. The estimate currency reflects the sale's primary currency.

**Is the `description` field always populated?**
No. Description and full text are only included when available in the search results. Always use `strip_nulls` behavior (already implemented) — only populated fields appear in the output.

# Actor input Schema

## `mode` (type: `string`):

What to fetch.

## `query` (type: `string`):

Keyword to search for (e.g. 'Rolex', 'Picasso', 'diamond necklace'). Used in mode=search.

## `category` (type: `string`):

Department/category slug to browse. Used in mode=byCategory.

## `auctionSlug` (type: `string`):

The auction sale number or slug (e.g. 'hk0241', 'n11071'). Found in the Sotheby's auction URL. Used in mode=byAuction.

## `saleType` (type: `string`):

Filter by sale type.

## `department` (type: `string`):

Restrict search results to a specific department.

## `lotUrl` (type: `string`):

Full URL of a specific Sotheby's lot page. Used in mode=byLot.

## `maxItems` (type: `integer`):

Maximum number of lots to return.

## Actor input object example

```json
{
  "mode": "search",
  "query": "contemporary art",
  "category": "contemporary-art",
  "saleType": "upcoming",
  "department": "",
  "maxItems": 50
}
```

# Actor output Schema

## `lots` (type: `string`):

Dataset containing all scraped Sotheby's auction lots.

# 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 = {
    "mode": "search",
    "query": "contemporary art",
    "category": "contemporary-art",
    "saleType": "upcoming",
    "department": "",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("crawlerbros/sothebys-lot-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 = {
    "mode": "search",
    "query": "contemporary art",
    "category": "contemporary-art",
    "saleType": "upcoming",
    "department": "",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("crawlerbros/sothebys-lot-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 '{
  "mode": "search",
  "query": "contemporary art",
  "category": "contemporary-art",
  "saleType": "upcoming",
  "department": "",
  "maxItems": 50
}' |
apify call crawlerbros/sothebys-lot-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Sotheby's Lot Scraper",
        "description": "Scrape Sotheby's, one of the world's oldest and largest auction houses with upcoming auctions and buy-now lots spanning art, jewelry, watches, furniture, and collectibles globally.",
        "version": "1.0",
        "x-build-id": "ad3fyWiP7fKVows3f"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/crawlerbros~sothebys-lot-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-crawlerbros-sothebys-lot-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/crawlerbros~sothebys-lot-scraper/runs": {
            "post": {
                "operationId": "runs-sync-crawlerbros-sothebys-lot-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/crawlerbros~sothebys-lot-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-crawlerbros-sothebys-lot-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",
                "required": [
                    "mode"
                ],
                "properties": {
                    "mode": {
                        "title": "Mode",
                        "enum": [
                            "search",
                            "byLot",
                            "byCategory",
                            "byAuction"
                        ],
                        "type": "string",
                        "description": "What to fetch.",
                        "default": "search"
                    },
                    "query": {
                        "title": "Search query (mode=search)",
                        "type": "string",
                        "description": "Keyword to search for (e.g. 'Rolex', 'Picasso', 'diamond necklace'). Used in mode=search.",
                        "default": "contemporary art"
                    },
                    "category": {
                        "title": "Category / Department (mode=byCategory)",
                        "enum": [
                            "jewelry-watches",
                            "fine-art",
                            "contemporary-art",
                            "modern-art",
                            "handbags-accessories",
                            "wine-spirits",
                            "photographs",
                            "prints",
                            "books-manuscripts",
                            "decorative-arts",
                            "asian-art",
                            "sports-memorabilia"
                        ],
                        "type": "string",
                        "description": "Department/category slug to browse. Used in mode=byCategory.",
                        "default": "contemporary-art"
                    },
                    "auctionSlug": {
                        "title": "Auction slug/ID (mode=byAuction)",
                        "type": "string",
                        "description": "The auction sale number or slug (e.g. 'hk0241', 'n11071'). Found in the Sotheby's auction URL. Used in mode=byAuction."
                    },
                    "saleType": {
                        "title": "Sale type",
                        "enum": [
                            "upcoming",
                            "sold"
                        ],
                        "type": "string",
                        "description": "Filter by sale type.",
                        "default": "upcoming"
                    },
                    "department": {
                        "title": "Department filter (mode=search)",
                        "enum": [
                            "",
                            "Art",
                            "Jewelry",
                            "Watches",
                            "Furniture",
                            "Collectibles",
                            "Contemporary Art",
                            "Modern Art",
                            "Impressionist Art",
                            "Chinese Works of Art",
                            "Asian Art",
                            "Photographs",
                            "Books & Manuscripts",
                            "Wine",
                            "Automobilia"
                        ],
                        "type": "string",
                        "description": "Restrict search results to a specific department.",
                        "default": ""
                    },
                    "lotUrl": {
                        "title": "Lot URL (mode=byLot)",
                        "type": "string",
                        "description": "Full URL of a specific Sotheby's lot page. Used in mode=byLot."
                    },
                    "maxItems": {
                        "title": "Max items",
                        "minimum": 1,
                        "maximum": 1000,
                        "type": "integer",
                        "description": "Maximum number of lots to return.",
                        "default": 50
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
