Temu API: Produkte und Euro-Preise aus dem deutschen Temu-Shop als JSON
Die API ruft den deutschen Temu-Shop ohne Anmeldung ab und liefert pro Treffer Titel, Preis in Euro, den durchgestrichenen Vergleichspreis, wie oft sich der Artikel verkauft hat, Sterne und Bewertungszahl. Für einzelne Produkte kommen die Varianten mit eigenem Preis und Bestand dazu, die Merkmale aus dem Datenblatt und der Kategoriepfad in deutscher Sprache. Ob Temu-Preise gestiegen sind oder je nach Variante abweichen, zeigt erst der Vergleich: dieselben Produkte (`goods_id`) an mehreren Tagen abfragen und die Antworten nebeneinanderlegen. Verkäufer, die bei Temu Produkte einstellen oder Bestellungen bearbeiten, finden hier nichts: Die Schnittstelle hat keinen Zugang zu Händlerkonten und liest nur die öffentliche Shopseite. Den deutschen Shop wählt `"market": "de"`, und das bei jedem einzelnen Aufruf.
Endpunkte
| endpoint | Was zurückkommt | Pflicht |
|---|---|---|
| search | Die erste Ergebnisseite zu einem Suchbegriff, bis zu 40 Produkte: goods_id, sku_id der angezeigten Variante, Titel, Preis als Zahl und so, wie der Shop ihn schreibt („33,42€“), Streichpreis (`normal_price`), die Verkaufsangabe („4.2K+ verkauft“), Sterne, Bewertungszahl, Marke (falls Temu sie zeigt), Bild und URL. `max_results` (1–40) kürzt nur die Liste. | query |
| product/detail | Das komplette Produkt zu einer goods_id oder Temu-URL: alle Varianten (SKU) mit Preis, Bestand (`stock_quantity`), Kaufgrenze und Ausprägung (etwa „Farbe: Schwarz“), Preisspanne, Bilder und Videos, Sterne, Bewertungszahl, verkaufte Menge, Marke, Kategoriepfad („Haushalt & Küche › Kleingeräte & Zubehör“) und die Produktmerkmale wie Nennleistung, Steckertyp, Herkunft oder „WEEE-Reg.-Nr. DE“. Ausverkaufte Angebote kommen mit `sold_out: true` und Temus eigenem Hinweistext. | alle optional |
Jeder Aufruf wird in Credits abgerechnet. Fehlgeschlagene und blockierte Aufrufe sind kostenlos.
Funktionierendes Beispiel
Den Streichpreis fanden wir nur in der Suche. Für die 6-Liter-Fritteuse zeigt die Trefferkarte 33,42 € statt 48,58 €; in `product/detail` derselben Variante ist `normal_price` dagegen gleich dem Preis, 33,42 €. Beim zweiten geprüften Produkt war es genauso (Streichpreis auf der Karte 36,49 €, im Detail gleich dem Preis). Wer Rabatte auswerten will, speichert den Vergleichspreis also aus `search`. Die Detailseite liefert dafür, was die Karte nicht hat: 568 Stück Bestand für diese Variante, Kaufgrenze 99, und als Herkunft „Guangdong, China“.
curl -X POST https://api.reefapi.com/temu/v1/search \
-H "x-api-key: IHR_API_SCHLUESSEL" \
-H "content-type: application/json" \
-d '{"query": "Heißluftfritteuse", "market": "de", "max_results": 12}'{
"ok": true,
"data": {
"query": "Heißluftfritteuse",
"market": "de",
"currency": "EUR",
"results": [
{
"goods_id": "604126524099094",
"sku_id": "56884694412535",
"title": "Heißluftfritteuse 9 L Doppelkammer XXL Fritteuse mit 2 Körben, 9 Programme, Smart Finish, beschichtet",
"url": "https://www.temu.com/goods.html?goods_id=604126524099094",
"price": 46.24,
"price_display": "46,24€",
"normal_price": 61.27,
"currency": "EUR",
"sales_text": "186 verkauft",
"rating": 4.9,
"review_count": 18,
"brand": null
},
{
"goods_id": "601100109324831",
"sku_id": "17594767319853",
"title": "Heißluftfritteuse, 6 Liter, Heißluftfritteuse, digitaler LED-Touchscreen, Sichtfenster, 6 Gargänge, Vorheizen Warmhalten, ölfrei, 1400 W",
"url": "https://www.temu.com/goods.html?goods_id=601100109324831",
"price": 33.42,
"price_display": "33,42€",
"normal_price": 48.58,
"currency": "EUR",
"sales_text": "4.2K+ verkauft",
"rating": 4.6,
"review_count": 1191,
"brand": "OYAJIA"
},
...
]
},
"meta": {
"record_count": 12,
"charged_credits": 4,
"cache_hit": false,
"mode": "live"
}
}Temu-Scraper von GitHub: drei Stellen, an denen er scheitert, ohne abzustürzen
Am 18. September 2026 gegen 10:00 UTC fielen bei uns Produktdaten und Suche gleichzeitig auf null. Bei den Produktseiten lag es an einem zusätzlichen Fehlerblock, den Temu jeder Seite mitgab (`errorCode 3000000`, „error params“). Er betraf nur den Seitenrahmen mit Kopf- und Fußzeile, die Produktdaten selbst waren vollständig. Unsere Engine wertete aber jeden Fehlerblock als Abbruch und warf damit gute Daten weg. Produktdaten und Suche liefen noch am selben Tag wieder; seitdem entscheidet bei Produktseiten nur noch ein Fehler in der eigentlichen Produktabfrage. Ein Scraper, der jeden Fehlerhinweis auf der Seite als Abbruch liest, verliert an so einem Tag alles; einer, der Fehlerhinweise ganz übergeht, speichert umgekehrt leere Seiten als Produkte.
Die zweite Stelle ist eine Produkt-ID, die nicht existiert. Temu antwortet darauf mit einer normalen Seite und dem Code 49001 („GOODS_NOT_EXIST“). Unsere Engine hielt das anfangs für eine Sperre und versuchte es fünfmal; ein Kunde wartete so 19,5 Sekunden auf TARGET_BLOCKED. Heute ist das ein NOT_FOUND, das nicht berechnet und nicht wiederholt wird.
Die dritte ist am schwersten zu sehen: Code 49001 gilt pro Shop. Eine ID aus dem US-Shop und eine ausgedachte ID ergeben im deutschen Shop dieselbe Antwort, die Seite selbst kann beides nicht unterscheiden. Seit dem 21. September 2026 schaut die Engine in so einem Fall in einem zweiten Shop nach und meldet dann `not_sold_in_market` oder `goods_not_exist`. Für Abgleichslisten mit IDs aus mehreren Ländern ist das der Unterschied zwischen „hier nicht im Sortiment“ und „gibt es nicht“.
Abgestürzt wäre ein selbst geschriebener Scraper in keinem dieser Fälle. Er hätte vollständige Seiten verworfen, Sperren gemeldet, wo keine waren, oder Produkte als verschwunden geführt, die nur in einem anderen Land verkauft werden.
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
- Catawiki API — Dokumentation
- eBay API für ebay.de
- Autodoc API — Ersatzteile und Preise
- ricardo.ch API — Schnittstelle
Grenzen und ehrliche Hinweise
- Temu hat diese Schnittstelle weder gebaut noch genehmigt; sie ist kein offizieller Temu-Zugang, und eine Zusammenarbeit mit Temu besteht nicht.
- `market` steht standardmäßig auf `us`. Wer den Parameter vergisst, bekommt Dollarpreise aus dem amerikanischen Shop.
- Die Suche liefert nur die erste Ergebnisseite, höchstens 40 Produkte; `page` größer als 1 wird abgelehnt. Ein Aufruf kostet 4 Credits, gleich ob `max_results` 12 oder 40 ist. `product/detail` kostet ebenfalls 4 Credits.
- Die Trefferkarten enthalten keinen Bestand. Den gibt es nur in `product/detail`, und zwar je Variante.
- Eine Marke stand bei „Adventskalender“ nur auf 11 von 40 Karten. In `product/detail` steht sie, wenn das Datenblatt eine Zeile „Markenname“ hat.
- Die Verkaufsangabe ist Temus gerundeter Text („4.2K+ verkauft“). `sold_quantity` in `product/detail` ist dieselbe gerundete Zahl (4200), keine genaue Stückzahl.
- Versandkosten, Lieferzeit und Paketgewicht zeigt Temu auf der Produktseite ohne Anmeldung nicht; die Felder fehlen oder sind null. `weight` ist nur gefüllt, wenn das Datenblatt eine Gewichtszeile hat. Jede Detailantwort weist in `price_note` darauf hin, dass Aktions- und Variantenpreise vom Betrag an der Kasse abweichen können.
- Produkt-IDs sind über alle Länder gleich nummeriert, das Sortiment aber nicht. Die ID 607146892696891 aus dem US-Shop ergab mit `market` de NOT_FOUND mit dem Grund `not_sold_in_market`, ohne Berechnung. IDs für Deutschland holt man sich deshalb aus einer Suche mit `"market": "de"`.
- `product/detail` braucht unterschiedlich lange: Unsere vier Abrufe dauerten zwischen 3,2 und 37,3 Sekunden. Der erste endete mit TARGET_BLOCKED (nicht berechnet), der zweite Versuch für dasselbe Produkt lieferte die Daten. Bei einem Fehler mit `retryable: true` lohnt sich ein erneuter Versuch.
- In den Varianten steht `price_display` im englischen Format („€33.42“), im Kopf des Produkts im deutschen („33,42€“). Zum Rechnen immer die Zahl in `price` nehmen.
- Jeder Aufruf liest Temu neu; frühere Preise hält die API nicht vor.