OTTO API: Produkte und Preise von Otto.de als JSON
OTTO betreibt eine eigene Partner-Schnittstelle für Marktplatzhändler; die zeigt den eigenen Bestand und braucht einen Vertrag. Diese hier liest, was Otto.de öffentlich anzeigt: Artikel, Preise, Verfügbarkeit und die laufenden Aktionen. Kein Konto nötig, die Antwort kommt als JSON.
Endpunkte
| endpoint | Was zurückkommt | Pflicht |
|---|---|---|
| search | Stichwortsuche mit Filtern für Marke, Preis, Bewertung, Zustand und Verfügbarkeit. | query |
| browse | Eine Kategorie-Landingpage durchgehen (etwa moebel oder technik/computer) mit denselben Filtern wie die Suche. | category |
| product | Die Produktdaten eines Artikels über die Variations-id: Name, Marke, Preis in Euro, Zustand und Verfügbarkeit. | id, query |
| deals | Die aktuell laufenden Aktions- und Sale-Kampagnen (Deal des Monats, Super Sale) mit ihren Produkten. | alle optional |
| new_arrivals | Die neuesten Artikel, nach Stichwort oder Kategorie, sortiert nach Neuheiten. | alle optional |
| brands | Die Markenfilter einer Kategorie-Landingpage. Den Slug gibt man anschließend an `search` weiter. | category |
| categories | Der Abteilungsbaum von Otto.de: die obersten Abteilungen und die Unterkategorien einer Abteilung. | alle optional |
| filters | Welche Sortierungen und Filterparameter Suche und Browse tatsächlich unterstützen, mit den zulässigen Werten. | alle optional |
| reviews | Die zusammengefasste Bewertung eines Artikels: Durchschnitt in Sternen und Anzahl der Bewertungen. | id, query |
Jeder Aufruf wird in Credits abgerechnet. Fehlgeschlagene und blockierte Aufrufe sind kostenlos.
Funktionierendes Beispiel
Der Endpunkt filters ist der unauffälligste und spart die meiste Zeit: statt Sortier- und Filterparameter zu raten, fragt man einmal ab, was Otto.de überhaupt annimmt.
curl -X POST https://api.reefapi.com/otto/v1/search \
-H "x-api-key: IHR_SCHLUESSEL" \
-H "content-type: application/json" \
-d '{"query": "kaffeevollautomat", "price_max": 600}'{
"ok": true,
"data": {
"results": [
{
"id": "...",
"name": "...",
"brand": "...",
"price": 549.99,
"currency": "EUR",
"available": true
}
]
},
"meta": { "record_count": 24, "cache_hit": false, "mode": "live" }
}Statt eines eigenen Otto.de-Scrapers
Einen Scraper für Otto.de zu schreiben geht schnell und läuft am Anfang. Was danach kommt, kennt jeder, der es gemacht hat: ändert sich der Aufbau der Kacheln, liefert der Parser eine leere Liste statt eines Fehlers, und bei größeren Durchläufen greift der Bot-Schutz mitten im Lauf.
Hier liegt die Pflege bei uns: bei einer Schemaänderung reparieren wir die Engine, bei einer Blockade kommt ein Fehlercode zurück und der Aufruf wird nicht berechnet.
Für eine einmalige Auswertung ist das eigene Skript günstiger, das sagen wir offen. Für eine Preisbeobachtung, die täglich laufen soll, zahlt man nicht für den Code, sondern für die Ausfälle, die niemand bemerkt.
Grenzen und ehrliche Hinweise
- Das ist nicht die offizielle OTTO-Partnerschnittstelle, und wir haben keine Partnerschaft mit OTTO.
- `product` und `reviews` brauchen neben der id auch den Suchbegriff, weil Otto.de den Artikel nur in diesem Kontext ausliefert.
- Veröffentlicht Otto.de keinen Bestand oder keine Bewertung, kommt das Feld als null zurück.
- Kein Cache: jeder Aufruf zeigt den Stand zum Zeitpunkt der Anfrage.