# Catawiki Lots Scraper — Bulk Auction Data by Lot ID Range (`scrapyspider/catawiki-scraper`) Actor

Scrape Catawiki auction lots in bulk by ID range. Extracts title, brand, model, condition, bids, expert estimates, images, and bidding history. No account or login required. Outputs clean JSON, CSV, or Excel.

- **URL**: https://apify.com/scrapyspider/catawiki-scraper.md
- **Developed by:** [ScrapySpider](https://apify.com/scrapyspider) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 3 total users, 1 monthly users, 100.0% runs succeeded, 1 bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per usage

This Actor is paid per platform usage. The Actor is free to use, and you only pay for the Apify platform usage, which gets cheaper the higher subscription plan you have.

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

## 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

### Catawiki Lots Scraper

Scrapes Catawiki auction lot pages in bulk by lot ID range — no account or cookies required — and returns structured JSON with full lot details, bidding history, images, and auction metadata.

---

#### Key highlights

- No Catawiki account or cookies needed
- Scrapes any lot category: watches, art, collectibles, cars, jewelry, wine, and more
- Extracts complete lot data: title, brand, model, year, condition, expert estimates, bids, and images
- Full bidding history per lot via the Catawiki bids API
- Handles millions of lots in configurable batch sizes
- Outputs clean, structured JSON ready for analysis or export as CSV/Excel

---

#### What data does it extract?

Each result contains:

**Core lot info:** lot ID, lot URL, title, subtitle, description, source platform

**Specifications (where present):** brand, model, year of manufacture, case diameter, movement type, condition

**Pricing & bidding:** current bid (EUR), bid count, expert estimate min/max, auction start/end time, auction status (active/closed)

**Media:** main image URL, array of all additional image URLs (hosted on assets.catawiki.nl)

**Auction context:** auction name, categories, full raw bidding history

**Metadata:** favourite/watch count, SKU (if present in description), scraped timestamp

Output is available as JSON, CSV, or Excel via the Apify dataset export.

---

#### Use cases

- **Auction market research:** Analyse price trends and expert estimate accuracy across thousands of lots in any Catawiki category
- **Watch & collectibles valuation:** Build pricing datasets for vintage watches, coins, art, or other collectibles by scraping closed auction results
- **Inventory monitoring:** Track open lots for specific brands or categories to monitor live auctions
- **Data aggregation:** Bulk-collect Catawiki listings and images for catalogue enrichment or comparison databases
- **Academic research:** Study bidding behaviour, bid count distributions, or estimate vs. realised price gaps at scale
- **Lead generation:** Identify top sellers and categories for partnership or sourcing decisions

---

#### How to use

1. Click **Try for free** above to open the Actor on Apify
2. In the **Input** tab, set **Start Lot ID** and **End Lot ID** (find any lot ID in the Catawiki URL: `catawiki.com/en/l/101230001` → ID is `101230001`)
3. Optionally adjust **Batch Size** (default 100,000 — lower for smaller memory footprint)
4. Click **Start** and wait for the run to complete
5. Download your results as JSON, CSV, or Excel from the **Output** tab

> **Tip:** For large ranges (millions of lots), increase the Actor memory to 4 GB+ in the run settings.

---

#### Input parameters

| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| `startLotId` | Integer | Yes | `90000000` | First Catawiki lot ID to scrape. Find it in any lot URL: `catawiki.com/en/l/101230001` |
| `endLotId` | Integer | Yes | `101990000` | Last Catawiki lot ID to scrape (inclusive). Must be ≥ startLotId |
| `batchSize` | Integer | No | `100000` | Number of lot IDs processed per crawler batch. Lower = less memory; higher = faster. Range: 1–1,000,000 |

---

#### Output example

```json
{
  "lotData": {
    "external_id": "101230002",
    "external_url": "https://www.catawiki.com/en/l/101230002",
    "source_platform": "Catawiki",
    "title": "Omega - Seamaster Professional Chronograph 300m Date - 2006",
    "subtitle": "Automatic - Stainless steel",
    "description": "Omega Seamaster Professional Chronograph 300m, ref. 2599.80...",
    "brand": "Omega",
    "model": "Seamaster Professional Chronograph 300m Date",
    "year": "2006",
    "case_size": "42 mm",
    "movement_type": "Automatic",
    "condition": "Fair - major signs of wear",
    "current_bid": null,
    "bid_count": 50,
    "estimate_min": 2700,
    "estimate_max": 3000,
    "currency": "EUR",
    "auction_start_time": null,
    "auction_end_time": null,
    "main_image_url": "https://assets.catawiki.nl/assets/2025/12/24/2/7/2/272e92a8-3361-4650-99e4-8780e6d87048.jpg",
    "additional_images": [
      "https://assets.catawiki.nl/assets/2025/12/24/2/7/2/272e92a8-3361-4650-99e4-8780e6d87048.jpg",
      "https://assets.catawiki.nl/assets/2025/12/24/a/b/c/abc12345-0000-0000-0000-000000000001.jpg"
    ],
    "status": "closed",
    "sku": null,
    "watch_count": 67,
    "scrapedAt": "2026-04-14T04:50:17.629Z"
  },
  "biddingHistory": [],
  "auction": { "title": "Watches & Accessories", "categories": [...] },
  "Categories": "Watches & Accessories",
  "auctionName": "Watches & Accessories",
  "url": "https://www.catawiki.com/en/l/101230002"
}
````

***

#### Pricing

This Actor is **free to use** — you only pay for Apify platform compute time and proxy usage.

A typical run scraping 1,000 lots costs approximately $0.05–$0.15 in Apify platform credits, depending on proxy usage and lot page complexity.

New Apify accounts receive $5 in free credits — enough for approximately 30,000–100,000 lot scrapes.

***

#### Technical notes

- **No account needed:** This Actor does not require a Catawiki login or session cookies to operate
- **Proxy:** Apify residential proxy is used automatically to bypass Catawiki's bot protection. Runs without a proxy will be blocked.
- **Deleted/invalid lots:** Lots that no longer exist return no data and are skipped silently — this is normal for large ID ranges
- **Rate limits:** Catawiki applies rate limiting. For very large ranges, use the default batch size (100,000) and run at default concurrency
- **Bidding history:** Retrieved from the Catawiki buyer API (`/buyer/api/v3/lots/{id}/bids`) — may return empty for very old or deleted lots
- **Active vs. closed lots:** The `status` field indicates whether a lot is still open for bidding. Expert estimates and bid counts are available for both
- **Image URLs:** All images are hosted on `assets.catawiki.nl` and returned as full direct URLs

***

#### Support

Have questions or found a bug? Reach out:

- **Email:** ScrapySpider@protonmail.com
- **Website:** [ScrapySpider.com](https://ScrapySpider.com)
- **Apify:** Open a support issue on this Actor page
- **Response time:** Within 24–48 hours on weekdays

# Actor input Schema

## `startLotId` (type: `integer`):

The first Catawiki lot ID to scrape. Lot IDs can be found in the URL of any Catawiki lot page (e.g. catawiki.com/en/l/101230000 → ID is 101230000).

## `endLotId` (type: `integer`):

The last Catawiki lot ID to scrape (inclusive). Must be greater than or equal to startLotId.

## `batchSize` (type: `integer`):

Number of lot IDs to process per crawler batch. Lower values use less memory; higher values are faster. Default is 100,000.

## `maxResults` (type: `integer`):

Maximum number of lot results to save to the dataset. The actor stops as soon as this count is reached. Leave empty for no limit.

## Actor input object example

```json
{
  "startLotId": 101000000,
  "endLotId": 101100000,
  "batchSize": 100000,
  "maxResults": 5
}
```

# Actor output Schema

## `results` (type: `string`):

Dataset containing all scraped Catawiki auction lot items.

# 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 = {
    "startLotId": 101000000,
    "endLotId": 101100000,
    "batchSize": 100000,
    "maxResults": 5
};

// Run the Actor and wait for it to finish
const run = await client.actor("scrapyspider/catawiki-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 = {
    "startLotId": 101000000,
    "endLotId": 101100000,
    "batchSize": 100000,
    "maxResults": 5,
}

# Run the Actor and wait for it to finish
run = client.actor("scrapyspider/catawiki-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 '{
  "startLotId": 101000000,
  "endLotId": 101100000,
  "batchSize": 100000,
  "maxResults": 5
}' |
apify call scrapyspider/catawiki-scraper --silent --output-dataset

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Catawiki Lots Scraper — Bulk Auction Data by Lot ID Range",
        "description": "Scrape Catawiki auction lots in bulk by ID range. Extracts title, brand, model, condition, bids, expert estimates, images, and bidding history. No account or login required. Outputs clean JSON, CSV, or Excel.",
        "version": "0.1",
        "x-build-id": "H6DYtSnBPVPSXesXy"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/scrapyspider~catawiki-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-scrapyspider-catawiki-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/scrapyspider~catawiki-scraper/runs": {
            "post": {
                "operationId": "runs-sync-scrapyspider-catawiki-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/scrapyspider~catawiki-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-scrapyspider-catawiki-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": [
                    "startLotId",
                    "endLotId"
                ],
                "properties": {
                    "startLotId": {
                        "title": "Start Lot ID",
                        "minimum": 1,
                        "type": "integer",
                        "description": "The first Catawiki lot ID to scrape. Lot IDs can be found in the URL of any Catawiki lot page (e.g. catawiki.com/en/l/101230000 → ID is 101230000).",
                        "default": 90000000
                    },
                    "endLotId": {
                        "title": "End Lot ID",
                        "minimum": 1,
                        "type": "integer",
                        "description": "The last Catawiki lot ID to scrape (inclusive). Must be greater than or equal to startLotId.",
                        "default": 101990000
                    },
                    "batchSize": {
                        "title": "Batch Size",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Number of lot IDs to process per crawler batch. Lower values use less memory; higher values are faster. Default is 100,000.",
                        "default": 100000
                    },
                    "maxResults": {
                        "title": "Max Results",
                        "minimum": 1,
                        "type": "integer",
                        "description": "Maximum number of lot results to save to the dataset. The actor stops as soon as this count is reached. Leave empty for no limit."
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
