← Alle Artikel

eBay-Suchergebnisse als JSON scrapen mit dem eBay-Search-Plugin

eBay ist einer der größten strukturierten Datensätze mit realen Preisen im Internet. Zu jedem Produkt, das dir einfällt, gibt es Live-Angebote mit einem Preis, einem Zustand, einer Verkäuferbewertung und Versandkosten. Diese Daten sind Gold wert für Preisüberwachung, Wiederverkaufs-Arbitrage, Marktforschung und den Bau von “Was ist das wert”-Tools. Der schwierige Teil war schon immer, sie herauszubekommen.

eBay von Hand zu scrapen bedeutet, sich mit einer JavaScript-lastigen Suchseite herumzuschlagen, IPs zu rotieren, um Sperren zu vermeiden, und Selektoren zu schreiben, die brechen, sobald eBay das Layout ändert. Und das noch bevor du dich damit befasst, dass eBay 19 regionale Marktplätze betreibt, jeder mit eigener Domain, Währung und eigenen Eigenheiten.

Das neue eBay-Search-Plugin nimmt dir diese ganze Ebene ab. Du schickst ein Stichwort und erhältst ein sauberes JSON-Array mit Angeboten zurück. Dieser Beitrag erklärt, was das Plugin zurückgibt, wie du es aufrufst, wie du Ergebnisse filterst und sortierst und wie du etwas Nützliches darauf aufbaust.

Was das eBay-Search-Plugin macht

Das Plugin nimmt ein Suchstichwort - genau das, was du in das eBay-Suchfeld eingeben würdest, etwa mechanische Tastatur oder Vintage Omega Uhr - und gibt die Ergebnisseite als strukturiertes JSON zurück. Kein HTML-Parsing, kein Headless-Browser, keine Proxy-Rotation auf deiner Seite.

Es funktioniert über alle 19 regionalen Marktplätze, von ebay.com in den USA bis ebay.com.au in Australien, sodass du dasselbe Produkt mit demselben Aufruf über Länder und Währungen hinweg vergleichen kannst.

Für jedes Angebot in den Ergebnissen bekommst du Felder wie:

  • title - der Angebotstitel
  • price - der numerische Preis, plus ein separater currency-Code
  • condition - der lesbare Zustand, mit einem normalisierten conditionCode
  • seller - der Verkäufer-Benutzername und seine Bewertungspunktzahl
  • shipping - die Versandkosten (oder dass der Versand kostenlos ist)
  • sold, watchers, bids - Nachfragesignale zum Angebot
  • image - die URL des Angebots-Thumbnails
  • url - eine saubere, kanonische Artikel-URL

Da der numerische price und der conditionCode normalisiert sind, kannst du die Ergebnisse direkt sortieren, filtern und aggregieren, ohne Zeichenketten wie “1.299,99 €” zu parsen oder raten zu müssen, was “Gebraucht - Ausgezeichnet” bedeutet.

Die Anfrage

Der Endpunkt ist ein einzelner POST-Aufruf an /marketplace/ebay-search. Der einzige Pflichtparameter ist dein Stichwort. Die Authentifizierung erfolgt über einen Header, x-scrapeunblocker-key, mit deinem API-Schlüssel.

Hier der einfachstmögliche Aufruf mit curl:

curl -X POST "https://api.scrapeunblocker.com/marketplace/ebay-search" \
  -H "x-scrapeunblocker-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query": "mechanische Tastatur", "domain": "ebay.com"}'

Über den Parameter domain wählst du einen regionalen Marktplatz. Lass ihn auf ebay.com für die USA oder setze ihn auf ebay.co.uk, ebay.de, ebay.com.au usw., um in einem anderen Land zu suchen. Die zurückgegebene currency folgt dem Marktplatz, sodass eine ebay.de-Suche in EUR zurückkommt.

Die Ergebnisse filtern

Die meisten echten Anwendungsfälle brauchen mehr als eine reine Stichwortsuche. Das Plugin stellt dieselben Filter, die du in der eBay-Seitenleiste anklicken würdest, als schlichte Anfragefelder bereit:

  • condition - beschränkt auf neu, gebraucht, generalüberholt usw.
  • listing_type - Auktion versus Festpreis (Sofort-Kaufen)
  • min_price / max_price - eine Preisspanne
  • free_shipping - nur Angebote mit kostenlosem Versand
  • seller - Angebote eines bestimmten Verkäufers
  • category - beschränkt auf eine eBay-Kategorie

Um zum Beispiel gebrauchte mechanische Tastaturen unter 80 EUR auf dem deutschen Marktplatz mit kostenlosem Versand zu finden:

curl -X POST "https://api.scrapeunblocker.com/marketplace/ebay-search" \
  -H "x-scrapeunblocker-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "query": "mechanische Tastatur",
    "domain": "ebay.de",
    "condition": "used",
    "max_price": 80,
    "free_shipping": true
  }'

Sortieren und Paginieren

Standardmäßig gibt eBay seine “Beste Ergebnisse”-Reihenfolge zurück. Das kannst du mit dem Parameter sort überschreiben - zum Beispiel newly_listed, um die neuesten Angebote zuerst zu sehen, was du willst, wenn du auf neuen Bestand achtest statt zu stöbern.

Die Paginierung steuerst du mit page und page_size. Die Optionen für die Seitengröße spiegeln die von eBay wider: 60, 120 oder 240 Ergebnisse pro Seite. Wenn du eine vollständige Momentaufnahme einer Kategorie ziehst, nutze page_size: 240 und laufe page durch, bis keine Ergebnisse mehr kommen, statt viele kleine Anfragen zu stellen.

import requests

URL = "https://api.scrapeunblocker.com/marketplace/ebay-search"
HEADERS = {"x-scrapeunblocker-key": "YOUR_API_KEY"}

def search_ebay(query, domain="ebay.com", **filters):
    body = {"query": query, "domain": domain, "page_size": 240, **filters}
    resp = requests.post(URL, headers=HEADERS, json=body, timeout=60)
    resp.raise_for_status()
    return resp.json()

data = search_ebay("Vintage Omega Uhr", domain="ebay.com", sort="newly_listed")
for item in data["results"]:
    print(item["price"], item["currency"], "-", item["title"])

Ein Hinweis zu ungefähren Treffern

Ein Detail, das Beachtung verdient: Wenn eBay keinen exakten Treffer für deine Anfrage hat, gibt es keine leere Seite zurück. Stattdessen liefert es eine Seite mit lose verwandten Vorschlägen. Für einen stöbernden Menschen ist das in Ordnung, aber es kann einen Datensatz still verunreinigen, wenn du annimmst, dass jedes Ergebnis ein echter Treffer ist.

Das Plugin geht damit ehrlich um. Wenn die Ergebnisse keine exakten Treffer sind, setzt die Antwort exactMatches: false und enthält ein notice-Feld, das erklärt, was passiert ist, statt die Vorschläge als echte Treffer zu verkleiden. Prüfe in deinem Code dieses Flag, bevor du den Ergebnissen vertraust:

data = search_ebay("eine sehr spezifische Modellnummer")

if not data.get("exactMatches", True):
    print("Keine exakten Treffer:", data.get("notice"))
else:
    process(data["results"])

Diese eine Prüfung bewahrt dich davor, still einen Preisindex aus “Das könnte dir auch gefallen”-Füllmaterial zu bauen.

Was du damit bauen kannst

Sobald eBay-Angebote sauberes JSON sind, werden viele kleine, nützliche Tools zu einer Nachmittagsarbeit statt zu einem Projekt:

  • Preisüberwachung - führe dieselbe Anfrage nach Zeitplan aus, speichere den Medianpreis und schlage Alarm, wenn er sich bewegt. Da price numerisch ist, ist die Aggregation trivial.
  • Wiederverkauf und Arbitrage - vergleiche sold-Zahlen und Angebotspreise zwischen ebay.com und ebay.co.uk, um regionale Lücken zu erkennen.
  • Marktforschung - ziehe eine ganze Kategorie mit page_size: 240 und gruppiere nach condition und Verkäuferbewertung, um zu verstehen, wer was zu welchem Preis verkauft.
  • Deal-Bots - filtere nach max_price und free_shipping, sortiere nach newly_listed und frage nach neuen Angeboten unter einer Schwelle ab.

Jedes davon ist nur das Plugin plus ein paar Zeilen eigener Logik - keine Scraping-Infrastruktur, die du hüten musst.

FAQ

Brauche ich ein eBay-Entwicklerkonto oder einen API-Schlüssel? Nein. Das Plugin nutzt weder die offizielle Finding- noch die Browse-API von eBay, es gibt also keine eBay-App-Registrierung, keinen OAuth-Flow und keine Freigabe pro Marktplatz. Du rufst den ScrapeUnblocker-Endpunkt mit deinem eigenen Schlüssel auf.

Welche Marktplätze werden unterstützt? 19 regionale eBay-Sites, von ebay.com über ebay.co.uk, ebay.de, ebay.com.au und mehr. Stelle den Parameter domain ein, um einen auszuwählen. Preise kommen in der jeweiligen Landeswährung des Marktplatzes zurück.

Wie viele Ergebnisse bekomme ich pro Aufruf? Bis zu 240 Angebote pro Seite über page_size, und du kannst mit page tiefer in eine Kategorie blättern.

Kann ich nach Auktion oder Sofort-Kaufen filtern? Ja. Nutze listing_type, um auf Auktionen oder Festpreis zu beschränken, und kombiniere es mit min_price, max_price, condition und free_shipping, um die Menge einzugrenzen.

Was passiert, wenn es keine exakten Treffer gibt? Die Antwort kommt mit exactMatches: false und einem notice-Feld zurück, und die results enthalten eBays lose verwandte Vorschläge. Prüfe das Flag, bevor du sie als echte Treffer behandelst.

Fazit

Das eBay-Search-Plugin verwandelt den chaotischsten Teil der eBay-Datenerfassung - die Suchergebnisseite - in einen einzigen JSON-Aufruf. Du sparst dir den Headless-Browser, die Proxy-Rotation und die brüchigen Selektoren und gehst direkt zu normalisierten Feldern, die du sortieren, filtern und aggregieren kannst.

Wenn du es ausprobieren möchtest, ist der Endpunkt über das Dashboard verfügbar und neben den anderen fertigen Scrapern in der Entwicklerdokumentation beschrieben. Es ist eines von einer wachsenden Reihe von Plugins bei ScrapeUnblocker, die saubere, strukturierte Daten von Sites zurückgeben, die sonst echte Scraping-Arbeit erfordern würden.

ScrapeUnblocker kostenlos testen

Über 95 % Erfolgsquote · ab 0,55 € pro 1.000 Aufrufe · 500 kostenlose Anfragen bei der Registrierung.

Kostenlos testen → Preise ansehen