Temu-Produktdaten als JSON Auslesen mit dem Temu-Plugin
Temu ist eine der am schwersten zu scrapenden großen E-Commerce-Websites, und der Grund ist struktureller Natur. Wenn du eine Temu-Produktseite im Browser ladst, ist das ankommende HTML fast leer. Kein Produktname im Quelltext, kein Preis, keine Bewertung - nur eine Hulle. Alles, was du auf dem Bildschirm siehst, wird danach uber eine clientseitige Anfrage nachgeladen, und diese Anfrage ist darauf ausgelegt, Automatisierung abzulehnen. Richte einen normalen HTTP-Client oder einen Headless-Browser darauf, und du bekommst entweder eine leere Seite oder eine Challenge.
Deshalb geben viele Temu nach einem Nachmittag mit requests, Playwright und rotierenden Proxys auf, die trotzdem nichts Brauchbares liefern. Die Daten sind auf dem Bildschirm zu sehen, aber nicht im Dokument, und der API-Aufruf, der sie einfullt, will nicht mit deinem Skript reden.
Das Temu-Plugin lost genau dieses Problem. Du sendest eine Produkt-URL und bekommst sauberes JSON zuruck: Name, Preis und Wahrung, Verfugbarkeit, Bewertung, Anzahl der Rezensionen, Bilder und mehr. Dieser Beitrag erklart, warum Temu so umstandlich zu scrapen ist, welchen Ansatz das Plugin nutzt, welche zwei Endpunkte es bietet und wie du etwas Nutzliches darauf aufbaust.
Warum Temu Schwer zu Scrapen Ist
Die meisten Scraping-Anleitungen gehen vom klassischen Modell aus: URL anfragen, HTML zuruckbekommen, Felder mit CSS-Selektoren oder XPath herausparsen. Dieses Modell bricht bei Temu gleich auf drei Arten zusammen.
- Das HTML ist eine Hulle. Produktdaten werden nicht serverseitig in die Seite gerendert. Sie werden nach dem Laden im Client nachgeladen, sodass das rohe Dokument, das du herunterladst, die gewunschten Felder nicht enthalt.
- Der Nachlade-Aufruf lehnt Automatisierung ab. Die interne Anfrage, die die Seite fullt, pruft, ob sie von einer echten, interaktiven Browser-Session kommt. Ein nackter HTTP-Client scheitert daran, und selbst ein Headless-Browser stolpert uber Fingerprinting, sofern er nicht sorgfaltig getarnt ist.
- Der Zugriff ist gedrosselt. Temu drosselt aggressiv alles, was wie ein Crawler aussieht. Du kannst schnell IPs verbrennen und trotzdem gegen Wande laufen.
Zusammengenommen bedeutet das, dass die beiden naheliegenden Ansatze beide steckenbleiben. Ein simples requests bekommt eine leere Hulle. Ein vollstandiger Headless-Browser kann die Seite manchmal rendern, ist aber langsam, schwer und wird bei Skalierung trotzdem per Fingerprinting erkannt und blockiert.
Der Ansatz: Das Crawler-Dokument Lesen
Es gibt ein Detail uber große E-Commerce-Websites, das man leicht ubersieht: Sie wollen bei Google auftauchen. Um zu ranken, mussen sie etwas ausliefern, das ein Suchmaschinen-Crawler lesen kann, denn der Googlebot fuhrt nicht denselben interaktiven Client-Ablauf aus wie ein Kaufer. Also enthalt die Seite einen strukturierten ld+json-Block - ein JSON-LD-Dokument nach dem schema.org-Product-Vokabular, das an Crawler gerichtet ist.
Dieses SEO-Dokument tragt die echten Felder: Name, Beschreibung, Preis und Wahrung, Verfugbarkeit, Artikelzustand, Bewertung, Anzahl der Rezensionen, die Variantengruppe, die Bildliste, Bewertungen pro Rezension und ein Produktvideo, falls vorhanden. Es sind dieselben Daten, die die Seite einem Menschen zeigt, nur maschinenlesbar formatiert, und sie hangen nicht von dem clientseitigen Nachladen ab, das die Automatisierung blockiert.
Das Temu-Plugin liest dieses Crawler-Dokument, statt zu versuchen, die Seite zu rendern. Fur dich heißt das schlicht: kein Headless-Browser, keine Proxy-Rotation, kein Fingerprint-Feintuning. Du rufst einen Endpunkt auf und bekommst strukturiertes JSON.
Das ist auch eine Technik, die sich fur sich genommen zu verstehen lohnt. Bei vielen Websites, die unmoglich zu scrapen aussehen, liefert dir ein Blick in den Quelltext nach einem <script type="application/ld+json">-Block oder nach strukturierten, an Crawler gerichteten Daten saubere Felder, die das gerenderte DOM verbirgt. Das ist das Erste, was man ausprobieren sollte, bevor man zum Browser greift.
Zwei Endpunkte: Produkt und Suche
Das Plugin hat zwei Teile:
- Produkt - eine Produkt-URL rein, vollstandiges JSON raus.
- Suche - ein Stichwort rein, eine Liste von Temu-Produkt-URLs raus, direkt von Temus eigener Suchseite.
Sie sind dafur gedacht, zusammen genutzt zu werden: suche, um Produkt-URLs zu entdecken, und lose dann jede URL mit dem Produkt-Endpunkt zu ihren vollstandigen Daten auf.
Jede Anfrage authentifiziert sich uber einen Header, x-scrapeunblocker-key, der deinen API-Schlussel tragt.
Ein Einzelnes Produkt Abrufen
Der Produkt-Endpunkt ist ein POST an /goods/temu-product mit der Produkt-url. Die URL muss eine echte Produktseite sein - ihr Pfad endet auf -g-<id>.html. Such- oder Kategorie-URLs werden mit einem 400 abgelehnt.
curl -X POST "https://api.scrapeunblocker.com/goods/temu-product?url=https%3A%2F%2Fwww.temu.com%2Fexample-g-601099512345678.html" \
-H "x-scrapeunblocker-key: YOUR_API_KEY"
Die Antwort ist ein flaches JSON-Objekt:
{
"url": "https://www.temu.com/example-g-601099512345678.html",
"name": "822pcs Spaceship Building Blocks Set",
"description": "Shop the 822pcs Spaceship Building Blocks Set on Temu ...",
"sku": null,
"brand": "Temu",
"price": "49.04",
"priceCurrency": "USD",
"availability": "https://schema.org/InStock",
"rating": 4.6,
"reviewCount": 871,
"itemCondition": "https://schema.org/NewCondition",
"variantGroupId": "601099512345678",
"images": ["https://img.kwcdn.com/product/fancy/xxxx.jpg"],
"reviews": [
{ "rating": 5.0, "date": "2026-07-08", "author": "****", "body": "****" }
],
"video": null
}
Einige Felder verdienen einen Hinweis, weil sie die Realitat dessen widerspiegeln, was Temu ins Crawler-Dokument stellt, und keine Wunschliste:
priceist ein String, genau so ausgeliefert, wie Temu ihn formatiert, undpriceCurrencyist der ISO-Code. Die Wahrung folgt der Region der Ausgangs-IP, sodass dasselbe Produkt alsUSD,EURoderAEDzuruckkommen kann. Wenn du Preise speicherst, halte die Wahrung neben der Zahl und normalisiere spater.availabilityunditemConditionsind schema.org-URLs, etwahttps://schema.org/InStockundhttps://schema.org/NewCondition. Vergleiche uber das letzte Pfadsegment statt uber den kompletten String.imagestragt nur ein oder zwei URLs, nicht die volle Galerie. Das Crawler-Dokument enthalt nicht jedes Bild, das das Kaufer-Karussell zeigt.reviewsgibt dir eine echteratingunddatepro Rezension, aber Temu maskiertauthorundbody- sie kommen als****zuruck. Du bekommst die Verteilung und Aktualitat der Rezensionen, nicht den Text.variantGroupIdverknupft Varianten desselben Artikels, nutzlich, wenn du einen Katalog entduplizierst.
Nach Stichwort Suchen
Der Such-Endpunkt nimmt ein keyword und liefert pro Aufruf etwa 40 Produkt-URLs, gezogen aus Temus eigenen Suchergebnissen.
curl -X POST "https://api.scrapeunblocker.com/goods/temu-search?keyword=kids%20toys&limit=40&sort=price_asc" \
-H "x-scrapeunblocker-key: YOUR_API_KEY"
{
"keyword": "kids toys",
"sort": "price_asc",
"resultsCollected": 40,
"urls": [
"https://www.temu.com/lt-en/kids-educational-building-blocks-set-g-601099613072998.html",
"https://www.temu.com/lt-en/water-elf-set-g-601104298893637.html"
]
}
Die Suche dient nur der Entdeckung - sie liefert dir saubere Produkt-URLs, jede endet auf -g-<id>.html, bereit zur Ubergabe an den Produkt-Endpunkt. Du steuerst sie uber drei Parameter:
keyword- die Suchphrase, etwakids toysoderphone case.limit- wie viele URLs zuruckkommen, Standard40, Maximum100. Eine Suchseite tragt rund 40 Ergebnisse.sort- die Ergebnisreihenfolge nach Temus eigener Sortierung:relevance(Standard),best_selling,recent,price_ascoderprice_desc. Das geschieht serverseitig, also wird die gesamte Ergebnismenge sortiert, nicht nur die erhaltene Seite umgeordnet.
Alles Zusammen in Python
Das naturliche Muster ist suchen, dann auflosen. Suche nach einem Stichwort, nimm die URLs und rufe jedes Produkt ab. Hier ist ein kleines Skript, das die gunstigsten Angebote fur ein Stichwort holt und Preis, Bewertung und Name ausgibt:
import requests
from urllib.parse import quote
BASE = "https://api.scrapeunblocker.com"
HEADERS = {"x-scrapeunblocker-key": "YOUR_API_KEY"}
def temu_search(keyword, limit=40, sort="relevance"):
url = f"{BASE}/goods/temu-search?keyword={quote(keyword)}&limit={limit}&sort={sort}"
r = requests.post(url, headers=HEADERS, timeout=60)
r.raise_for_status()
return r.json()["urls"]
def temu_product(product_url):
url = f"{BASE}/goods/temu-product?url={quote(product_url, safe='')}"
r = requests.post(url, headers=HEADERS, timeout=60)
r.raise_for_status()
return r.json()
urls = temu_search("kids toys", limit=20, sort="price_asc")
for u in urls[:10]:
p = temu_product(u)
print(f"{p['price']} {p['priceCurrency']} {p['rating']}* {p['name'][:60]}")
Da die Felder normalisiert zuruckkommen, ist die interessante Logik deine Sache - nicht die Selektor-Pflege.
Rate-Limit und Fehler Behandeln
Die Crawler-Ansicht von Temu ist gedrosselt, deshalb ist dieses Plugin fur gezielten Einsatz gebaut - Preisprufungen, Monitoring und Vergleich - nicht fur Massen-Crawling. Plane das von Anfang an ein.
429bedeutet, dass das gemeinsame Temu-Rate-Budget aufgebraucht ist. Warte kurz und versuche es dann erneut, statt zu hammern. Baue eine kurze Pause und ein paar Wiederholungen mit exponentiellem Backoff in deine Schleife ein.400bedeutet, dass die URL keine Produktseite war. Stelle sicher, dass der Pfad auf-g-<id>.htmlendet.502bedeutet, dass das Dokument nicht abgerufen werden konnte - eine Blockade oder ein leeres Ergebnis. Versuche es einmal erneut; halt es an, ist das Produkt vielleicht verschwunden.504ist ein Timeout. Erneut versuchen.
Eine einfache Regel: halte dein Anfragevolumen maßvoll, cache, was du bereits abgerufen hast, und rufe nur Produkte erneut ab, deren Preis oder Verfugbarkeit du wirklich verfolgen musst.
Was du Bauen Kannst
Sobald die Temu-Daten sauberes JSON sind, lassen sich mehrere Werkzeuge schnell bauen:
- Preis-Monitoring - rufe ein Produkt nach Zeitplan ab, speichere
priceundavailabilityund alarmiere, wenn sich eines andert. - Wettbewerbsrecherche - suche ein Stichwort fur rund 40 URLs, lose jede auf und vergleiche Preise, Bewertungen und Rezensionszahlen uber die Menge.
- Katalog-Anreicherung - wenn du bereits Temu-Produkt-URLs hast, lose sie zu sauberen Feldern (Name, Preis, Bewertung, Bilder) auf, um deinen eigenen Katalog anzureichern.
Jedes davon ist das Plugin plus ein wenig eigene Logik, ohne Scraping-Infrastruktur, die gewartet werden muss.
FAQ
Brauche ich einen Browser oder Proxys, um Temu zu scrapen? Nein. Das Plugin liest Temus strukturiertes Crawler-Dokument, statt die Seite zu rendern, also gibt es auf deiner Seite keinen Headless-Browser und keine Proxy-Rotation. Du rufst einen HTTP-Endpunkt mit deinem API-Schlussel auf.
Warum ist die Wahrung fur dasselbe Produkt manchmal anders?
Temu-Preise folgen der Region der Ausgangs-IP, sodass derselbe Artikel USD, EUR oder AED zuruckgeben kann. Speichere immer priceCurrency neben price und rechne spater um, falls du eine einzige Wahrung brauchst.
Warum sind Rezensent und Text der Bewertungen verborgen?
Temu maskiert author und body der Rezension im Crawler-Dokument, sie kommen also als **** zuruck. Die rating und date pro Rezension sind echt, was fur Bewertungstrends und Aktualitat reicht, aber nicht fur die Stimmung im Text.
Kann ich Temu damit im großen Stil crawlen?
Nein. Der Endpunkt ist gedrosselt und liefert 429, wenn das gemeinsame Budget aufgebraucht ist. Er ist fur gezielte Abfragen gedacht - Monitoring, Vergleich und Anreicherung - nicht fur das Crawlen ganzer Kataloge.
Wie bekomme ich Produktdaten aus einer Suche? Die Suche liefert nur URLs. Nimm jede URL und ubergib sie dem Produkt-Endpunkt, um Name, Preis, Bewertung, Bilder und den Rest zu erhalten.
Fazit
Temu verdient seinen Ruf als schweres Ziel: die Daten sind auf dem Bildschirm, aber nicht im Dokument, und der Aufruf, der die Seite fullt, ist darauf ausgelegt, Automatisierung abzulehnen. Das Temu-Plugin umgeht das, indem es die strukturierten Daten liest, die Temu ohnehin an Crawler ausliefert, sodass du Name, Preis, Bewertung, Rezensionen und Bilder als sauberes JSON aus einer einzigen Anfrage bekommst.
Wenn du es ausprobieren willst, fuhre zuerst eine Abfrage im Dashboard aus, um das JSON zu sehen, und binde es dann anhand der Entwicklerdokumentation in deinen Code ein. Es ist eines aus einer wachsenden Reihe gebrauchsfertiger Plugins auf ScrapeUnblocker, die Websites, die sonst echte Scraping-Arbeit erfordern wurden, in einen einzigen strukturierten Aufruf verwandeln.
ScrapeUnblocker kostenlos testen
Über 95 % Erfolgsquote · ab 0,55 € pro 1.000 Aufrufe · 500 kostenlose Anfragen bei der Registrierung.