Wie man eBay-Angebote und verkaufte Daten für Preisrecherchen scrapt

eBays Verkaufshistorie ist das, was einem freien Marktpreis-Datenbank am nächsten kommt — wenn man die zwei URL-Parameter kennt, die sie freischalten. Hier erfahren Sie, wie Sie Angebote, Varianten und reale Transaktionspreise in großem Maßstab scrapen können.

eBay ist einer der größten Peer-to-Peer-Marktplätze im Internet, was es zu einer Goldgrube für Preisrecherchen, Wettbewerbsverfolgung und Wiederverkaufsbewertungen macht. Es gibt ein offizielles Entwickler-SDK, aber die nützlichsten Daten — für was Artikel tatsächlich verkauft wurden — lassen sich am einfachsten direkt von den öffentlichen Suchseiten sammeln. Dieser Leitfaden zeigt, wie man eBay-Angebote, Variantendaten und reale Verkaufspreise scrapt, sowie die Proxy-Einrichtung, die einen Scraper über die ersten paar hundert Anfragen hinaus am Leben hält.

Die Such-URL ist die API

Wenn Sie eBay durchsuchen, wird die Abfrage vollständig in der URL kodiert, und eine Handvoll Parameter steuert genau, was zurückkommt. Beherrschen Sie diese fünf und Sie können eBays Katalog programmatisch steuern, ohne einen Browser zu berühren:

Der Sortierparameter _sop verdient eine Erwähnung: seine Werte ordnen die Ergebnisse nach neu gelistet, niedrigstem Gesamtpreis inklusive Versand oder bald endend, was Ihnen ermöglicht, gezielte Feeds zu gestalten — neueste Angebote für einen Änderungsmonitor, günstigste Gesamtpreise für einen Schnäppchenfinder. Die Einschränkung mit _sacat verengt ein breites Schlüsselwort auf die richtige Abteilung, entfernt Störgeräusche, bevor Sie eine einzige Zeile analysieren. Schlüsselwort, Kategorie und Sortierung zusammen lassen Sie die meisten Forschungsanfragen als eine einzige URL ausdrücken, was eBay genau deshalb angenehm zu automatisieren macht.

import requests
from urllib.parse import urlencode

proxy = "http://USER:PASS@gate.quantumproxies.io:8000"
proxies = {"http": proxy, "https": proxy}

def search_url(keyword, page=1, per_page=60, category=0):
    params = {"_nkw": keyword, "_sacat": category,
              "_ipg": per_page, "_pgn": page}
    return "https://www.ebay.com/sch/i.html?" + urlencode(params)

r = requests.get(search_url("vintage seiko watch"),
                 proxies=proxies, timeout=20)
print(r.status_code)  # parse r.text with your HTML library of choice
Diagramm der eBay-Scraping-Pipeline: Erstellen Sie die Such-URL aus Parametern, holen Sie sie über einen Residential Proxy ab, analysieren Sie das Angebot und speichern Sie die Zeilen
eBays öffentliche Suchseite verhält sich wie eine API — die Parameter sind die Abfrage, das Markup ist die Antwort.

Verkaufte und abgeschlossene Angebote: der echte Marktpreis

Dies ist der Endpunkt, der für die Preisgestaltung zählt. Aktive Angebote sagen Ihnen nur, was Verkäufer hoffen zu bekommen; viele werden nie verkauft. eBay zeigt die tatsächliche Transaktionshistorie auf derselben Suchseite durch zwei zusätzliche Parameter: LH_Complete=1 zeigt alle abgeschlossenen Angebote, und LH_Sold=1 beschränkt auf Artikel, die tatsächlich verkauft wurden. Bei einem verkauften Angebot ist der Preis der endgültige Verkaufswert, nicht ein Angebotspreis — was dies zur saubersten kostenlosen Quelle macht, um zu wissen, was Dinge wirklich wert sind:

def sold_url(keyword, page=1):
    # append the completed + sold filters to any search
    return ("https://www.ebay.com/sch/i.html?"
            f"_nkw={keyword.replace(' ', '+')}"
            "&LH_Complete=1&LH_Sold=1"
            f"&_ipg=60&_pgn={page}")

# every sold row = a real transaction: use median, not mean,
# to shrug off outliers and shill bids
r = requests.get(sold_url("nike dunk low panda 10"),
                 proxies=proxies, timeout=20)

Da die verkaufte Seite dasselbe Markup wie eine Standardsuche verwendet, verarbeitet Ihr Listenparser sie unverändert — Sie fügen einfach die beiden Filter hinzu. Nehmen Sie den Median der letzten 30-60 verkauften Preise anstelle des Durchschnitts, und Sie erhalten einen robusten Marktwert, dem Wiederverkaufs- und Wettbewerbspreisüberwachungs-Workflows vertrauen können.

Analyse eines Angebots: Preis, Spezifikationen und Varianten

Ein Angebot mit einer einzigen Variante ist einfach: Der Preis befindet sich im primären Preiselement, die Artikelspezifikationstabelle (Zustand, Marke, Modell, Größe) ist ein Satz von Label/Wert-Paaren, und die Beschreibung befindet sich in einem iframe, das Sie separat abrufen können. Achten Sie auf eBays regionale Preiskonvertierung — einige Regionen erhalten einen umgerechneten Preis neben dem Original, also erfassen Sie beide.

Produkte mit mehreren Varianten (ein Telefon mit Modell-, Speicher- und Farboptionen) sind schwieriger, da die Preise pro Option durch JavaScript aktualisiert werden. Diese Daten befinden sich nicht im sichtbaren HTML — es sind versteckte Webdaten, die in einer JavaScript-Variable namens MSKU in einem <script>-Tag gespeichert sind. Extrahieren Sie dieses JSON und Sie erhalten den Preis und den Bestand jeder Variante auf einen Schlag, ohne die Seite zu rendern:

import re, json

def extract_msku(html):
    # the variant matrix lives in a JS object keyed 'MSKU'
    m = re.search(r'"MSKU"\s*:\s*(\{.*?\})\s*[,}]', html, re.S)
    if not m:
        return {}          # single-variant listing, no matrix
    data = json.loads(m.group(1))
    # data now holds per-variant price, currency and stock flags
    return data

variants = extract_msku(r.text)
Vergleich, der aktive eBay-Angebote als Angebotspreise versus verkaufte Angebote als reale endgültige Transaktionspreise zeigt
Für die Bewertung scrapen Sie immer den verkauften Filter: Aktive Preise sind Wünsche, verkaufte Preise sind der Markt.

Ungeblockt bleiben im großen Maßstab

Ein Angebot ist trivial. Der Maßstab ist, wo eBay zurückschlägt — mit Ratenbegrenzung, CAPTCHA-Herausforderungen und dynamischen Inhalten, die automatisierte Muster kennzeichnen. Rechenzentrums-IPs werden auf Marktplätzen schnell gedrosselt; die zuverlässige Lösung sind Residential Proxies, die als normale Käufer auftreten, rotiert, sodass keine einzelne IP einen offensichtlichen Anstieg verzeichnet. Taktieren Sie Anfragen, respektieren Sie jede 429 mit Rückzug, und lokalisieren Sie Ihren Ausgang, wenn Sie regionsspezifische Preise benötigen, da eBay Ergebnisse und Währung nach Geografie anpasst.

Wenn ein Ziel schwerere Bot-Management-Maßnahmen hinzufügt oder Sie den Parsing- und Rotationsstapel nicht selbst pflegen möchten, übernimmt eine Scraper API die IP-Rotation, JS-Rendering und Wiederholungen hinter einem Endpunkt und liefert sauberes HTML, JSON oder Markdown. Für das umfassendere Marktplatz-Playbook deckt unser Leitfaden zur Marktplatzautomatisierung über Amazon, eBay und Etsy Kontosicherheit und Geotargeting ab.

eBay mit sauberen Residential Proxies scrapen

Vom Scrapen zum Datensatz

Sobald die Zeilen fließen, ist die Disziplin die Deduplizierung und Historie. Schlüssel jeden Datensatz mit seiner eBay-Artikel-ID, damit ein erneutes Scrapen die vorhandene Zeile aktualisiert, anstatt sie zu duplizieren, und speichern Sie den Preis mit einem Zeitstempel und dem Artikelzustand bei jedem Abruf — ein Verkaufspreis bedeutet nur etwas neben seinem Datum und ob der Artikel neu oder gebraucht war. Halten Sie ein rollierendes Fenster mit aktuellen Verkaufsdaten pro Produkt und Sie haben eine Live-Bewertung, die sich selbst aktualisiert, was die Grundlage jedes Wiederverkaufs-, Neupreis- oder Arbitrage-Tools ist. Kombinieren Sie das mit Alarmen bei plötzlichen Preisbewegungen und der Datensatz beginnt, die Überwachung für Sie zu übernehmen.

Ist das Scrapen von eBay legal?

Dies sind allgemeine Informationen, keine Rechtsberatung. Das Sammeln öffentlich zugänglicher Angebotsdaten — Preise, Bedingungen, Verkaufshistorie — in respektvollen Raten wird weithin als legitim angesehen. Die Grenze, die zu beachten ist, sind persönliche Daten: Verkäufernamen, Standorte und Kontaktdaten sind unter der DSGVO in der EU und ähnlichen Gesetzen anderswo geschützt, also vermeiden Sie es, sie ohne rechtliche Grundlage zu speichern. Scrapen Sie das Marktsignal, nicht die Menschen.

Häufig gestellte Fragen

Wie scrapt man eBay verkaufte Angebote?

Nehmen Sie eine beliebige eBay-Such-URL und fügen Sie LH_Complete=1&LH_Sold=1 hinzu. Das schaltet die Ergebnisse auf abgeschlossene Angebote um, die tatsächlich verkauft wurden, wobei der angezeigte Preis der endgültige Transaktionswert ist. Die Seite verwendet dasselbe Markup wie eine normale Suche, sodass derselbe Parser Titel, Preis und Verkaufsdatum für Preisrecherchen extrahiert.

Kann ich eBay-Preise ohne die offizielle API scrapen?

Ja. Die öffentlichen Such- und Angebotsseiten liefern alles, was ein Käufer sieht, ohne Kontingent oder OAuth. Die Suchparameter (_nkw, _sacat, _pgn, _ipg) steuern Abfragen und Paginierung, und Produktseiten enthalten Preis-, Artikelspezifikationen und Variantendaten. Sie benötigen rotierende Residential Proxies, um das Volumen ohne Ratenbeschränkung aufrechtzuerhalten.

Wie bekomme ich eBay-Variantenpreise?

Mehrfachoptionen-Angebote speichern ihren Preis und Bestand pro Variante in einem JavaScript-Objekt namens MSKU, das in einem Script-Tag eingebettet ist, nicht im sichtbaren HTML. Extrahieren Sie diesen JSON-Block und Sie erhalten den Preis jeder Kombination, ohne die Seite zu rendern oder jede Option anzuklicken — weit schneller und zuverlässiger als das Steuern eines Browsers.

Warum wird mein eBay-Scraper blockiert?

eBay wendet Ratenbegrenzung und CAPTCHA-Herausforderungen auf Verkehr an, der automatisiert aussieht, und Rechenzentrums-IP-Bereiche werden schnell gedrosselt. Verteilen Sie Anfragen über rotierende Residential IPs, takten Sie sie mit Verzögerungen, ziehen Sie sich bei jeder 429 zurück, und halten Sie die Header kohärent. Wenn Herausforderungen bestehen bleiben, entfernt eine Scraper API, die IPs rotiert und JavaScript rendert, die Wartungsbelastung.

Scrapen Sie die Suchseite wie eine API, entsperren Sie die Verkaufshistorie mit zwei Parametern, extrahieren Sie Variantenmatrizen aus dem eingebetteten JSON und leiten Sie alles durch saubere Residential IPs. Tun Sie das und eBay wird zu einem Live-Preisdatensatz, den Sie kontrollieren.

Extrahieren Sie eBay-Daten, ohne den Stack zu verwalten