Tony Wang7 Min. LesezeitWish 2026 scrapen (API & Python)
Wish 2026 scrapen – Produktsuche & Volldetails mit Preisen, Variationen und Merchant-Daten als JSON – DIY, No-Code oder strukturierte API.
Der schnellste Weg, Wish 2026 zu scrapen, ist der Aufruf einer strukturierten API, die normalisiertes JSON für die Produktsuche per Stichwort und vollständiges Detail pro Produkt liefert — statt Wishs eigene Seiten zu parsen. Wish (betrieben von ContextLogic Inc.) ist ein anderes Tier als ein Direktanbieter wie Costco oder Target: Es ist ein Discount-Marktplatz, aufgebaut auf Drittanbieter-Merchants, extrem niedrigen Preisen und langen Versandzeiten von größtenteils Überseeverkäufern — das bedeutet, dasselbe Produkt kann unter mehreren Merchants zu mehreren Preisen auftauchen. Dieser Guide deckt DIY-Python, No-Code-Tools und eine strukturierte Wish-API ab, plus was du tatsächlich sammeln kannst und die rechtlichen Grundlagen.
Warum Wish scrapen?
- Merchant-Preisvergleich — Wishs Marktplatz-Modell bedeutet, dass dasselbe Produkt von mehr als einem Merchant zu unterschiedlichen Preisen gelistet sein kann; das Abrufen von Suchergebnissen und Produkt-Detail lässt dich das nebeneinanderstellen, statt einem einzelnen Listing zu vertrauen.
- Discount-Preisrecherche — verfolgen, wie sich Preise auf einem Marktplatz bewegen, der auf aggressiver Niedrigpreis-Positionierung aufgebaut ist, über Kategorien oder Stichwort-Themen hinweg.
- Variations- und Bestandstracking — jede kaufbare Größen-/Farb-/Merchant-Kombination trägt ihren eigenen Preis, ihre eigene Währung und ihren eigenen Bestand, sodass du beobachten kannst, wie eine bestimmte Variation abweicht oder ausverkauft, unabhängig vom Rest des Listings.
- Bewertungs- und Rezensions-Monitoring — die Gesamtbewertung und Rezensionszahl eines Produkts für Stimmungs- oder Qualitätssignal-Recherche über die Zeit abrufen.
- KI-Pipelines und Agenten — normalisiertes Such- und Detail-JSON in einen Sourcing- oder Preisvergleichs-Agenten einspeisen, statt Produktkarten abzugrasen.
Ist es legal, Wish zu scrapen?
Option 1: DIY in Python (und warum das scheitert)
Ein naiver Scraper lädt eine Such- oder Produktseite und versucht, Listing-Karten aus dem gerenderten Markup zu ziehen:
import requests
from bs4 import BeautifulSoup
resp = requests.get(
"https://www.wish.com/search/wireless%20earbuds",
headers={"User-Agent": "Mozilla/5.0 (compatible; research-bot/1.0)"},
)
soup = BeautifulSoup(resp.text, "html.parser")
# Product cards, pricing, and variations render from client-side app
# state rather than stable server HTML, so a plain HTML parse mostly
# returns an empty shell
Es funktioniert einmal in der Demo, dann bricht es:
- Produkt-IDs sind nicht erratbar. Eine Wish-Produkt-ID ist ein 24-Zeichen-Hex-String — du bekommst eine zuverlässige nur aus dem
product_id-Feld eines Suchtreffers oder durch Extraktion aus einer Produktseiten-URL, nicht aus CSS-Selektoren, die sich mit jedem Redesign verschieben. - Clientseitig gerenderter App-State. Suchergebnisse und Produkt-Detail — einschließlich der Preis-/Währungs-/Bestands-/Merchant-Aufschlüsselung pro Variation — rendern aus JavaScript-State, nicht aus Markup, das du zuverlässig selektieren kannst.
- Variationen sind verschachtelt, nicht flach. Ein einzelnes Produkt kann viele kaufbare Größen-/Farb-/Merchant-Kombinationen tragen, jede mit eigenem Preis und Bestand — das korrekt aus gerendertem HTML zu parsen bedeutet, die interne Datenstruktur der App zurückzuentwickeln.
- Marktplatz-Anti-Automatisierung. Wie die meisten großen Marktplätze wehrt sich Wishs Frontend gegen wiederholte, nicht authentifizierte automatisierte Requests — ein browserbasierter Scraper braucht laufende Pflege, während sich die Abwehr weiterentwickelt.
- Keine sanktionierte Self-Serve-API für externe Entwickler. Es gibt kein öffentliches Developer-Portal, um als Drittanbieter programmatischen Katalogzugriff zu beantragen — genau die Lücke, die eine strukturierte Scraping-API füllt.
Option 2: No-Code-Tools
Browser-Erweiterungen und Point-and-Click-Scraper können eine einzelne Suchseite oder einen Produkt-Snapshot exportieren, aber sie erben dieselbe clientseitige Rendering-Fragilität wie DIY und geben dir kein stabiles, versioniertes Schema — Merchant-Preise für dasselbe Produkt über einen Zeitplan hinweg zu vergleichen braucht einen echten Endpoint, keinen Einmal-Export.
Option 3: Eine strukturierte Wish-API
Für einen wiederholbaren Workflow liefert Crawloras Wish-API normalisiertes JSON für Stichwortsuche und vollständiges Produkt-Detail — auf Wish-Seite ohne Zugangsdaten, kein Seiten-Parsing zu pflegen. Suche nach Stichwort:
curl "https://api.crawlora.net/api/v1/wish/search?query=wireless+earbuds" \
-H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"total": 4200,
"offset": 0,
"count": 30,
"products": [
{
"product_id": "5f2e1a9c7b6d4f3e2a1b0c9d",
"title": "Wireless Bluetooth Earbuds with Charging Case",
"price": 6.99,
"currency": "USD",
"rating": 4.1,
"review_count": 2318,
"merchant_id": "5a1e0d2f7c3b9e4a1f0d2c8b",
"url": "https://www.wish.com/product/5f2e1a9c7b6d4f3e2a1b0c9d"
}
]
}
}
query ist erforderlich. Pagination ist echte offset-basierte Paginierung: offset muss ein exaktes Vielfaches von count sein (der Standard-count ist 30), und ein von Null verschiedener Offset kostet einen zusätzlichen Upstream-Request pro durchlaufener Seite — kalkuliere das ein, wenn du tief in eine Ergebnismenge blätterst. Eine Anfrage ohne Treffer liefert weiterhin ein normales 200 mit einem leeren products-Array, keinen Fehler.
Löse eine product_id aus einem Suchtreffer (oder aus einer Produktseiten-URL) auf und hol vollständiges Detail, einschließlich jeder kaufbaren Variation:
import requests
h = {"x-api-key": "YOUR_API_KEY"}
base = "https://api.crawlora.net/api/v1/wish"
hits = requests.get(f"{base}/search", headers=h, params={"query": "wireless earbuds"}).json()["data"]["products"]
product_id = hits[0]["product_id"]
detail = requests.get(f"{base}/product/{product_id}", headers=h).json()["data"]
Eine Produkt-Detail-Antwort führt Beschreibung, Ausverkauft-Status, Gesamtbewertung, Bilder und jede kaufbare Größen-/Farb-/Merchant-Variation mit — jede mit eigenem Preis, eigener Währung, eigenem Bestand und Merchant (echte Felder — prüfe die docs):
{
"code": 200,
"msg": "OK",
"data": {
"product_id": "5f2e1a9c7b6d4f3e2a1b0c9d",
"title": "Wireless Bluetooth Earbuds with Charging Case",
"description": "True wireless earbuds with touch controls and a portable charging case.",
"sold_out": false,
"rating": 4.1,
"review_count": 2318,
"images": [
"https://canary.contestimg.wish.com/api/webimage/5f2e1a9c-large.jpg"
],
"variations": [
{
"variation_id": "6a3f2b1c9d8e7f6a5b4c3d2e",
"color": "Black",
"price": 6.99,
"currency": "USD",
"inventory": 143,
"merchant": { "id": "5a1e0d2f7c3b9e4a1f0d2c8b", "name": "TechDeals Direct" }
},
{
"variation_id": "7b4a3c2d1e0f9a8b7c6d5e4f",
"color": "White",
"price": 8.49,
"currency": "USD",
"inventory": 0,
"merchant": { "id": "3c1d0e9f2a7b6c5d4e3f2a1b", "name": "GadgetHub Global" }
}
]
}
}
Das ist der Merchant-Vergleichs-Use-Case in einem Aufruf: zwei Variationen derselben Ohrhörer, von zwei verschiedenen Merchants, zu zwei verschiedenen Preisen und Bestandsständen. Speichere eine Zeile pro product_id + variation_id und hol sie nach Zeitplan erneut ab, um price, inventory und sold_out-Drift zu verfolgen.
Was du sammeln kannst
- Suchergebnisse:
product_id, Titel, Preis, Währung, Gesamtbewertung, Rezensionszahl, Merchant-ID und Produkt-URL, paginiert mit echter Offset-/Count-Pagination - Produkt-Detail: Beschreibung, Ausverkauft-Status, Gesamtbewertung, Rezensionszahl und Bilder
- Variationen: jede kaufbare Größen-/Farb-/Merchant-Kombination, jede mit eigener
variation_id, Preis, Währung, Bestand und Merchant
Das sind öffentliche Produktseiten-Daten — Suchergebnisse und Produkt-Detail, bereits für jeden Besucher sichtbar — keine Konto-, Bestell-, Checkout- oder Zahlungsinformationen.
Einschränkungen und häufige Herausforderungen
- Pagination-Mathematik muss exakt sein.
offsetmuss ein exaktes Vielfaches voncountsein (Standard 30) — ein beliebiger Offset gibt inkonsistente Paginierung, und jeder von Null verschiedene Offset kostet einen zusätzlichen Upstream-Request pro durchlaufener Seite, also kalkuliere Credits ein, wenn du tief blätterst. - Leere Ergebnisse sind trotzdem 200er. Eine Anfrage ohne Treffer liefert ein normales
200mit einem leerenproducts-Array — behandle das als „keine Ergebnisse", nicht als einen Fehler, den man erneut versuchen sollte. - Produkt-IDs kommen nur aus zwei Quellen. Eine 24-Zeichen-Hex-
product_idaus demproduct_id-Feld eines Suchtreffers, oder extrahiert aus einer Produktseiten-URL — es gibt keinen anderen zuverlässigen Weg, ein Produkt zu adressieren. - Marktplatz-Fluktuation. Weil Wish ein Multi-Merchant-Marktplatz ist, können sich Preis, Bestand und
sold_out-Status bei einer bestimmten Variation schnell und unabhängig vom Rest des Listings ändern — behandle jeden Abruf als Momentaufnahme. - Nur öffentliche Daten. Das ist, was eine Produkt- und Suchseite bereits öffentlich zeigt — kein Weg zu Konto-, Bestell- oder Zahlungsdaten und kein Weg um Wishs eigene Access Terms and Conditions herum.
Wo das eingesetzt wird
- Merchant-Preisvergleich — jede Merchant-Variation desselben Produkts nebeneinanderstellen, um zu sehen, wer tatsächlich am günstigsten ist und auf Lager hat.
- Discount-Preis- und Katalogrecherche — Preis- und Sortimentstrends nach Stichwort oder Kategorie auf einem Marktplatz verfolgen, der auf niedrigen Preisen aufgebaut ist.
- Variations- und Bestandsmonitoring — bestimmte Größen-/Farb-/Merchant-Kombinationen auf Preisdrift oder Ausverkäufe über die Zeit beobachten.
Sources
Leg los mit dem Sammeln
Probier es zuerst kostenlos aus: jage eine beliebige öffentliche URL durch den Free Web Scraper, oder prüfe mit dem Anti-Bot Checker, ob eine Seite Bots blockiert — ohne Anmeldung.
Teste die Search- und Product-Detail-Endpoints im Playground, sieh dir das Request- und Response-Schema in den API docs an, und wirf einen Blick auf die Credit-Kosten auf der pricing-Seite. Wish steht neben anderen Drittanbieter-Marktplätzen, die wir abdecken — siehe how to scrape Poshmark und how to scrape Mercari für die Closet-/Social-Selling-Seite, oder how to scrape Vinted für einen weiteren Peer-to-Peer-Marktplatz. Siehe auch how to choose a web scraping API und is web scraping legal.
Häufig gestellte Fragen
Unterstützt die Wish-Suche Pagination?
Ja — /wish/search nutzt echte offset-basierte Pagination. offset muss ein exaktes Vielfaches von count sein, der auf der ersten Seite verwendet wird (Standard-count ist 30), und ein von Null verschiedener Offset kostet einen zusätzlichen Upstream-Request pro durchlaufener Seite. Eine Anfrage ohne Treffer liefert ein normales 200 mit einem leeren products-Array.
Kann ich mit einer API jede Variation eines Wish-Produkts abrufen?
Ja — /wish/product/{id} liefert jede kaufbare Größen-/Farb-/Merchant-Variation, jede mit eigenem Preis, eigener Währung, eigenem Bestand und Merchant — auch ein Produkt mit nur einem SKU liefert eine Liste mit einem Element.
Benötigt die Wish-API ein Konto oder einen API-Key?
Nein, es ist kein Wish-Konto oder API-Key seitens des Aufrufers erforderlich — nur dein Crawlora-API-Key.