Looking for the overview — what this API returns, what it costs, and a call you can run without a key? See the Catawiki API page →
E-commerce & Marketplaces

Catawiki API & Scraper

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 actionsLive JSON1,000 free credits$0.67–$1.50 / 1,000 creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

search returns open lots by keyword with the lot id, title, image, the current bid in EUR, GBP or USD, whether anyone has bid, the closing time, whether a reserve price is set and met, the buy-now price, free shipping and the auction id, filtered by category, reserve, free shipping, seller country and closing day and sorted by relevance, ending soon or newest. product/detail returns one lot in full, open or closed: description, every image, specifications such as brand, model, condition and year, the expert or retail estimate, the current or final bid, bid count, next minimum bid, reserve met, sold or not, the Buyer Protection fee and what it comes to on the current bid, shipping rates per country with delivery time and the total if won now for your country, the seller's name, pro or private status, score, feedback counts, objects sold and country, the curating experts and the last ten bids. lot/bids gives the full bid history, auction/lots lists every lot of an auction including closed ones with their sold or unsold result, category/products and categories browse the catalogue, and suggest returns Catawiki's own keyword suggestions. Verification on 2026-09-16 checked 8 lots across watches, art, jewellery and coins against the public lot page: title, current bid, open or closed, seller name, pro status, estimate and the experts matched on 8 of 8. No Catawiki account, no browser - one ReefAPI key and the standard { ok, data, meta, error } envelope.

Reference

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.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/catawiki/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "query": "rolex",
    "per_page": 24
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "catawiki",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 1420.6,
    "record_count": 24,
    "bytes": 32059,
    "cache_hit": false,
    "bid_state": "ok",
    "pagination": {
      "page": 1,
      "has_more": true,
      "page_size": 24,
      "total": 822
    }
  },
  "data": {
    "query": "rolex",
    "lots": [
      {
        "lot_id": 106723305,
        "title": "Rolex - Oysterdate Precision - No reserve price - 6694 - Men - 1972",
        "subtitle": "Manual winding - Stainless steel",
        "url": "https://www.catawiki.com/en/l/106723305-rolex-oysterdate-precision-no-reserve-price-6694-men-1972",
        "image": "https://assets.catawiki.nl/assets/2026/9/9/a/0/e/a0e773e9-3d1b-4079-af43-50faf4b82987.jpg",
        "thumbnail": "https://assets.catawiki.nl/assets/2026/9/9/a/0/e/thumb2_a0e773e9-3d1b-4079-af43-50faf4b82987.jpg",
        "auction_id": 1263236,
        "currency": "EUR",
        "current_bid": 1700,
        "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-11T10:00:00Z",
        "end_time": "2026-09-20T18:49:44Z",
        "favorite_count": 138,
        "explicit_content": false,
        "bid_state": "ok",
        "rating": null,
        "review_count": null
      },
      {
        "lot_id": 106767025,
        "title": "Rolex - Datejust - 16233 - Men - 1990-1999",
        "subtitle": "Automatic - Gold/Steel",
        "url": "https://www.catawiki.com/en/l/106767025-rolex-datejust-16233-men-1990-1999",
        "image": "https://assets.catawiki.nl/assets/2026/9/10/8/1/c/81cbf519-0839-461d-91a8-d51f253abc41.jpg",
        "thumbnail": "https://assets.catawiki.nl/assets/2026/9/10/8/1/c/thumb2_81cbf519-0839-461d-91a8-d51f253abc41.jpg",
        "auction_id": 1263181,
        "currency": "EUR",
        "current_bid": 5000,
        "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-11T16:00:00Z",
        "end_time": "2026-09-17T18:54:05Z",
        "favorite_count": 46,
        "explicit_content": false,
        "bid_state": "ok",
        "rating": null,
        "review_count": null
      },
      {
        "lot_id": 106488791,
        "title": "Rolex - Oyster Perpetual Datejust - No reserve price - Ref. 16233 - Men - 1993",
        "subtitle": "Automatic - Steel, Yellow gold",
        "url": "https://www.catawiki.com/en/l/106488791-rolex-oyster-perpetual-datejust-no-reserve-price-ref-16233-men-1993",
        "image": "https://assets.catawiki.nl/assets/2026/9/1/3/f/6/3f69315f-202c-4f45-8d11-b45a7dd3016d.jpg",
        "thumbnail": "https://assets.catawiki.nl/assets/2026/9/1/3/f/6/thumb2_3f69315f-202c-4f45-8d11-b45a7dd3016d.jpg",
        "auction_id": 1263236,
        "currency": "EUR",
        "current_bid": 4800,
        "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-11T10:00:00Z",
        "end_time": "2026-09-20T18:23:56Z",
        "favorite_count": 66,
        "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": "relevance",
      "page": 1,
      "per_page": 24
    },
    "language": "en",
    "currency": "EUR"
  }
}
Actions

What the Catawiki API does

ActionDescriptionConcrete use caseKey params
searchSearch open Catawiki lots by keyword: lot id, title, image, the current bid in EUR, GBP or USD, whether anyone has bid, closing time, reserve price set and met, buy-now price, free shipping and the auction id. Filter by category, reserve, free shipping, seller country and closing day; sort by relevance, ending soon or newest. Unrelated padding shown for keywords with no results is dropped and counted.Pricing teams call search to search open Catawiki lots by keyword.query, category_id, include_fallback_results, page, per_page, ...
product/detailOne Catawiki lot in full, open or closed: title, description, every image, specifications (brand, model, condition, year…), the expert or retail estimate, the current or final bid, bid count, next minimum bid, reserve met, sold or not, buy-now price, the Buyer Protection fee and the fee on the current bid, shipping rates per country (and the total if won now for your country), delivery time, the seller (pro or private, score, feedback counts, objects sold, country), the curating experts and the last 10 bids.Marketplace operators call product/detail to get one Catawiki lot in full, open or closed.lot_id, shipping_country, language, currency, max_rotations
lot/bidsThe full bid history of one Catawiki lot, newest first: amount in EUR, GBP or USD, time, the bidder's public pseudonym and country, and how many bids that bidder has placed on Catawiki.Catalog enrichment teams call lot/bids to get the full bid history of one Catawiki lot, newest first.lot_id, currency, max_rotations
auction/lotsEvery lot of one Catawiki auction, open or already closed, with the auction's title, status and closing time and each lot's current or final bid, sold flag, reserve status and buy-now price - a closed auction is a list of real sale results.Retail analysts call auction/lots to get every lot of one Catawiki auction, open or already closed, with the auction's title, status a….auction_id, page, per_page, language, currency, ...
category/productsBrowse the open lots of one Catawiki category with live bids, the same row fields as search, and the same reserve, free shipping, seller country and closing day filters and sorts.Pricing teams call category/products to get browse the open lots of one Catawiki category with live bids, the same row fields as search,….category_id, page, per_page, sort, reserve, ...
categoriesCatawiki's category tree one level at a time: id, name, parent, link and how many auctions each category is running.Marketplace operators call categories to get catawiki's category tree one level at a time.level, parent_id, language, max_rotations
suggestCatawiki's own keyword suggestions for the start of a search term.Catalog enrichment teams call suggest to get catawiki's own keyword suggestions for the start of a search term..query, language, max_rotations
Code samples

Call search from your stack

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}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.catawiki.search with {"query":"rolex","per_page":24}.
Use cases

Who uses this API and why

  • 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.
FAQ

Questions developers ask before integrating

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.

docs / catawiki

Catawiki

Europe's weekly online auctions: live bids, expert estimates, reserve status, fees and shipping per country.

base /catawiki/v17 endpoints
post/catawiki/v1/product/detail1 credit

One Catawiki lot in full, open or closed: title, description, every image, specifications (brand, model, condition, year…), the expert or retail estimate, the current or final bid, bid count, next minimum bid, reserve met, sold or not, buy-now price, the Buyer Protection fee and the fee on the current bid, shipping rates per country (and the total if won now for your country), delivery time, the seller (pro or private, score, feedback counts, objects sold, country), the curating experts and the last 10 bids.

ParameterAllowed / rangeDescription
lot_idrequiredCatawiki lot id - the number in /l/<id>-<slug>. A full lot URL works.
shipping_countryoptionalTwo-letter country code to quote shipping and the total cost for. Default: the shipping rates for every country are returned without a total.
language = enoptionalen · nl · de · fr · it · es · pt · da · sv · no · fi · pl · hu · ro · el · ja · zh-Hans · zh-HantLanguage of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.
currency = EURoptionalEUR · GBP · USDCurrency for bids, estimates, fees and shipping. Catawiki converts from EUR itself.
max_rotations = 3optional1–5Advanced: how many times to retry a difficult request (1-5).
Try in playground →
post/catawiki/v1/lot/bids1 credit

The full bid history of one Catawiki lot, newest first: amount in EUR, GBP or USD, time, the bidder's public pseudonym and country, and how many bids that bidder has placed on Catawiki.

ParameterAllowed / rangeDescription
lot_idrequiredCatawiki lot id - the number in /l/<id>-<slug>. A full lot URL works.
currency = EURoptionalEUR · GBP · USDCurrency for bids, estimates, fees and shipping. Catawiki converts from EUR itself.
max_rotations = 3optional1–5Advanced: how many times to retry a difficult request (1-5).
Try in playground →
post/catawiki/v1/auction/lots1 credit

Every lot of one Catawiki auction, open or already closed, with the auction's title, status and closing time and each lot's current or final bid, sold flag, reserve status and buy-now price - a closed auction is a list of real sale results.

ParameterAllowed / rangeDescription
auction_idrequiredCatawiki auction id - the number in /a/<id>-<slug>; every lot row returns it.
page = 1optional1–10000Result page, 1-based. A page past the end returns an empty list.
per_page = 24optional1–100Lots per page, 1-100 (default 24, as on the site).
language = enoptionalen · nl · de · fr · it · es · pt · da · sv · no · fi · pl · hu · ro · el · ja · zh-Hans · zh-HantLanguage of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.
currency = EURoptionalEUR · GBP · USDCurrency for bids, estimates, fees and shipping. Catawiki converts from EUR itself.
max_rotations = 3optional1–5Advanced: how many times to retry a difficult request (1-5).
Try in playground →
post/catawiki/v1/category/products1 credit

Browse the open lots of one Catawiki category with live bids, the same row fields as search, and the same reserve, free shipping, seller country and closing day filters and sorts.

ParameterAllowed / rangeDescription
category_idrequiredCatawiki category id - the number in /c/<id>-<slug>; `categories` lists them.
page = 1optional1–10000Result page, 1-based. A page past the end returns an empty list.
per_page = 24optional1–100Lots per page, 1-100 (default 24, as on the site).
sort = relevanceoptionalrelevance · ending_soon · newestOrder. Only orderings measured to change the results are accepted.
reserveoptionalwith_reserve · no_reserveOnly lots with, or without, a reserve price.
free_shippingoptionalOnly lots with free shipping everywhere.
seller_countryoptionalOnly lots whose seller is in these countries (two-letter codes, comma-separated).
closing_dateoptionalOnly lots closing on these days (YYYY-MM-DD, comma-separated).
language = enoptionalen · nl · de · fr · it · es · pt · da · sv · no · fi · pl · hu · ro · el · ja · zh-Hans · zh-HantLanguage of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.
currency = EURoptionalEUR · GBP · USDCurrency for bids, estimates, fees and shipping. Catawiki converts from EUR itself.
max_rotations = 3optional1–5Advanced: how many times to retry a difficult request (1-5).
include_sponsored = falseoptionalCatawiki can promote lots on category pages. They are dropped by default and counted in sponsored_dropped; true returns them with sponsored: true.
Try in playground →
post/catawiki/v1/categories1 credit

Catawiki's category tree one level at a time: id, name, parent, link and how many auctions each category is running.

ParameterAllowed / rangeDescription
level = 0optional0–2Category tree level: 0 top categories (16), 1 categories (80), 2 sub-categories (~310).
parent_idoptionalOnly categories directly under this one.
language = enoptionalen · nl · de · fr · it · es · pt · da · sv · no · fi · pl · hu · ro · el · ja · zh-Hans · zh-HantLanguage of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.
max_rotations = 3optional1–5Advanced: how many times to retry a difficult request (1-5).
Try in playground →
post/catawiki/v1/suggest1 credit

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

ParameterAllowed / rangeDescription
queryrequiredThe start of a keyword.
language = enoptionalen · nl · de · fr · it · es · pt · da · sv · no · fi · pl · hu · ro · el · ja · zh-Hans · zh-HantLanguage of titles, descriptions, specifications and category names (Catawiki's own translations). Lots are the same in every language.
max_rotations = 3optional1–5Advanced: how many times to retry a difficult request (1-5).
Try in playground →