API

Catawiki API: kavels, biedingen en veilinguitslagen als JSON

Alles wat een bieder op catawiki.com te zien krijgt — het hoogste bod, het aantal biedingen, wanneer de kavel sluit, de schatting van de expert, of de reserveprijs gehaald is — levert deze API als JSON, zonder in te loggen. Verkopers die kavels willen aanbieden of beheren, hebben er niets aan: er wordt niet meegeboden en niets online gezet, alleen gelezen wat openbaar op de site staat, vanuit de koper gezien en op het moment van de aanroep. Met `"language": "nl"` komen titels, specificaties en categorienamen in de Nederlandse vertaling van Catawiki zelf; bedragen zijn standaard in euro, en via `currency` ook in pond of dollar.

Endpoints

endpointWat je terugkrijgtVerplicht
searchLopende kavels op trefwoord: titel, actueel bod, of er al geboden is, sluitingstijd, reserveprijs ingesteld en gehaald, de prijs om direct te kopen, gratis verzending en het veiling-id. Filters op categorie, reserve, gratis verzending, land van de verkoper en sluitingsdag; sorteren op relevantie, binnenkort sluitend of nieuwste. Standaard 24 kavels per pagina, maximaal 100.query
product/detailEén kavel volledig, open of gesloten: beschrijving (ook in automatische vertaling), specificaties, foto's, de schatting van de expert of de winkelwaarde, actueel of laatste bod, aantal biedingen, minimaal volgend bod, verkocht of niet, de kosten voor kopersbescherming, verzendtarieven per land, de betaalmethoden (zoals iDEAL | Wero) en de laatste 10 biedingen. Met `shipping_country` ook het totaal als je de kavel nu zou winnen.lot_id
lot/bidsDe volledige biedgeschiedenis van één kavel, nieuwste eerst: bedrag, tijdstip en land van de bieder. Bieders staan erin onder het nummer dat Catawiki zelf toont, niet onder een naam.lot_id
auction/lotsAlle kavels van één veiling, ook nadat die gesloten is, met titel, status en sluitingstijd van de veiling. Van een gesloten veiling krijg je zo de echte uitslag: per kavel verkocht of niet, en tegen welk bod.auction_id
category/productsDe lopende kavels van één categorie (bijvoorbeeld 157, Hergé / Kuifje strips) met dezelfde velden, filters en sorteringen als search. Gesponsorde plaatsingen worden weggelaten en apart geteld.category_id
categoriesDe categorieboom, één niveau per keer: 16 hoofdcategorieën, 80 categorieën en ongeveer 310 subcategorieën, elk met het aantal veilingen dat er nu loopt.allemaal optioneel
suggestDe zoeksuggesties van Catawiki zelf bij het begin van een zoekterm.query

Elke aanroep kost credits. Mislukte en geblokkeerde aanroepen zijn gratis.

Werkend voorbeeld

Het bod is niet wat je betaalt. Op deze Kuifje-kavel stond het hoogste bod op € 30; daar komen de kosten voor kopersbescherming bij (9% + € 3 = € 5,70) en € 18 verzending naar Nederland, samen € 53,70 in `total_if_won_now`. Dat totaal rekent de API alleen uit voor kavels die nog open zijn, en alleen als je `shipping_country` meegeeft. Zonder land krijg je wel alle tarieven, maar geen totaal.

Verzoek
curl -X POST https://api.reefapi.com/catawiki/v1/product/detail \
  -H "x-api-key: JOUW_SLEUTEL" \
  -H "content-type: application/json" \
  -d '{"lot_id": 106704692, "shipping_country": "nl", "language": "nl"}'
Antwoord (ingekort)
{
  "ok": true,
  "data": {
    "item": {
      "lot_id": 106704692,
      "title": "Tintin Potiche Lotus Bleu musical - Trousselier - 1993",
      "subtitle": "Hergé - Zeer goed - Met de originele doos",
      "status": "open",
      "is_sold": false,
      "currency": "EUR",
      "current_bid": 30,
      "bid_count": 10,
      "next_minimum_bid": 35,
      "reserve_price_met": null,
      "experts_estimate": null,
      "buyer_protection_fee": { "percentage": 9, "fixed": 3, "currency": "EUR" },
      "buyer_protection_fee_amount": 5.7,
      "total_if_won_now": 53.7,
      "end_time": "2026-10-28T18:53:00Z",
      "auction_id": 1283068,
      "category": { "id": 1559, "url": "https://www.catawiki.com/nl/c/1559-herge-kuifje-stripfiguurbeeldjes-en-merchandise", "level": 2 },
      "attributes": { "condition": "Zeer goed", "material": "Hout", "year": 1993, ... },
      "shipping": {
        "destination": { "code": "nl", "name": "Nederland", "price": 18, "available": true, "currency": "EUR" },
        "rates": [
          { "country_code": "at", "country": "Oostenrijk", "price": 18, "currency": "EUR" },
          { "country_code": "be", "country": "België", "price": 15, "currency": "EUR" },
          { "country_code": "de", "country": "Duitsland", "price": 20, "currency": "EUR" },
          ...
        ],
        "delivery_days": { "from": 5, "to": 10 },
        "payment_methods": ["iDEAL | Wero", "MasterCard", "Visa", "Apple Pay", "Google Pay", "Bankoverboeking"]
      },
      ...
    },
    "auction": {
      "auction_id": 1283068,
      "title": "Hergé / Kuifje stripfiguurbeeldjes en merchandise-veiling",
      "status": "open_now",
      "close_time": "2026-10-28T18:00:00Z",
      "lot_count": 66,
      ...
    }
  },
  "meta": { "record_count": 1, "cache_hit": false, "mode": "live" }
}

Catawiki zelf uitlezen: valkuilen in de cijfers

In de zoekresultaten van Catawiki zelf staat geen bod en geen sluitingstijd; die zitten in een aparte biedroute. Wij halen voor elke pagina de biedstand van alle kavels in één keer op en koppelen die aan de rijen. Ook daar zit een addertje: een kavel waarop nog niemand heeft geboden, staat in die route met een bod van 1, in elke valuta. Hier is `current_bid` dan null en `has_bids` false, zodat een gemiddelde opbrengst niet volloopt met kavels van één euro.

Zoek je op iets dat niet bestaat, dan antwoordt Catawiki niet met nul resultaten maar met 21 tot 24 willekeurige kavels die je 'misschien ook leuk vindt', met een totaal van dezelfde grootte. Een scraper telt die als treffers. De engine herkent die opvulling aan de signalen die de site zelf meestuurt, laat ze weg en meldt het aantal in `fallback_results_dropped`. Een tikfout die Catawiki zelf verbetert, zoals 'rolx', levert gewoon de echte Rolex-kavels op.

Gesloten is niet hetzelfde als verkocht. In de Muranoglasveiling die op 18 oktober 2026 sloot, waren alle 68 kavels gesloten maar 43 verkocht; bij de andere 25 was de reserveprijs niet gehaald. Wie het laatste bod van een gesloten kavel opslaat als verkoopprijs, telt die 25 als verkopen mee. Hier is `sold_price` alleen ingevuld bij een echte verkoop, en `is_sold` zegt welke het zijn.

Wil je een prijsoverzicht opbouwen, bijvoorbeeld van Kuifje-beeldjes, dan kom je er met zoeken alleen niet: zoeken toont uitsluitend lopende kavels. Bewaar daarom het `auction_id` dat elke zoekrij al meegeeft, en vraag na de sluitingsdatum de uitslag van die veiling op met auction/lots.

Grenzen en eerlijke kanttekeningen

  • Catawiki is geen partij bij deze API: we zijn geen partner van Catawiki en dit is niet hun officiële interface.
  • Een zoekopdracht over gesloten of verkochte kavels bestaat niet; een filter op 'gesloten' negeert Catawiki. Uitslagen komen per veiling (auction/lots) of per kavel (product/detail).
  • Hoe hoog de reserveprijs is, publiceert Catawiki niet. Je ziet alleen of er een is en of die gehaald is (`reserve_price_met`, null als er geen reserve is).
  • Niet elke kavel heeft een schatting. Bij klassieke auto's ontbrak `experts_estimate` in 4 van de 4 gemeten kavels, en bij de twee Kuifje-kavels die we voor deze pagina opvroegen was het veld ook null.
  • Titels zijn niet altijd helemaal Nederlands. Met `language: nl` bleef in de zoekopdracht 'kuifje' een deel van de titels Frans ('Tintin - Présentoir Tintin - 1 Promotionele display - 1991'). Naast de beschrijving van de verkoper staat een automatische vertaling in `auto_translated_description`.
  • Tijden staan in UTC. De kavel hierboven sluit om 18:53Z, op 28 oktober is dat 19:53 uur in Nederland; in de zomertijd scheelt het twee uur.
  • Oude kavels worden gearchiveerd (lot 90000000 gaf NOT_FOUND), en niet elk veilingnummer bestaat: 1278000 gaf NOT_FOUND, 1276500 een gesloten veiling. Gebruik het `auction_id` uit de rijen in plaats van zelf nummers op te hogen.
  • Biedstanden worden bij elke aanroep opnieuw bij Catawiki opgevraagd; er zit geen bewaarde kopie tussen.