# Catawiki Scraper (`unfenced-group/catawiki-scraper`) Actor

Extract Catawiki auction lots with 90 fields each: current bid in EUR/USD/GBP, the expert's low-high estimate, full bid history, seller reputation, structured specifications and the image gallery. Search by keyword, browse a category, or take a whole auction in one run.

- **URL**: https://apify.com/unfenced-group/catawiki-scraper.md
- **Developed by:** [Unfenced Group](https://apify.com/unfenced-group) (community)
- **Categories:** E-commerce
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $0.77 / 1,000 lots

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/actors/running/actors-in-store.md#pay-per-event

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

![Catawiki Scraper](https://api.apify.com/v2/key-value-stores/OxVvXSdXQQ4ygtq1v/records/banner.png)

Extract auction lots from catawiki.com at scale, with the richest field set available: current bid in three currencies, the expert's low/high estimate, full bid history, seller reputation, structured item specifications and the complete image gallery. No API key required.

***

### Why this scraper?

#### 💶 Live bidding data

Current bid, minimum next bid and opening bid, converted to euros, dollars or pounds on request, together with a true total bid count taken from the full bidding record rather than the handful shown on the page.

#### 📈 The expert's estimate

Every lot on Catawiki is reviewed by a specialist who publishes a low and high estimate. Both figures are returned alongside the current bid, so you can measure the gap on any lot.

#### 🔨 Complete bid history

Each individual bid with its amount, timestamp, the bidder's country and whether it came from an automatic bid — plus a total bid count on every lot.

#### 🏅 Seller reputation

Shop name, country, member-since date, objects sold to date, positive/neutral/negative feedback counts, overall score, and the pro and top-seller flags.

#### 🔎 Structured specifications

Brand, model, condition, material, period, dimensions and every other attribute Catawiki records, returned both as a list and as a keyed object you can query directly.

#### 🗂️ Four ways in

Search by keyword, browse a category, take an entire auction in one pass, or scrape individual lots — paste any Catawiki address and the right mode is selected automatically.

***

### Input parameters

| Parameter | Type | Default | Description |
|---|---|---|---|
| `searchQuery` | string | (empty) | Keyword to search across all Catawiki auctions — a brand, artist, model or object type. |
| `startUrls` | array | `[]` | Catawiki addresses to scrape. Search pages, category pages, whole auctions and single lots are all recognised. |
| `filters` | string | (empty) | Catawiki filter expression, copied from the part of an address after `filters=`. Join several clauses with an ampersand. |
| `locale` | string | `"en"` | Storefront language: `en`, `nl`, `de`, `fr`, `it` or `es`. Selects which translated titles and descriptions are returned. |
| `currency` | string | `"EUR"` | Currency for bid amounts and estimates: `EUR`, `USD` or `GBP`. |
| `maxResults` | integer | `100` | Maximum lots to return across all searches and start URLs. `0` means no limit. |
| `fetchDetails` | boolean | `true` | Fetch each lot's own page to add bids, estimate, seller, specifications and gallery. |
| `includeBidHistory` | boolean | `true` | Include the individual bids on each lot, not just the count. |
| `maxBidHistory` | integer | `25` | Largest number of bids to keep per lot, newest first. `0` keeps the count only. |
| `skipReposts` | boolean | `false` | Leave out lots already returned by an earlier run, so a scheduled run gives you only what is new. |

***

### Output schema

Every field below is present on every record. Fields Catawiki does not publish for a given lot are returned as `null` rather than omitted.

#### Always present

| Field | Type | Description |
|---|---|---|
| `id` | integer | Catawiki lot identifier. |
| `lotId` | integer | Same value as `id`, provided for convenience when joining datasets. |
| `url` | string | Full address of the lot page. |
| `slug` | string | URL slug of the lot, identifier and title combined. |
| `title` | string | Lot title as shown on the listing. |
| `subtitle` | string | Short qualifier under the title, such as movement and case material. |
| `auctionId` | integer | Identifier of the auction this lot belongs to. |
| `reservePriceSet` | boolean | Whether the seller set a reserve price. `false` means a no-reserve lot. |
| `hasFreeShipping` | boolean | Whether the seller offers free shipping on this lot. |
| `buyNowPrice` | number | Fixed buy-now price where the seller offers one (null on ordinary auction lots). |
| `buyNowCurrency` | string | Currency of `buyNowPrice`. Catawiki quotes buy-now in euros only. |
| `favoriteCount` | integer | Number of users who added the lot to their favourites. |
| `isContentExplicit` | boolean | Whether Catawiki flags the lot as explicit content. |
| `biddingStartTime` | string | ISO timestamp at which bidding opened. |
| `imageUrl` | string | Full-size primary image. |
| `thumbnailImageUrl` | string | Thumbnail version of the primary image. |
| `sellerId` | integer | Catawiki seller identifier. |
| `sellerShopName` | string | Seller's shop name as shown on the listing. |
| `source` | string | Always `catawiki.com`. |
| `sourceUrl` | string | The start URL this lot was reached from (null for keyword searches). |
| `sourceType` | string | How the lot was reached: `search`, `category`, `auction` or `lot`. |
| `locale` | string | Storefront language the record was scraped in. |
| `scrapedAt` | string | ISO timestamp of extraction. |
| `scrapedDate` | string | Extraction date in the Amsterdam time zone, `YYYY-MM-DD`. |
| `contentHash` | string | Stable fingerprint of the lot identity, used to detect changes between runs. |
| `isRepost` | boolean | Whether this lot was already seen in an earlier run. |
| `originalPublishDate` | string | Bidding start time recorded the first time this lot was seen. |
| `originalUrl` | string | Address the lot carried when first seen. |
| `changeStatus` | string | `NEW`, `SEEN` or `UPDATED` relative to earlier runs. |

#### With `fetchDetails: true`

| Field | Type | Description |
|---|---|---|
| `descriptionHtml` | string | Seller's description as published. Catawiki stores descriptions as plain text, so this is normally null and `descriptionText` carries the content. |
| `descriptionText` | string | Seller's description as plain text. |
| `descriptionMarkdown` | string | Seller's description converted to Markdown. |
| `summary` | string | Catawiki's own one-paragraph summary of the lot. |
| `currentBid` | number | Highest bid so far, converted to the currency you selected. |
| `currentBidCurrency` | string | Currency of `currentBid`. |
| `currentBidEur` | number | The same bid in euros, always present regardless of the currency you selected. |
| `minimumNextBid` | number | Smallest bid that would currently be accepted. |
| `startingBid` | number | Opening bid set for the lot. |
| `bidCount` | integer | Total bids placed on the lot over its whole run, not just the bids listed in `bidHistory`. |
| `lastBidAt` | string | ISO timestamp of the most recent bid. |
| `estimateMin` | number | Low end of the expert's estimate (null when no estimate was published). |
| `estimateMax` | number | High end of the expert's estimate (null when no estimate was published). |
| `estimateCurrency` | string | Currency the estimate is expressed in. |
| `biddingEndTime` | string | ISO timestamp at which bidding closes. |
| `biddingEndDate` | string | Closing date in the Amsterdam time zone, `YYYY-MM-DD`. |
| `isOpen` | boolean | Whether the lot is currently open for bidding. |
| `isClosed` | boolean | Whether bidding has closed. |
| `isSold` | boolean | Whether the lot sold. |
| `reservePriceMet` | boolean | Whether the reserve has been met (null on no-reserve lots). |
| `highInterest` | boolean | Catawiki's flag for lots attracting unusual attention. |
| `categoryId` | integer | Identifier of the lot's own category. |
| `categoryUrl` | string | Address of that category page. |
| `categoryLevel` | integer | Depth of that category in the tree. |
| `categoryL0Id` | integer | Top-level category identifier, such as Watches, Pens & Lighters. |
| `categoryL0Name` | string | Top-level category name. |
| `categoryL1Id` | integer | Second-level category identifier. |
| `categoryL1Name` | string | Second-level category name. |
| `categoryL2Id` | integer | Third-level category identifier. |
| `categoryL2Name` | string | Third-level category name. |
| `auctionTitle` | string | Title of the auction the lot sits in. |
| `auctionUrl` | string | Address of the auction page. |
| `auctionStatus` | string | Auction state, such as `open_now`. |
| `auctionStartAt` | string | ISO timestamp the auction opened. |
| `auctionCloseAt` | string | ISO timestamp the auction closes. |
| `auctionLotCount` | integer | Number of lots in the auction. |
| `auctionIsThemed` | boolean | Whether this is a themed sale rather than a regular one. |
| `expertName` | string | Catawiki specialist who curated the auction. |
| `expertUrl` | string | Address of that specialist's public profile. |
| `sellerName` | string | Seller's public shop name. |
| `sellerUrl` | string | Address of the seller's public profile. |
| `sellerCountry` | string | Country the seller ships from. |
| `sellerCountryCode` | string | Two-letter country code for the same. |
| `sellerIsPro` | boolean | Whether the seller holds professional status. |
| `sellerIsTop` | boolean | Whether Catawiki marks the seller as a top seller. |
| `sellerMemberSince` | string | ISO timestamp the seller joined Catawiki. |
| `sellerObjectsSold` | integer | Lots the seller has sold to date. |
| `sellerLotsInAuction` | integer | Lots the seller currently has in this auction. |
| `sellerScore` | integer | Seller's overall feedback score as a percentage. |
| `sellerPositiveCount` | integer | Positive feedback entries. |
| `sellerNeutralCount` | integer | Neutral feedback entries. |
| `sellerNegativeCount` | integer | Negative feedback entries. |
| `sellerFeedbackCount` | integer | Total feedback entries over the seller's lifetime. |
| `sellerBadges` | array | Badge titles awarded to the seller, such as Verified. |
| `specifications` | array | Item attributes as `{ name, value }` pairs. |
| `specs` | object | The same attributes as a keyed object, for direct lookup. |
| `images` | array | Every full-size image in the lot gallery. |
| `imageCount` | integer | Number of images in the gallery. |
| `ageCheckRequired` | boolean | Whether the lot requires age verification to bid. |
| `hasExplicitContent` | boolean | Whether the lot page carries an explicit-content warning. |
| `bidHistory` | array | Individual bids, newest first. Fields below. |
| `bidHistory[].amount` | number | Bid amount. |
| `bidHistory[].currency` | string | Currency of the bid amount. |
| `bidHistory[].placedAt` | string | ISO timestamp the bid was placed. |
| `bidHistory[].bidderCountryCode` | string | Two-letter country code of the bidder. |
| `bidHistory[].bidderTotalBids` | integer | Bids that bidder has placed on Catawiki in total. |
| `bidHistory[].isAutobid` | boolean | Whether the bid was placed automatically. |

Bidders are not identified. Catawiki publishes bids anonymously and this actor records only the country and lifetime bid count.

#### Example record

```json
{
  "id": 106613983,
  "lotId": 106613983,
  "url": "https://www.catawiki.com/en/l/106613983-rolex-oysterdate-precision-no-reserve-price-6425-men-1960",
  "slug": "106613983-rolex-oysterdate-precision-no-reserve-price-6425-men-1960",
  "title": "Rolex - Oysterdate Precision - No reserve price - 6425 - Men - 1960",
  "subtitle": "Manual winding - Steel",
  "auctionId": 1263236,
  "reservePriceSet": false,
  "hasFreeShipping": false,
  "buyNowPrice": null,
  "buyNowCurrency": null,
  "favoriteCount": 112,
  "isContentExplicit": false,
  "biddingStartTime": "2026-09-11T10:00:00.000Z",
  "imageUrl": "https://assets.catawiki.nl/assets/2026/9/4/0/d/4/0d47cb61-3cdb-4f1e-ab3f-5b7ccd2bcc9b.jpg",
  "thumbnailImageUrl": "https://assets.catawiki.nl/assets/2026/9/4/0/d/4/thumb2_0d47cb61-3cdb-4f1e-ab3f-5b7ccd2bcc9b.jpg",
  "sellerId": 1273747,
  "sellerShopName": "balmes70",
  "source": "catawiki.com",
  "sourceUrl": null,
  "sourceType": "search",
  "locale": "en",
  "scrapedAt": "2026-09-14T14:33:39.000Z",
  "scrapedDate": "2026-09-14",
  "contentHash": "4f2a8c1d93b7e560",
  "summary": "A 1960 Rolex Oysterdate Precision reference 6425 in steel with a silver dial, manual winding, 34 mm case, offered with its original box and a three-year service warranty.",
  "descriptionText": "Exclusive Rolex Oysterdate Precision. Ref 6425. Silver dial. Like New, serviced Official Serviced. Brand Rolex. Model Oysterdate Precision...",
  "descriptionHtml": null,
  "descriptionMarkdown": "Exclusive Rolex Oysterdate Precision. Ref 6425. Silver dial...",
  "currentBid": 1625,
  "currentBidCurrency": "EUR",
  "currentBidEur": 1625,
  "minimumNextBid": 1725,
  "startingBid": 1725,
  "bidCount": 10,
  "lastBidAt": "2026-09-14T13:16:24.000Z",
  "estimateMin": 2600,
  "estimateMax": 2900,
  "estimateCurrency": "EUR",
  "biddingEndTime": "2026-09-20T18:32:32.000Z",
  "biddingEndDate": "2026-09-20",
  "isOpen": true,
  "isClosed": false,
  "isSold": false,
  "reservePriceMet": null,
  "highInterest": true,
  "categoryId": 343,
  "categoryUrl": "https://www.catawiki.com/en/c/343-rolex-watches",
  "categoryLevel": 2,
  "categoryL0Id": 299,
  "categoryL0Name": "Watches, Pens & Lighters",
  "categoryL1Id": 333,
  "categoryL1Name": "Watches",
  "categoryL2Id": 343,
  "categoryL2Name": "Rolex Watches",
  "auctionTitle": "Rolex Watches Auction · No Reserve",
  "auctionUrl": "https://www.catawiki.com/en/a/1263236-rolex-watches-auction-no-reserve",
  "auctionStatus": "open_now",
  "auctionStartAt": "2026-09-11T10:00:00.000Z",
  "auctionCloseAt": "2026-09-20T18:00:00.000Z",
  "auctionLotCount": 40,
  "auctionIsThemed": true,
  "expertName": "Mauro Atienza",
  "expertUrl": "https://www.catawiki.com/en/e/607-mauro-atienza",
  "sellerName": "balmes70",
  "sellerUrl": "https://www.catawiki.com/en/u/1273747-balmes70",
  "sellerCountry": "Spain",
  "sellerCountryCode": "ES",
  "sellerIsPro": true,
  "sellerIsTop": true,
  "sellerMemberSince": "2015-11-06T16:01:30.000Z",
  "sellerObjectsSold": 13980,
  "sellerLotsInAuction": 10,
  "sellerScore": 100,
  "sellerPositiveCount": 126,
  "sellerNeutralCount": 14,
  "sellerNegativeCount": 0,
  "sellerFeedbackCount": 5791,
  "sellerBadges": ["Verified"],
  "specifications": [
    { "name": "Brand", "value": "Rolex" },
    { "name": "Model", "value": "Oysterdate Precision" },
    { "name": "Gender", "value": "Men" },
    { "name": "Case material", "value": "Steel" },
    { "name": "Condition", "value": "Like New" }
  ],
  "specs": {
    "Brand": "Rolex",
    "Model": "Oysterdate Precision",
    "Gender": "Men",
    "Case material": "Steel",
    "Condition": "Like New"
  },
  "images": [
    "https://assets.catawiki.nl/assets/2026/9/4/0/d/4/0d47cb61-3cdb-4f1e-ab3f-5b7ccd2bcc9b.jpg",
    "https://assets.catawiki.nl/assets/2026/9/4/a/9/a/a9a99db3-c890-4c10-bbb7-bf5dbbb208c5.jpg"
  ],
  "imageCount": 11,
  "ageCheckRequired": false,
  "hasExplicitContent": false,
  "bidHistory": [
    {
      "amount": 1625,
      "currency": "EUR",
      "placedAt": "2026-09-14T13:16:24.000Z",
      "bidderCountryCode": "it",
      "bidderTotalBids": 441,
      "isAutobid": false
    },
    {
      "amount": 1525,
      "currency": "EUR",
      "placedAt": "2026-09-14T07:02:53.000Z",
      "bidderCountryCode": "it",
      "bidderTotalBids": 603,
      "isAutobid": false
    }
  ],
  "isRepost": false,
  "originalPublishDate": null,
  "originalUrl": null,
  "changeStatus": "NEW"
}
```

***

### Examples

**Search for Rolex watches across all open auctions:**

```json
{
  "searchQuery": "rolex",
  "maxResults": 250,
  "currency": "EUR"
}
```

**No-reserve lots from Dutch sellers in the watches category:**

```json
{
  "startUrls": [{ "url": "https://www.catawiki.com/en/c/333-watches" }],
  "filters": "reserve_price[]=0&seller_location[]=nl",
  "maxResults": 500
}
```

**Take an entire auction in one pass, on the Dutch storefront:**

```json
{
  "startUrls": [{ "url": "https://www.catawiki.com/nl/a/1263236-rolex-watches-auction-no-reserve" }],
  "locale": "nl",
  "maxResults": 0
}
```

**Daily feed of newly listed lots closing within a day:**

```json
{
  "searchQuery": "art deco",
  "filters": "bidding_end_days[]=1",
  "skipReposts": true,
  "maxResults": 200
}
```

***

### 💰 Pricing

**$0.79 per 1,000 results** — you only pay for successfully retrieved lots. Failed retries and filtered reposts are never charged.

| Results | Cost |
|---|---|
| 100 | ~$0.08 |
| 1,000 | ~$0.79 |
| 10,000 | ~$7.90 |
| 100,000 | ~$79.00 |

> Flat-rate alternatives typically charge $29–$49/month regardless of usage.

Subscription tiers lower the rate further, down to $0.77 per 1,000 at the highest tier. Use the **Max results** cap in the input to control your spend exactly.

***

### Performance

| Run size | Typical time |
|---|---|
| 100 lots | under 1 minute |
| 1,000 lots | 4–7 minutes |
| 10,000 lots | 40–70 minutes |

Turning off **Fetch full lot details** is roughly ten times faster, at the cost of bids, estimates, seller data and specifications.

***

### Known limitations

- Catawiki does not publish a sort order that survives to the data layer, so results arrive in the site's own default order. Use `filters` to narrow a result set rather than sorting it.
- Descriptions are written by sellers and vary in depth from a single line to several paragraphs.
- Expert estimates are absent on a minority of lots, mostly in lower-value categories.
- Closed auctions drop out of search after a period. Scrape an auction while it is open, or on the day it closes, to capture final bids.
- Which specifications exist depends entirely on the category — a watch carries case diameter and movement, a painting carries technique and signature.

***

### Technical details

- **Source:** catawiki.com — curated online auctions across art, watches, jewellery, coins, comics, wine, cars and collectibles
- **Coverage:** all public categories and auctions, in six storefront languages
- **Repost storage:** KeyValueStore `catawiki-scraper-lot-dedup`, 90-day TTL
- **Retry:** automatic retry on network errors with exponential backoff, three attempts per request

***

### Rate this actor

If this scraper does its job, a short review on the **Reviews** tab helps other users find it. Something not working? Open an issue on the **Issues** tab instead — issues get fixed.

***

### Need a custom scraper?

**[Unfenced Group](https://www.unfencedgroup.nl)** builds Apify actors for any website — for free.

If the site you need isn't in our portfolio yet, just ask. We scope, build, and publish it at no cost to you. You only pay for results — we absorb the compute and proxy costs ourselves. Same pay-per-result pricing, same quality, same standards as every actor in this portfolio.

**Get in touch:** [www.unfencedgroup.nl](https://www.unfencedgroup.nl)

# Actor input Schema

## `searchQuery` (type: `string`):

Keyword to search across all Catawiki auctions, for example a brand, artist, model or object type. Leave empty if you are supplying Start URLs instead. Example: rolex submariner

## `startUrls` (type: `array`):

Any Catawiki page addresses to scrape. Four kinds are recognised and handled automatically: a search page (/s?q=...), a category page (/c/333-watches), a whole auction (/a/1263236-...), or a single lot (/l/106613983-...). Apply the filters you want in your browser first, then paste the address here. Example: https://www.catawiki.com/en/c/333-watches

## `filters` (type: `string`):

Optional Catawiki filter expression applied to search and category listings, copied from the part of a Catawiki address that follows 'filters='. Join several clauses with an ampersand. Useful ready-made values: reserve\_price\[]=0 for no-reserve lots only, seller\_location\[]=nl for Dutch sellers, budget\[]=0-500 for a price band, bidding\_end\_days\[]=1 for lots closing within a day. Example: reserve\_price\[]=0\&seller\_location\[]=nl

## `locale` (type: `string`):

Catawiki storefront language. This selects which translated lot titles and descriptions are returned. Example: nl

## `currency` (type: `string`):

Currency for bid amounts and expert estimates. Amounts in all three currencies are also returned in separate fields where Catawiki publishes them. Example: EUR

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

Maximum number of lots to return across all searches and start URLs. Set to 0 for no limit. Example: 250

## `fetchDetails` (type: `boolean`):

Fetch each lot's own page to add current bid, expert estimate, bid history, seller reputation, specifications and the full image gallery. Turn this off for a faster, title-and-image-only listing pass. Example: true

## `includeBidHistory` (type: `boolean`):

Include the list of individual bids on each lot, with amount, timestamp, bidder country and whether the bid was automatic. Requires Fetch full lot details. Example: true

## `maxBidHistory` (type: `integer`):

Largest number of individual bids to keep per lot, newest first. Set to 0 to record only the bid count without the individual bids. Example: 25

## `skipReposts` (type: `boolean`):

Leave out lots that were already returned by an earlier run of this actor, so a scheduled run gives you only what is new. Example: false

## Actor input object example

```json
{
  "searchQuery": "rolex",
  "startUrls": [],
  "filters": "",
  "locale": "en",
  "currency": "EUR",
  "maxResults": 100,
  "fetchDetails": true,
  "includeBidHistory": true,
  "maxBidHistory": 25,
  "skipReposts": false
}
```

# Actor output Schema

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

No description

# 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 = {
    "searchQuery": "rolex",
    "startUrls": [],
    "filters": "",
    "locale": "en",
    "currency": "EUR",
    "maxResults": 100,
    "fetchDetails": true,
    "includeBidHistory": true,
    "maxBidHistory": 25,
    "skipReposts": false
};

// Run the Actor and wait for it to finish
const run = await client.actor("unfenced-group/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 = {
    "searchQuery": "rolex",
    "startUrls": [],
    "filters": "",
    "locale": "en",
    "currency": "EUR",
    "maxResults": 100,
    "fetchDetails": True,
    "includeBidHistory": True,
    "maxBidHistory": 25,
    "skipReposts": False,
}

# Run the Actor and wait for it to finish
run = client.actor("unfenced-group/catawiki-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 '{
  "searchQuery": "rolex",
  "startUrls": [],
  "filters": "",
  "locale": "en",
  "currency": "EUR",
  "maxResults": 100,
  "fetchDetails": true,
  "includeBidHistory": true,
  "maxBidHistory": 25,
  "skipReposts": false
}' |
apify call unfenced-group/catawiki-scraper --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,unfenced-group/catawiki-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/a9u2DjjRBVge0WCtN/builds/hbgklffKzZihBEREC/openapi.json
