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.
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.
Catawiki API
3 of 7 endpoints, ready to run
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.
{ "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" } }
How the Catawiki API works
Catawiki is a normal ReefAPI surface — the same four rules that hold for every other engine on the key.
No OAuth app, no request signing, no per-site account. One key covers all 252 engines.
Every route is a POST with a JSON body. Parameters are validated against the published schema before anything is charged.
Credits, not seats. Failed and blocked calls are never charged, and cache hits cost nothing.
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.
{"query": "omega speedmaster", "sort": "ending_soon"}Open Speedmaster lots closing soonest, with the current bid, reserve status and auction id on every row.
{"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.
{"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.
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}'{
"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) | Bid | What the API returns | Why it matters |
|---|---|---|---|
| Rolex Oysterdate Precision, open lot | 1,600 EUR current bid | fee 147 EUR (9% + 3 EUR), shipping to Germany 25 EUR, total_if_won_now 1,772 EUR | The winner pays about 11% more than the bid |
| Vintage National desk lamp, closed | 57 EUR last bid | is_sold true, sold_price 57 EUR | A real sale result for price research |
| Red poppy jasper sphere, closed | 50 EUR last bid | is_sold false, reserve_price_met false, sold_price null, estimate 400-450 EUR | The bid never reached the reserve, so nothing sold |
| Diamond ring, open lot | current bid | experts_estimate type retail (Retail Estimate), kept apart from the bid | A 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.
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.
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.
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.
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.
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.
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.
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.
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.
endpoints
credit per call
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.
Buyers compare the real cost of a lot - bid, Buyer Protection fee and shipping to their own country - before bidding.
Market trackers follow a brand or category sorted by ending_soon and read the bid history of the lots that matter.
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 →- 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 -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}'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"])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.
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.