Catawiki API

Europe's weekly auctions as JSON, with what a lot really costs and whether it sold

The Catawiki API turns catawiki.com, Europe's weekly online auction house for watches, art, jewellery, classic cars, coins, wine and collectibles, into clean JSON in seven actions.

no credit card1,000 free credits · instant API key · pay by card or crypto
Missing a Catawiki endpoint, or need a source we don't have yet?Contact us real people · same-day reply.
C
/catawiki/v1

7 active endpoints. Every call is 1 credit.

  • POST/catawiki/v1/search
  • POST/catawiki/v1/product/detail
  • POST/catawiki/v1/lot/bids
  • POST/catawiki/v1/auction/lots
  • POST/catawiki/v1/category/products
  • POST/catawiki/v1/categories
  • POST/catawiki/v1/suggest

What Catawiki endpoints does ReefAPI ship?

7 live read endpoints. Read-only data API: no writes, no account actions, no dashboard access on the target site.

7 endpoints

search

1 cr

Search open Catawiki lots by keyword.

required
query
optional
category_id, include_fallback_results, page, per_page, sort, reserve, free_shipping, seller_country, closing_date, language, currency, max_rotations

product/detail

1 cr

One Catawiki lot in full, open or closed.

required
lot_id
optional
shipping_country, language, currency, max_rotations

lot/bids

1 cr

The full bid history of one Catawiki lot, newest first.

required
lot_id
optional
currency, max_rotations

auction/lots

1 cr

Every lot of one Catawiki auction, open or already closed, with the auction's title, status a…

required
auction_id
optional
page, per_page, language, currency, max_rotations

category/products

1 cr

Browse the open lots of one Catawiki category with live bids, the same row fields as search,…

required
category_id
optional
page, per_page, sort, reserve, free_shipping, seller_country, closing_date, language, currency, max_rotations, include_sponsored

categories

1 cr

Catawiki's category tree one level at a time.

required
optional
level, parent_id, language, max_rotations

suggest

1 cr

Catawiki's own keyword suggestions for the start of a search term.

required
query
optional
language, max_rotations

Every parameter, every allowed value →

Catawiki API

3 of 7 endpoints, ready to run

View docs ↗

Open Catawiki lots: lot id, title, image, the current bid in EUR, GBP or USD, closing time, reserve set and met, buy-now price, free shipping and the auction id.

1 credit1 required · 3 optional
POST/catawiki/v1/search
ok1310 ms · 24 records · sample
{
  "ok": true,
  "meta": {
    "api": "catawiki",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1310.3,
    "record_count": 24,
    "cache_hit": false
  },
  "data": {
    "query": "rolex",
    "lots": [
      {
        "lot_id": 106643829,
        "title": "Exclusive Line - Jewellery box - High-end cherrywood-finish watch display case for 10 large watches - Cherry wood",
        "subtitle": "Germany - - 2020+",
        "url": "https://www.catawiki.com/en/l/106643829-exclusive-line-jewellery-box-high-end-cherrywood-finish-watch-display-case-for-10-large-watches-cherry-wood",
        "image": "https://assets.catawiki.nl/assets/2026/9/5/1/4/d/14de61f4-6abb-4c45-920a-30bbb59e74a2.jpg",
        "thumbnail": "https://assets.catawiki.nl/assets/2026/9/5/1/4/d/thumb2_14de61f4-6abb-4c45-920a-30bbb59e74a2.jpg",
        "auction_id": 1243367,
        "currency": "EUR",
        "current_bid": 61,
        "has_bids": true,
        "status": "open",
        "is_sold": false,
        "sold_price": null,
        "reserve_price_set": false,
        "reserve_price_met": null,
        "buy_now_price_eur": null,
        "buy_now_available": false,
        "free_shipping": null,
        "start_time": "2026-09-10T16:00:00Z",
        "end_time": "2026-09-16T14:43:15Z",
        "favorite_count": 24,
        "explicit_content": false,
        "bid_state": "ok",
        "rating": null,
        "review_count": null
      },
      {
        "lot_id": 106583525,
        "title": "Legacy - Box - Premium Watch Box – 12 Watches – Ebony Finish – Luxury Storage Case - Wood",
        "subtitle": "Portugal - - 2020+",
        "url": "https://www.catawiki.com/en/l/106583525-legacy-box-premium-watch-box-12-watches-ebony-finish-luxury-storage-case-wood",
        "image": "https://assets.catawiki.nl/assets/2026/3/14/b/1/f/b1f64c43-1fdd-475a-8b9d-eb943de53051.jpg",
        "thumbnail": "https://assets.catawiki.nl/assets/2026/3/14/b/1/f/thumb2_b1f64c43-1fdd-475a-8b9d-eb943de53051.jpg",
        "auction_id": 1246536,
        "currency": "EUR",
        "current_bid": 72,
        "has_bids": true,
        "status": "open",
        "is_sold": false,
        "sold_price": null,
        "reserve_price_set": false,
        "reserve_price_met": null,
        "buy_now_price_eur": null,
        "buy_now_available": false,
        "free_shipping": null,
        "start_time": "2026-09-09T10:00:00Z",
        "end_time": "2026-09-16T14:48:40Z",
        "favorite_count": 41,
        "explicit_content": false,
        "bid_state": "ok",
        "rating": null,
        "review_count": null
      },
      {
        "lot_id": 106642618,
        "title": "Tudor - Prince Date - 79280 - Men - 1998",
        "subtitle": "Automatic - Stainless steel",
        "url": "https://www.catawiki.com/en/l/106642618-tudor-prince-date-79280-men-1998",
        "image": "https://assets.catawiki.nl/assets/2026/6/10/4/1/9/419c051d-1df5-4872-bea4-e7f3427d3416.jpg",
        "thumbnail": "https://assets.catawiki.nl/assets/2026/6/10/4/1/9/thumb2_419c051d-1df5-4872-bea4-e7f3427d3416.jpg",
        "auction_id": 1265511,
        "currency": "EUR",
        "current_bid": 3650,
        "has_bids": true,
        "status": "open",
        "is_sold": false,
        "sold_price": null,
        "reserve_price_set": true,
        "reserve_price_met": false,
        "buy_now_price_eur": null,
        "buy_now_available": false,
        "free_shipping": null,
        "start_time": "2026-09-09T16:00:00Z",
        "end_time": "2026-09-16T18:01:00Z",
        "favorite_count": 48,
        "explicit_content": false,
        "bid_state": "ok",
        "rating": null,
        "review_count": null
      }
    ],
    "count": 24,
    "total_results": 822,
    "page": 1,
    "has_more": true,
    "fallback_results_dropped": 0,
    "corrected_query": false,
    "filters": {
      "sort": "ending_soon",
      "page": 1,
      "per_page": 24
    },
    "language": "en",
    "currency": "EUR"
  }
}
Real response, fetched from the live endpoint with the parameters on the left — trimmed to the first few rows, with seller names left out. Press Try it for the untrimmed response.

How the Catawiki API works

Catawiki is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.

01
Authenticate
x-api-key header

No OAuth app, no request signing, no per-site account. One key covers all 252 engines.

02
Call
POST /catawiki/v1/…

Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.

03
Pay
1 credit per call

Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.

04
Read
{ ok, data, meta, error }

One envelope everywhere. meta carries latency_ms, record_count and the endpoint that answered.

Price a watch on real results, then work out what winning a live lot would cost

An estimate is an opinion and a bid is not the price paid. Closed auctions show what actually sold and what failed its reserve; a live lot only means something with the fee and shipping added.

01search
POST/catawiki/v1/search
{"query": "omega speedmaster", "sort": "ending_soon"}

Open Speedmaster lots closing soonest, with the current bid, reserve status and auction id on every row.

02lots
POST/catawiki/v1/auction/lots
{"auction_id": "<auction_id of a finished watch auction>"}

Every lot of a closed auction with is_sold and sold_price - the sale results to compare against.

03detail
POST/catawiki/v1/product/detail
{"lot_id": "<a lot from the search>", "shipping_country": "de"}

The expert estimate, current bid, reserve met, bid count, the Buyer Protection fee on the bid, shipping to Germany and total_if_won_now.

Live lots, real sale results next to them, and the full cost of the one you want - fee and shipping included - in three calls.

request
curl -X POST https://api.reefapi.com/catawiki/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"rolex","per_page":24}'
response envelope
{
  "ok": true,
  "data": { … },
  "meta": {
    "api": "catawiki",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": …,
    "record_count": …
  },
  "error": null
}

On Catawiki a bid is not what the winner pays, and a closed lot is not always a sale

Every Catawiki lot has a bid, an estimate, a Buyer Protection fee and shipping, and they are four different numbers. A closed lot also has a last bid whether or not it sold: when the reserve price was not met there is no sale. This API keeps each figure in its own field. current_bid is the bid alone, buyer_protection_fee_amount is the fee on it, total_if_won_now adds shipping to the country you name, and sold_price is filled only when Catawiki marks the lot sold.

Lot (checked 2026-09-16)BidWhat the API returnsWhy it matters
Rolex Oysterdate Precision, open lot1,600 EUR current bidfee 147 EUR (9% + 3 EUR), shipping to Germany 25 EUR, total_if_won_now 1,772 EURThe winner pays about 11% more than the bid
Vintage National desk lamp, closed57 EUR last bidis_sold true, sold_price 57 EURA real sale result for price research
Red poppy jasper sphere, closed50 EUR last bidis_sold false, reserve_price_met false, sold_price null, estimate 400-450 EURThe bid never reached the reserve, so nothing sold
Diamond ring, open lotcurrent bidexperts_estimate type retail (Retail Estimate), kept apart from the bidA retail estimate is not what the ring will sell for

Figures are from lots read on 2026-09-15 and 2026-09-16; open-lot bids move with every bid. The fee on every lot measured was 9% plus 3 EUR (3 GBP, 3 USD in those currencies). Shipping is quoted per destination country and changes by country.

Which figures you get, how they are kept apart, and what Catawiki leaves out

catawiki.com only, in any of its 18 languages and in EUR, GBP or USD, with no Catawiki account of yours anywhere in the call. Measured on 2026-09-15 and 2026-09-16 with a 50-case end-to-end run, 91 consecutive live calls across all seven actions and an 8-lot check against the public lot pages. Three of these lines go against us.

Every lot row carries its live bid

search, auction/lots and category/products return the current bid, closing time, reserve status and open or closed state on every row, in the currency you choose. current_bid is null while nobody has bid, never zero.

Bid, fee and shipping are separate, and totalled for you

product/detail returns the Buyer Protection fee as Catawiki publishes it, the fee on the current bid, shipping rates per country and total_if_won_now for the country you name. Checked on 24 lots across six categories: the fee, shipping rates and delivery time were present on 24 of 24.

Closed means ended, sold means sold

A closed lot whose reserve was not met is is_sold false with sold_price null; its last bid stays in last_bid. In one run of 67 consecutive closed lots, 20 had ended below their reserve.

Checked against the public lot page

8 lots across watches, art, jewellery and coins: title, current bid, open or closed, seller name, pro or private, estimate and experts matched the public lot page on 8 of 8.

Every filter and sort was proved on the results

Each published filter narrowed the results in a live test - reserve, free shipping, seller country, category and closing day - and ending_soon came back in closing order. newest follows Catawiki's own publication time, so it is recency, not a strict start-time order.

Against us: no search over closed lots

Catawiki offers no search of finished lots, so neither do we. Sale results come from product/detail on a lot id or auction/lots on an auction id, and very old lots are archived by Catawiki and return not found.

Against us: estimates are not on every lot

The estimate was present on 18 of 24 lots checked; classic cars and automobilia lots had none. Catawiki never shows the reserve price amount, only whether it was met.

Against us: no barcode and no product reviews

No GTIN or EAN is published, and lots have no product reviews, so rating and review_count are null. The reputation that exists is the seller's score and feedback counts.

What people build with Catawiki

The jobs this data is most often used for.

7

endpoints

1

credit per call

01

Watch, art and collectibles dealers price stock from auction/lots on closed auctions and product/detail on closed lots, using what sold and what failed to reach its reserve.

02

Buyers compare the real cost of a lot - bid, Buyer Protection fee and shipping to their own country - before bidding.

03

Market trackers follow a brand or category sorted by ending_soon and read the bid history of the lots that matter.

04

Cross-border resellers watch estimates against current bids to spot lots closing well below their expert range.

What Catawiki data costs

The cheapest call here is 1 credit, so $15/mo (Pro) buys 10,000 of them — $1.50 per 1,000 credits. Credits roll over and never expire, and failed or blocked calls are not charged.

Full pricing →
$0.67–$1.50 / 1,000 credits
  • 1,000 free credits on signup, no card
  • One key, all 252 APIs, one credit pool
  • Failed and blocked calls are never charged
  • Credits roll over and never expire

Call it in two lines

Sign up, get 1,000 credits and one key that works on every engine. Then this is the whole protocol.

curl
curl -X POST https://api.reefapi.com/catawiki/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"query":"rolex","per_page":24}'
python
import requests

r = requests.post(
    "https://api.reefapi.com/catawiki/v1/search",
    headers={"x-api-key": REEF_KEY},
    json={
  "query": "rolex",
  "per_page": 24
},
)
print(r.json()["data"])
FAQ

Have a question? We got answers.

The questions people actually ask before wiring up Catawiki.

Get a free key →
Can I get what Catawiki lots actually sold for?

Yes, for lots Catawiki still serves. product/detail on a closed lot returns is_sold, sold_price when it sold, the last bid, the bid count and whether the reserve was met. auction/lots on a closed auction returns every lot of that auction with the same sold or unsold result - for example 44 lots of a vintage lighting auction that closed on 2026-08-17. Catawiki has no search over closed lots, so this API does not offer one; closed results come from a lot id or an auction id.

Does the bid include the Buyer Protection fee and shipping?

No. current_bid is the bid only. product/detail returns buyer_protection_fee as Catawiki publishes it (9% plus a fixed 3 on every lot measured), buyer_protection_fee_amount for the current bid, shipping rates per country, and total_if_won_now - bid plus fee plus shipping - when you pass shipping_country. It is an estimate for this moment; the bid can still rise.

What does reserve_price_met mean?

Some sellers set a hidden minimum price. reserve_price_met is true once bidding has reached it, false while it has not, and null when the lot has no reserve. Catawiki never shows the reserve amount, so this API does not return one. A lot that closes with reserve_price_met false does not sell: is_sold is false and sold_price is null.

Which currencies and languages are supported?

Bids, estimates, fees and shipping come in EUR, GBP or USD, converted by Catawiki itself. Titles, descriptions, specifications and category names come in any of Catawiki's 18 languages: English, Dutch, German, French, Italian, Spanish, Portuguese, Danish, Swedish, Norwegian, Finnish, Polish, Hungarian, Romanian, Greek, Japanese and simplified or traditional Chinese. Unsupported values are rejected with a clear error.

What is the difference between the estimate and the bid?

experts_estimate is Catawiki's value range for a lot, with min, max and a type: expert for most categories, retail for jewellery (Retail Estimate). It is not a price and not a bid. In the check of 24 lots across six categories on 2026-09-16 the estimate was present on 18; classic cars and automobilia lots carried none.

Why did a search return no results but say fallback_results_dropped?

When Catawiki finds nothing for a keyword it fills the page with unrelated lots instead of saying so. This API drops those rows, returns an empty list and counts them in fallback_results_dropped; include_fallback_results=true returns them separately. A misspelling Catawiki corrects on its own, such as rolx, keeps its genuine Rolex results and sets corrected_query.

Who is the seller and are there reviews?

product/detail returns the seller's name, whether it is a pro or private seller, top-seller status, country, Catawiki's seller score out of 100 with the positive, neutral and negative feedback counts, objects sold and member since. Lots have no product reviews, so rating and review_count are null. Some sellers have no score yet, and score is then null rather than zero.

What does Catawiki NOT publish?

No reserve price amount, no barcode or GTIN, no product reviews, and no search over closed lots. Bidders appear only under Catawiki's own public handles such as Bidder 5192, with their country and bid count. Pickup-only lots have no shipping price.

What is the Catawiki API?

Catawiki API is a ReefAPI endpoint group for europe's weekly online auctions: live bids, expert estimates, reserve status, fees and shipping per country. It returns live JSON through POST requests under /catawiki/v1.

Is the Catawiki API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Catawiki calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Catawiki login or account?

No login to Catawiki is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Catawiki data?

The page example is captured from a live search call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Catawiki API use?

Catawiki actions currently cost 1 credit per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Catawiki from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call catawiki actions with the same key, credit pool and JSON envelope used by normal REST requests.

91 E-commerce & Marketplaces APIs on the same key

One key, one credit pool, one response envelope. If you are pulling Catawiki, you are one call away from the rest of the category — no second contract, no second integration.

Need something this API does not do?

Name the endpoint, the field, or a source we do not carry yet. We ship new APIs every week and you would be first to get the key. Real people read every message and reply the same day.

0/4000

No account needed · we reply from [email protected]

Try it on your own data before you pay anything

The call above is the real endpoint, not a recording. A free key gives you 1,000 credits, the other 251 APIs, and the same envelope everywhere.

Endpoints, parameters and credit costs on this page are read from the live catalog and cannot drift from what the API accepts. Field notes were captured on 2026-09-16.