eBay API für ebay.de: Preise, Zustand und Angebotsformat laufender Angebote als JSON
Zurück kommt, was auf ebay.de bei einem laufenden Angebot öffentlich steht: Titel, Preis in Euro, Zustand in eBays deutscher Formulierung, ob das Angebot zum Sofort-Kaufen, mit Preisvorschlag oder als Auktion läuft, und was der Versand kostet. Ein eBay-Konto braucht man dafür nicht. Wer Preise auf ebay.de ermitteln oder die Preisentwicklung eines Modells verfolgen will, wiederholt dieselbe Suche, etwa einmal täglich, und hebt jede Antwort auf. Eine Preishistorie führt die API nicht. Händler, die über eBay Angebote einstellen, Bestellungen abrufen oder ihren Shop pflegen wollen, sind hier falsch: Diese Schnittstelle schreibt nichts und kennt keine Verkäuferkonten. Deutsche Ergebnisse gibt es nur mit `"domain": "de"` in jeder Anfrage.
Endpunkte
| endpoint | Was zurückkommt | Pflicht |
|---|---|---|
| search | Laufende Angebote zu einem Suchbegriff: item_id, Titel, Preis mit Währung, Zustand („Gebraucht“, „Neu“, „Sehr gut - Refurbished“), das Angebotsformat im Wortlaut der Seite (`buying_format`: „Sofort-Kaufen“, „oder Preisvorschlag“, „9 Gebote“) und als Code (`buying_format_code`: buy_it_now, best_offer, auction), Versand als Text, Bild und URL. Filter für Zustand, Kategorie-ID, Preisspanne, nur Sofort-Kaufen, nur Auktion, Gratisversand, Rücknahme und Preisvorschlag; Sortierung nach Relevanz, neu eingestellt, bald endend oder Preis. Bis zu 240 Treffer pro Seite. | query |
| item_detail | Ein Angebot über Artikelnummer oder URL: Preis, Zustand, Bilder in voller Größe, Kategoriepfad („Elektronik & Technik › Haushaltsgeräte › Küchenmaschinen“), alle Artikelmerkmale, die der Verkäufer ausgefüllt hat (`item_specifics`, etwa „Marke“, „Modell“, „Leistung“), Versandkosten als Zahl mit Versandland, Rücknahmebedingungen, Ende des Angebots und `listing_status` (active oder ended). Bei Auktionen zusätzlich das aktuelle Gebot. | alle optional |
| items_batch | Bis zu 40 Artikelnummern in einem Aufruf, jede mit demselben Datensatz wie `item_detail`. Nummern, die eBay nicht mehr auflöst, stehen in `not_found` statt einfach zu fehlen. eBay hat keine Sammelabfrage, deshalb ist jede Nummer eine eigene Seitenabfrage und wird auch so berechnet; gespart wird Zeit, nicht Credits. | item_ids |
| seller_items | Die laufenden Angebote eines Verkäufers über seinen eBay-Namen, mit denselben Zeilen und Filtern wie die Suche. | seller |
| seller_profile | Die öffentliche Reputation eines Verkäufers: Bewertungspunkte, Anteil positiver Bewertungen (gesamt und 12 Monate), positive, neutrale und negative Bewertungen über 1, 6 und 12 Monate, Mitglied seit, gewerblich oder privat, Top-Rated-Status. | seller |
| deals | Die Angebote von eBays Deals-Seite für ebay.de mit Preis und, falls angezeigt, dem früheren Preis (`was_price`). | alle optional |
| categories | Die Kategorieübersicht von ebay.de (155 Einträge in 15 Bereichen wie „Haus & Garten“) mit der ID, die `search` im Parameter `category` annimmt; über `query` nach Namen filterbar. | alle optional |
Jeder Aufruf wird in Credits abgerechnet. Fehlgeschlagene und blockierte Aufrufe sind kostenlos.
Funktionierendes Beispiel
Von den 60 Treffern für gebrauchte „Thermomix TM6“ liefen 34 mit Preisvorschlag, 14 als Auktion und 12 zum Sofort-Kaufen. Bei Auktionen ist `price` das aktuelle Gebot, kein Verkaufspreis: Die Auktion mit 37 Geboten stand beim Abruf bei 240 €, gut sechs Tage vor Ende. Wer aus der Suche einen Marktpreis bildet, trennt deshalb nach `buying_format_code`. Den Versand liefert die Suche als Text („+EUR 10,49 Lieferung“, „Gratis Lieferung“); als Zahl steht er erst in `item_detail` (`shipping.rate`: 10.49, `country`: DEU).
curl -X POST https://api.reefapi.com/ebay/v1/search \
-H "x-api-key: IHR_API_SCHLUESSEL" \
-H "content-type: application/json" \
-d '{"query": "Thermomix TM6", "domain": "de", "max_results": 60, "condition": "used"}'{
"ok": true,
"data": {
"query": "Thermomix TM6",
"results": [
{
"item_id": "307248444139",
"title": "Thermomix TM6 Küchenmaschine 2000W 2,2L Touchscreen inkl. Varoma & Tasche",
"price": { "raw": "EUR 549,00", "value": 549.0, "currency": "EUR" },
"condition": "Gebraucht",
"buying_format": "oder Preisvorschlag",
"buying_format_code": "best_offer",
"shipping": "+EUR 10,00 Lieferung",
"url": "https://www.ebay.de/itm/307248444139",
"best_offer": true,
"in_stock": true
},
...
{
"item_id": "800840158066",
"title": "Thermomix TM6 Küchenmaschine mit 2x Mixtopf, Varoma & Dampfentsafter",
"price": { "raw": "EUR 240,00", "value": 240.0, "currency": "EUR" },
"condition": "Gebraucht",
"buying_format": "37 Gebote",
"buying_format_code": "auction",
"shipping": "+EUR 10,49 Lieferung",
"url": "https://www.ebay.de/itm/800840158066",
"in_stock": true
},
...
{
"item_id": "377399819973",
"title": "Thermomix TM6 weiß",
"price": { "raw": "EUR 650,00", "value": 650.0, "currency": "EUR" },
"condition": "Gebraucht",
"buying_format": "Sofort-Kaufen",
"buying_format_code": "buy_it_now",
"shipping": "+EUR 10,49 Lieferung",
"url": "https://www.ebay.de/itm/377399819973",
"in_stock": true
},
...
]
},
"meta": {
"record_count": 60,
"domain": "de",
"pagination": { "page": 1, "has_more": true },
"charged_credits": 1,
"cache_hit": false,
"mode": "live"
}
}ebay.de selbst auslesen: was an deutschen Seiten anders ist
Ein eBay-Parser, der an ebay.com entwickelt wurde, sucht nach englischen Wörtern. Unserem ging es nicht anders: Bei einer Messung am 26. September 2026 war das Angebotsformat auf ebay.de in 0 von 72 Trefferkarten gefüllt. Die Karte schreibt „Sofort-Kaufen“, „oder Preisvorschlag“ oder „2 Gebote“, gesucht wurde aber nur nach „buy it now“. Die deutschen Begriffe haben wir damals live von der Seite übernommen, ebenso die französischen, italienischen und spanischen; danach hatten 60 Karten auf ebay.de ein Format. Seitdem gibt es zusätzlich `buying_format_code`, damit sich Angebote länderübergreifend gleich filtern lassen. Auktionen wurden bis zu diesem Tag überhaupt nicht als solche erkannt.
Ein zweiter Fall kam von einem zahlenden Kunden. Seine Suchanfrage stammte offenbar aus einer formatierten Quelle und bestand aus fetten Unicode-Buchstaben, die nur wie normale aussehen. eBay sucht diese Zeichen wörtlich, findet nichts und zeigt dabei nicht einmal den Hinweis auf null Treffer. Die Seite kam vollständig an (1.936.940 Byte), enthielt aber keine einzige Artikelnummer, und das sah aus wie ein geänderter Seitenaufbau. Seit dem 10. Oktober 2026 wird jede Suchanfrage vorher normalisiert (NFKC, unsichtbare Zeichen entfernt); Umlaute und Akzente bleiben dabei erhalten.
Keiner der beiden Fehler führte zu einer Fehlermeldung. Bemerkt haben wir beide erst beim Nachzählen gegen die echte Seite. Genau dieses Nachzählen kostet bei einem eigenen Scraper die Zeit, nicht das Herunterladen.
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
- Temu API — Preise für Deutschland
- Autodoc API — Ersatzteile und Preise
- ricardo.ch API — Schnittstelle
Grenzen und ehrliche Hinweise
- eBay steht nicht hinter diesem Dienst. Es ist keine Schnittstelle aus eBays Entwicklerprogramm, und eine Partnerschaft mit eBay gibt es nicht.
- Standard ist `"domain": "com"`. Ohne `"domain": "de"` kommen Angebote von ebay.com mit Preisen in US-Dollar.
- Preise verkaufter Artikel liefert diese API nicht. Die Suche nach beendeten und verkauften Angeboten zeigt eBay seit August 2026 nur noch angemeldeten Nutzern, und wir lesen eBay ohne Konto. Alle Endpunkte hier arbeiten mit laufenden Angeboten; `item_detail` kann auch ein beendetes Angebot lesen, wenn man die Nummer kennt. Verkaufte Artikel deckt die eigene API eBay Sold Listings (`ebay-sold`) ab, allerdings nur über einen bestimmten Verkäufer oder eine bekannte Artikelnummer; eine marktweite Stichwortsuche über Verkaufspreise bietet auch sie nicht. Auf ebay.de haben wir sie nicht eigens getestet.
- In der Suche ist `location` auf ebay.de leer: 0 von 60 Zeilen bei unserer Abfrage. Der Versand kommt dort nur als Text, bei unserer Abfrage zweimal sogar ohne Betrag („· 2-3 Tage Lieferung“). Versandkosten als Zahl und das Versandland liefert `item_detail`.
- In `item_detail` von ebay.de waren `brand`, `model` und `mpn` bei 4 von 4 Angeboten null. Marke, Modell und Herstellernummer stehen in `item_specifics` unter den deutschen Schlüsseln („Marke“, „Modell“, „Herstellernummer“), sofern der Verkäufer sie ausgefüllt hat. `condition` kommt dort auf Englisch („Used“, „New“), in der Suche auf Deutsch.
- `best_offer` war in `item_detail` bei beiden geprüften Angeboten false, obwohl die Trefferkarte „oder Preisvorschlag“ zeigte und dort `best_offer: true` stand. Für den Preisvorschlag ist die Suche die verlässlichere Quelle.
- Bei Auktionen auf ebay.de nennt `item_detail` das aktuelle Gebot (`current_bid`) und das Ende (`end_time`), aber nicht die Zahl der Gebote; die steht nur in der Trefferkarte („37 Gebote“). `time_left` enthielt lediglich „Endet in“, und `quantity_available` war bei allen vier Abrufen null.
- Die Verkäuferfelder in `item_detail` sind auf ebay.de lückenhaft: Bewertungsquote und -anzahl waren 4 von 4 Mal null. Die Reputation eines Verkäufers liefert `seller_profile`.
- `categories` kennt die 155 Einträge der Kategorieübersicht. Tiefere Kategorien fehlen dort: „küchen“ ergab NOT_FOUND, „Haushalt“ nur „Haushaltsgeräte“ (20710). Eine tiefere ID, die man schon kennt, nimmt `search` trotzdem an.
- Kosten pro Aufruf: `search`, `deals` und `categories` 1 Credit (bei `search` pro Seite, egal ob 10 oder 240 Treffer), `item_detail` und `seller_items` 2, `seller_profile` 3, `items_batch` 2 Credits je Artikelnummer.