Catawiki API: Lose, Gebote und Käuferkosten von catawiki.com/de als JSON
Auf Catawiki laufen jede Woche Auktionen für Uhren, Kunst, Schmuck, Münzen, Oldtimer und Sammlerstücke, mit Verkäufern und Bietern aus ganz Europa. Die API zeigt diese Auktionen so, wie ein Bieter aus Deutschland sie sieht: Mit `"language": "de"` kommen Titel, Spezifikationen und Kategorien in Catawikis eigener deutscher Fassung (etwa „Märklin H0 Modelleisenbahnen“), Beträge in Euro. Zu jedem Los gehören das aktuelle Gebot, die Zahl der Gebote, das nächste Mindestgebot, die Schlusszeit und die Frage, die viele zuerst stellen: Was kostet mich das als Käufer? Mit `"shipping_country": "de"` rechnet `product/detail` Gebot, Käuferschutzgebühr und Versand nach Deutschland zu einem Betrag zusammen. Eine Verkäufer- oder Partnerschnittstelle von Catawiki ist das nicht. Objekte einliefern, Lose bearbeiten oder mitbieten geht darüber nicht; abgefragt wird nur, was jeder Besucher auf catawiki.com/de sehen kann.
Endpunkte
| endpoint | Was zurückkommt | Pflicht |
|---|---|---|
| search | Offene Lose zu einem Suchbegriff: lot_id, Titel, Untertitel, aktuelles Gebot (null, solange niemand geboten hat), `has_bids`, Schlusszeit, ob ein Mindestpreis gesetzt und ob er erreicht ist, Sofortkauf-Preis in Euro und die auction_id. Filter: Kategorie, mit/ohne Mindestpreis, kostenloser Versand, Land des Verkäufers, Schlusstag; Sortierung `relevance`, `ending_soon` oder `newest`. 24 Lose pro Seite, höchstens 100. | query |
| product/detail | Ein Los vollständig, laufend oder beendet: Beschreibung des Verkäufers und Catawikis automatische Übersetzung, Spezifikationen, Fotos, Schätzwert des Experten oder Neupreis-Schätzung (falls vorhanden), aktuelles oder letztes Gebot, nächstes Mindestgebot, verkauft ja/nein, Käuferschutzgebühr, Versandpreise für jedes Land, Lieferzeit, Zahlungsarten und die letzten zehn Gebote. Mit `shipping_country` zusätzlich `total_if_won_now`. | lot_id |
| lot/bids | Der ganze Gebotsverlauf eines Loses, das neueste Gebot zuerst: Betrag, Zeitpunkt, Land des Bieters und das öffentliche Pseudonym, unter dem Catawiki ihn anzeigt („Bidder“ plus Nummer), dazu die Zahl seiner Gebote insgesamt. | lot_id |
| auction/lots | Sämtliche Lose einer Auktion samt Titel, Status und Schlusszeit der Auktion. Auch nach dem Ende abrufbar; dann steht pro Los, ob es verkauft wurde und zu welchem Zuschlag. | auction_id |
| category/products | Die laufenden Lose einer Kategorie, etwa 395 für Märklin H0 Modelleisenbahnen, mit denselben Zeilen, Filtern und Sortierungen wie `search`. Gesponserte Platzierungen werden herausgenommen und in `sponsored_dropped` gezählt. | category_id |
| categories | Catawikis Kategoriebaum Ebene für Ebene (16 Hauptbereiche, 80 Kategorien, rund 310 Unterkategorien), jeweils mit der Zahl der gerade laufenden Auktionen. | alle optional |
| suggest | Die Vorschläge, die Catawikis Suchfeld zum Anfang eines Begriffs macht. | query |
Jeder Aufruf wird in Credits abgerechnet. Fehlgeschlagene und blockierte Aufrufe sind kostenlos.
Funktionierendes Beispiel
Was ein Los am Ende kostet, steht nicht im Gebot. Für die Märklin-Lok unten stand das Höchstgebot beim Abruf bei 160 €. Dazu kommen die Käuferschutzgebühr von 9 % plus 3 € (17,40 €) und 13 € Versand nach Deutschland, zusammen 190,40 € in `total_if_won_now`. Angeboten wird das Los von einem gewerblichen Verkäufer aus den Niederlanden; nach Österreich wären es 21 € Versand gewesen. Seine Beschreibung ist niederländisch, die deutsche Fassung in `auto_translated_description` stammt von Catawikis automatischer Übersetzung. Zeiten kommen in UTC: 20:39:20Z war am 26. Oktober 21:39 Uhr deutscher Zeit.
curl -X POST https://api.reefapi.com/catawiki/v1/product/detail \
-H "x-api-key: IHR_API_SCHLUESSEL" \
-H "content-type: application/json" \
-d '{"lot_id": 107805362, "shipping_country": "de", "language": "de"}'{
"ok": true,
"data": {
"item": {
"lot_id": 107805362,
"title": "Märklin H0 - 3600 - Elektrolokomotive (1) - Märklin Modelleisenbahn-Lokomotive 3600 H0 Dreier-Set 'Fotoanstrich' DRG - Digital",
"subtitle": "Wechselstrom/Digital - Guter Zustand - In Originalverpackung",
"language": "de",
"status": "open",
"is_sold": false,
"currency": "EUR",
"current_bid": 160,
"bid_count": 18,
"next_minimum_bid": 170,
"reserve_price_met": null,
"experts_estimate": null,
"buyer_protection_fee": { "percentage": 9, "fixed": 3, "currency": "EUR" },
"buyer_protection_fee_amount": 17.4,
"total_if_won_now": 190.4,
"end_time": "2026-10-26T20:39:20Z",
"auction_id": 1288385,
"category": { "id": 395, "url": "https://www.catawiki.com/de/c/395-marklin-h0-modelleisenbahnen", "level": 2 },
"description": "Deze locomotief verkeert in redelijke/goede staat. ...",
"auto_translated_description": "Diese Lokomotive befindet sich in einem recht guten Zustand. ...",
"specifications": [
{ "name": "Maßstab", "value": "H0", "specification_id": 967, "value_id": 61954 },
{ "name": "Katalognummer", "value": "3600", "specification_id": 992, "value_id": null },
{ "name": "Stromversorgung", "value": "Wechselstrom", "specification_id": 938, "value_id": 61963 },
...
],
"seller": { "type": "pro", "country": { "code": "nl", "name": "Niederlande" }, ... },
"shipping": {
"destination": { "code": "de", "name": "Deutschland", "price": 13, "available": true, "currency": "EUR" },
"rates": [
{ "country_code": "at", "country": "Österreich", "price": 21, "currency": "EUR" },
{ "country_code": "be", "country": "Belgien", "price": 12, "currency": "EUR" },
...
],
"delivery_days": { "from": 5, "to": 7 },
"payment_methods": ["MasterCard", "Visa", "Apple Pay", "Google Pay", "PayPal", "Überweisung"]
},
"recent_bids": [ ... ],
...
},
"auction": {
"auction_id": 1288385,
"title": "Märklin H0 Modelleisenbahnen-Auktion",
"status": "closes_today",
"lot_count": 120,
...
}
},
"meta": { "record_count": 1, "charged_credits": 1, "cache_hit": false, "mode": "live" }
}Catawiki-Scraper selbst bauen: wo die Zahlen still kippen
Catawikis Oberfläche holt ihre Daten aus mehreren internen JSON-Routen, und die rechnen nicht alle in derselben Einheit. Versandpreise und der feste Teil der Käuferschutzgebühr kommen in Cent (2500 sind 25,00 €, 300 sind 3,00 €), Gebote, Schätzwerte und Sofortkauf-Preise dagegen in ganzen Euro. Wer alles gleich behandelt, liegt bei den Nebenkosten um den Faktor 100 daneben. Die API rechnet die Cent-Werte vorher um, sodass alle Beträge in der Antwort in Euro statt Cent stehen.
Bei den Filtern sind wir beim Bau auf zwei Stellen gestoßen, an denen Catawiki einen Filter stillschweigend übergeht: Hängt der Parameter `exclude_aggregations=true` an der Suche, wirkt kein einziger Filter mehr. „rolex“ mit dem Filter „ohne Mindestpreis“ ergab so 816 Treffer statt der 179, die ohne diesen Parameter herauskamen. Und werden die eckigen Klammern im Filternamen URL-kodiert (`%5B%5D`), kommen ebenfalls die ungefilterten 816. Die Engine setzt den Parameter deshalb nur bei Suchen ohne Filter und schreibt die Klammern unkodiert.
Auch ein Versandpreis von 0 bedeutet nicht immer „kostenlos“. Bei einem beendeten Los stand für Großbritannien `rate: 0` zusammen mit `is_available: false`: dorthin wird gar nicht verschickt. In der Antwort ist der Preis in so einem Fall null und `available` false.
Keiner dieser drei Fälle wirft eine Exception oder liefert einen HTTP-Fehler. Auffallen tun sie erst, wenn jemand die Zahlen mit der Losseite vergleicht: Nebenkosten, die hundertmal zu hoch sind, eine Trefferzahl, die sich trotz Filter nicht ändert, oder Gratisversand in ein Land, in das gar nicht verschickt wird.
Weitere Dokumentation auf Deutsch
- idealo API — Dokumentation
- AutoScout24 API — Dokumentation
- mobile.de API — Dokumentation
- Kleinanzeigen API — Dokumentation
- Immowelt API — Dokumentation
- OTTO API — Dokumentation
- willhaben API — Dokumentation
- MediaMarkt API — Dokumentation
- Zalando API — Dokumentation
- Amazon API (amazon.de) — Dokumentation
- Zara API — Preise Deutschland
- Cardmarket API — Dokumentation
- AliExpress API — Dokumentation
- Vinted API — Dokumentation
Grenzen und ehrliche Hinweise
- Catawiki hat mit dieser API nichts zu tun: Sie ist kein offizieller Zugang des Auktionshauses, und wir arbeiten nicht mit Catawiki zusammen.
- Den Mindestpreis selbst kann man auch hier nicht einsehen, weil Catawiki die Höhe nicht veröffentlicht. Die API sagt nur, ob ein Los einen hat (`reserve_price_set`) und ob er erreicht ist (`reserve_price_met`). Von den 24 Märklin-Treffern hatte keiner einen Mindestpreis.
- Eine Suche nach beendeten oder verkauften Losen gibt es nicht; `search` zeigt nur laufende. Ergebnisse kommen pro Auktion über `auction/lots` oder pro Los über `product/detail`.
- Die Suchzeilen enthalten keine Versandkosten. `free_shipping` war in allen 24 Märklin-Zeilen null, und der Sofortkauf-Preis steht dort nur in Euro (`buy_now_price_eur`). Versand und Gesamtbetrag liefert erst `product/detail`.
- Viele Verkäufer schreiben in ihrer eigenen Sprache. Mit `language: de` ist die Beschreibung trotzdem die Originalfassung (im Beispiel niederländisch), die deutsche steht daneben als maschinelle Übersetzung. Einzelne Spezifikationen bleiben so, wie der Verkäufer sie eingegeben hat: „Zusätzliche Info“ war im Beispiel englisch.
- Nicht jedes Los hat einen Schätzwert; bei der Märklin-Lok oben war `experts_estimate` null.
- Beträge gibt es in EUR, GBP oder USD (`currency`). Schweizer Franken sind nicht darunter; wer aus der Schweiz bietet, rechnet selbst um.
- Ohne Filter kommen Lose aus allen Ländern. Nur Verkäufer aus Deutschland liefert `"seller_country": "DE"`: Von 810 Märklin-Treffern blieben damit 91.
- Jeder Endpunkt kostet 1 Credit pro Aufruf.
- Ein Gebot in der Antwort ist eine Momentaufnahme. Wer verfolgen will, wie sich ein Los bis zum Zuschlag entwickelt, fragt es in Abständen erneut ab; den bisherigen Verlauf liefert `lot/bids`.