# Catawiki Auction Search & Watchlist — Bids and Closing (`jpmarketdata/catawiki-auction-search-watchlist`) Actor

Search Catawiki auctions or monitor exact lot URLs. Get current EUR bids, closing times, reserve status, source estimates and object attributes in clean rows. Multi-keyword pagination and unique-lot billing; bids are not sold prices. Unofficial.

- **URL**: https://apify.com/jpmarketdata/catawiki-auction-search-watchlist.md
- **Developed by:** [h ichi](https://apify.com/jpmarketdata) (community)
- **Categories:** E-commerce, Automation, Developer tools
- **Stats:** 2 total users, 1 monthly users, 87.5% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.50 / 1,000 catawiki auction lot delivereds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

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

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Catawiki Auction Search & Watchlist

> **Unofficial** — independent tool, **not affiliated with, endorsed by, or sponsored by Catawiki**. It reads only publicly visible pages. Support, reliability guarantees and the full disclaimer are at the bottom of this page.

Fetch live Catawiki search results or a list of exact lot URLs with current EUR bids, closing times, reserve state, source expert estimates, and core object attributes. Built for repeated collectors/dealers model searches and auction watchlists. Source estimates are guidance. Bids exclude fees, shipping and taxes, and are not settled sale prices.

### Input

`searchQueries`: 1–5 keywords, default rolex and nikon; `lotUrls`: at most 50 canonical English lot URLs. Set searchQueries to \[] for URL-only use. At least one input must be nonempty. `maxItems`: 1–100 global unique enriched lots, default 10. `maxPagesPerQuery`: 1–5, default 2. The default/canary example collects 10 across two keywords. Only HTTPS www.catawiki.com /en/s?q=...\&page=... and /en/l/<id>-<slug> are permitted. No user, bid, contact, category/facet, tracking or arbitrary URL inputs.

### Output

One type=auction_lot row per unique lotId, containing canonical lotUrl, object title/subtitle, auctionId, currentBidEUR/currency, bidAvailability, closingTime, auctionState, reservePriceSet/reservePriceMet, optional expertEstimateLowEUR/expertEstimateHighEUR, brand/model/referenceNumber/condition, first searchQuery/sourcePage, priceBasis and observedAt. Source specifications are factual labels, not authenticity or condition verification. Explicit watchlist rows have omitted searchQuery and sourcePage 0. Other embedded currency slots are not converted prices. Omit unavailable fields and preserve closed states. Intact auction records with no bid amount are returned with currentBidEUR omitted and bidAvailability no_reported_amount; this is not a failed search. Missing auction/status containers are structure errors. The observed never-bid source uses EUR=0 with an empty bid list; zero is omitted with no_reported_amount, not sold as a current market bid. Closed source status is preserved.

Uncharged OUTPUT records per-search advertised totals, pages/cards scanned, delivered rows, caps and stop reasons. Results use source relevance order; capped results are not a complete or unbiased market census. Lot URLs/IDs support scheduled diffing. No price-history dataset is kept inside the Actor. The source may extend closing times after a late bid.

### Limits and failures

256MB, lightweight HTTP/JSON, no proxy or paid API. Maximum 126 GET attempts including robots, transport fallbacks and 5xx retries, 5MB decompressed per response, 25s/request, 300s/run and >=1s sequential pacing. Each GET may retry HTTP 5xx once on the same transport after a 2s backoff, within the existing attempt and run limits. A repeated 5xx fails before delivery or billing; rate-limit, classified auth-block, not-found, structure/body-budget and timeout failures are never retried. Successful Chrome fallback is remembered only for that host and run after the complete response passes validation. Upstream failure diagnostics include HTTP status and actual attempt count, without source URLs or lot IDs. Source schema/page/ID mismatch, blocks/login/challenges, rate limit, timeout, robots violation and abnormal empty result fail explicitly. Optional missing estimates are omitted. All-source failure or zero rows is never successful. A required failed source is surfaced; it is not silently omitted from the watchlist.

### Privacy and rights

Explicit field whitelist excludes seller names/profiles/contacts, bidder histories or tokens, user/tracking IDs, messages, description, images, raw HTML and state. Current source terms, valid 15 September 2026, restrict copying/distribution; the exact applicable excerpt and DR-0007 guard are in the scout. This Actor is unaffiliated with Catawiki and performs no account action or bidding.

### Pricing

One catawiki-lot-delivered primary event at $0.0015 per unique enriched row actually delivered. No custom start or secondary event and no actor-defined free rows. Platform memory/start charges may still apply. Require the available event allowance to cover maxItems before source work; fail charge-limit if insufficient. Recheck delivery parity, deduplicate before enrichment and billing.

### If something goes wrong

- **Wrong number or a failed run?** Open a ticket on the **Issues** tab. I read every one and reply within 2 business days (Japan time).
- **You never get a fake "empty" result.** If the site can't be read, the run fails and says so.
- **Delivered rows only.** One validated unique row is one billable event. Duplicates, summaries, failed acquisition and undelivered rows are not charged.
- **Checked every week.** An automatic test runs this tool weekly; if the site changes, I fix it.
- **Public source data only.** No login or member/applicant records. Contact patterns are screened before delivery; prose may still name people.

### More tools by the same author

- [Mercari Japan Sold Prices — What Items Really Sell For](https://apify.com/jpmarketdata/mercari-japan-price-checker)
- [Yahoo! Auctions Japan Sold Prices — Median, Range, Bids](https://apify.com/jpmarketdata/yahoo-auction-sold-comps)

All tools (Japan marketplaces, real estate, jobs, racing, prediction markets): <https://apify.com/jpmarketdata>

### Disclaimer

Unofficial, independent tool — **not affiliated with, endorsed by, or sponsored by Catawiki**. Product names and logos belong to their owners and only say where the data comes from. Data is read from public pages, for market research; check before you act on it.

# Actor input Schema

## `searchQueries` (type: `array`):

One to five brands or model phrases. Default Rolex and Nikon. Use an empty array when supplying only lotUrls. Search order is source relevance.

## `lotUrls` (type: `array`):

Up to 50 exact https://www.catawiki.com/en/l/<id>-<slug> URLs, with no query or fragment. Use searchQueries: \[] for URL-only runs. IDs are deduplicated across both inputs.

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

Global delivered/enriched lot cap 1–100, default 10. Charges apply only to delivered unique rows.

## `maxPagesPerQuery` (type: `integer`):

1–5 genuine source pages per keyword, default 2. 24 source lots/page observed. Broad searches are partial; cap and stop reasons are in OUTPUT.

## Actor input object example

```json
{
  "searchQueries": [
    "rolex",
    "nikon"
  ],
  "lotUrls": [],
  "maxItems": 10,
  "maxPagesPerQuery": 2
}
```

# Actor output Schema

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

Validated source records with original links and truthful source limits.

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("jpmarketdata/catawiki-auction-search-watchlist").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("jpmarketdata/catawiki-auction-search-watchlist").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 '{}' |
apify call jpmarketdata/catawiki-auction-search-watchlist --silent --output-dataset

```

## MCP server setup

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

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/xfX1uJJYAq8PwG9zJ/builds/PIbPd6mpJLu2eJoZe/openapi.json
