# Catawiki Product Search Scraper (`alexist/catawiki-product-search-scraper`) Actor

Scrape detailed auction listings from Catawiki's property search pages. Extract titles, descriptions, pricing, seller info, images, and 23+ metadata fields per item — perfect for market research, price tracking, and collectibles data aggregation.

- **URL**: https://apify.com/alexist/catawiki-product-search-scraper.md
- **Developed by:** [Alex](https://apify.com/alexist) (community)
- **Categories:** Automation, Developer tools, Real estate
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 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 web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — 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 Scraper: Extract Auction Listings & Collectible Data

***

### What Is Catawiki?

Catawiki.com is a leading online auction platform specializing in rare, unique, and collectible items worldwide. From classic cars and vintage watches to art and memorabilia, Catawiki hosts thousands of live auctions across multiple categories. For collectors, resellers, researchers, and market analysts, manually tracking auction data is inefficient — the **Catawiki Scraper** automates data collection from property list pages, delivering structured records instantly.

***

### Overview

The **Catawiki Property Search Scraper** extracts comprehensive auction item details from Catawiki category and search pages. It transforms unstructured listings into clean, machine-readable records containing titles, descriptions, images, pricing, seller information, and real-time auction status. Ideal for:

- **Collectors & dealers** tracking market prices and comparable sales
- **Market researchers** analyzing collectibles trends by category
- **Resellers** monitoring competitor listings and inventory
- **Data analysts** building historical auction datasets
- **Aggregator platforms** integrating Catawiki listings into multi-source databases

The scraper handles high-volume list pages efficiently with configurable item limits, optional proxy support, and graceful error handling.

***

### Input Format

The scraper accepts a JSON configuration object:

```json
{
    "urls": [
        "https://www.catawiki.com/en/c/423-classic-cars"
    ],
    "max_items_per_url": 200,
    "ignore_url_failures": true
}
```

| Parameter | Type | Description |
|---|---|---|
| `urls` | Array | Category or search result pages to scrape. Paste full Catawiki URLs (e.g., category pages, search filters, collection links). |
| `max_items_per_url` | Integer | Maximum number of auction items to extract per URL (e.g., `200` collects up to 200 listings per page). |
| `ignore_url_failures` | Boolean | If `true`, the scraper continues if some URLs fail; if `false`, the run stops on first failure. Recommended: `true` for reliability. |

**Example URLs:**

- `https://www.catawiki.com/en/c/423-classic-cars` — Classic cars category
- `https://www.catawiki.com/en/search?status=ForSale&sort_by=new` — Active auctions sorted by newest

***

### Output Format

**Sample output**

```json
{
  "id": 105421348,
  "title": "BMW - 320i - 1988",
  "subtitle": "Located in: Netherlands - with Dutch registration - 129000 km - Good condition: visible signs of wear and general ageing",
  "thumb_image_url": "https://assets.catawiki.nl/assets/2025/12/29/c/b/e/thumb2_cbe68dd4-8e87-406d-9dd8-4159d41975c4.jpg",
  "original_image_url": "https://assets.catawiki.nl/assets/2025/12/29/c/b/e/cbe68dd4-8e87-406d-9dd8-4159d41975c4.jpg",
  "favorite_count": 0,
  "url": "https://www.catawiki.com/en/l/105421348-bmw-320i-1988",
  "localized": true,
  "translated_title": null,
  "translated_subtitle": null,
  "auction_id": 1259465,
  "pubnub_channel": "CWAUCTION-production-1259465",
  "use_realtime_message_fallback": false,
  "is_content_explicit": false,
  "reserve_price_set": true,
  "bidding_start_time": "2026-07-17T10:00:00+00:00",
  "buy_now": null,
  "has_free_shipping": null,
  "is_vector_search_result": null,
  "description": null,
  "seller_id": null,
  "seller_shop_name": null,
  "live": null,
  "from_url": "https://www.catawiki.com/en/c/423-classic-cars"
}
```

Each scraped auction item returns a detailed record with 23 fields:

#### Item Identification & Display

| Field | Meaning |
|---|---|
| `ID` | Unique Catawiki identifier for the auction lot |
| `Title` | Item title as displayed on the auction page |
| `Subtitle` | Secondary description or variant info (e.g., year, condition) |
| `URL` | Direct link to the individual auction page |
| `Translated Title` | English translation of the title (if applicable) |
| `Translated Subtitle` | English translation of the subtitle |

#### Images & Media

| Field | Meaning |
|---|---|
| `Thumb Image URL` | Thumbnail image URL for gallery display |
| `Original Image URL` | High-resolution main image URL |

#### Auction Mechanics

| Field | Meaning |
|---|---|
| `Auction ID` | Identifier linking to the auction session |
| `Bidding Start Time` | When the auction begins (timestamp) |
| `Reserve Price Set` | Boolean flag indicating if a reserve price is active |
| `Buy Now` | Fixed-price "Buy Now" option amount (if available) |
| `Has Free Shipping` | Whether the item includes free shipping |

#### Engagement & Status

| Field | Meaning |
|---|---|
| `Favorite Count` | Number of times users favorited the item |
| `Live` | Boolean indicating if the auction is currently active |
| `Is Content Explicit` | Flag for adult/restricted content categories |

#### Real-time & Technical

| Field | Meaning |
|---|---|
| `PubNub Channel` | Real-time messaging channel for live bidding updates |
| `Use Realtime Message Fallback` | Whether to use fallback messaging protocol |
| `Is Vector Search Result` | Flag for AI-powered search result placement |

#### Seller Information

| Field | Meaning |
|---|---|
| `Seller ID` | Unique identifier of the auction seller/merchant |
| `Seller Shop Name` | Display name of the seller's shop on Catawiki |

#### Item Details

| Field | Meaning |
|---|---|
| `Description` | Full item description with condition, provenance, and details |
| `Localized` | Boolean indicating if item details are translated/localized |

***

### How to Use

1. **Identify source pages** — Go to Catawiki.com and navigate to a category or search results page. Copy the URL (e.g., classic cars category, jewelry search with filters).
2. **Configure input** — Paste URLs into the `urls` array. Adjust `max_items_per_url` to control volume (typical: 100–200 per page).
3. **Enable error handling** — Set `ignore_url_failures: true` to skip failed pages without interrupting the run.
4. **Start the scraper** — Run the actor and monitor progress in the execution log.
5. **Export data** — Download results as JSON, CSV, or Excel for analysis, import, or re-selling.

**Best practices:**

- Scrape category landing pages first (lower pagination overhead).
- Use filters (status, price range, location) to narrow scope and reduce API load.
- Set reasonable `max_items_per_url` limits (200–500) to balance data volume and runtime.
- Reuse configurations for weekly/monthly price tracking.

***

### Use Cases & Business Value

- **Price intelligence:** Track historical and current prices by category to identify trends
- **Competitive monitoring:** Watch competitor inventory and closing prices
- **Market analysis:** Analyze demand signals from favorite counts and bidding volume
- **Resale sourcing:** Identify undervalued items for arbitrage or resale
- **Historical records:** Build datasets of past auctions for research or validation
- **Multi-channel aggregation:** Feed Catawiki data into personal marketplaces or price tracking tools

The **Catawiki Scraper** delivers ready-to-analyze data in seconds, replacing hours of manual browsing and data entry.

***

### Conclusion

The **Catawiki Property Search Scraper** is the fastest way to extract structured auction data from one of the world's largest online marketplaces for collectibles. With 23 detailed fields per item and flexible configuration, it empowers collectors, researchers, and merchants to make data-driven decisions. Start scraping today and unlock insights into global collectibles markets.

# Actor input Schema

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

Add the URLs of the product 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.catawiki.com/en/c/423-classic-cars"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}
```

# 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.catawiki.com/en/c/423-classic-cars"
    ],
    "ignore_url_failures": true,
    "max_items_per_url": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("alexist/catawiki-product-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.catawiki.com/en/c/423-classic-cars"],
    "ignore_url_failures": True,
    "max_items_per_url": 100,
}

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

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).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.catawiki.com/en/c/423-classic-cars"
  ],
  "ignore_url_failures": true,
  "max_items_per_url": 100
}' |
apify call alexist/catawiki-product-search-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,alexist/catawiki-product-search-scraper"
        }
    }
}

```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/CAiT1Myzxn94pf1Rn/builds/oWzjLHNrOySNQmqih/openapi.json
