TL;DR
Mit eBay APIs können Sie Inventar, Angebote, Bestellungen und Zahlungen auf dem weltweit größten Marktplatz verwalten. Sie authentifizieren sich mit OAuth 2.0, rufen api.ebay.com/sell Endpunkte auf und handhaben Ratenbegrenzungen sorgfältig. Für Tests verwenden Sie Apidog, um Angebots-Payloads zu validieren, die Auftragsabwicklung zu testen und sicherzustellen, dass Ihre Integration API-Limits elegant handhabt.
Einleitung
eBay verbindet Käufer und Verkäufer weltweit. Die API ermöglicht es Verkäufern, die Bestandsverwaltung zu automatisieren, Angebote in großen Mengen zu erstellen, Bestellungen zu bearbeiten, den Versand abzuwickeln und Rücksendungen zu verwalten. Ob Sie ein kleiner Verkäufer oder ein Großunternehmen sind, die API skaliert.
Die wichtigsten API-Bereiche:
- Inventory API - Produktbestand verwalten
- Listing API - Artikelangebote erstellen und verwalten
- Order API - Bestellungen und Lieferungen bearbeiten
- Fulfillment API - Versand und Sendungsverfolgung abwickeln
- Analytics API - Verkaufsberichte abrufen
Testen Sie eBay APIs mit Apidog – kostenlos
Am Ende dieses Leitfadens werden Sie in der Lage sein:
- Authentifizierung mit eBay OAuth 2.0
- Inventar erstellen und verwalten
- Angebote veröffentlichen
- Bestellungen und Lieferungen bearbeiten
- Rücksendungen und Rückerstattungen abwickeln
- Mit Apidog testen
Authentifizierung mit OAuth 2.0
eBay verwendet OAuth 2.0 zur API-Authentifizierung. Sie müssen eine Anwendung im eBay Developers Program erstellen.

Eine Anwendung erstellen
- Gehen Sie zu developers.ebay.com
- Registrieren Sie sich für ein Entwicklerkonto
- Erstellen Sie eine Anwendung in der Developer Console
- Rufen Sie Ihre App ID (Client ID) und Cert ID (Client Secret) ab
OAuth-Fluss
Schritt 1: Benutzerauthentifizierung
https://auth.ebay.com/oauth2/authorize?
client_id=YOUR_APP_ID&
response_type=code&
redirect_uri=YOUR_SIGNIN_REDIRECT_URI&
scope=https://api.ebay.com/oauth/api_scope/sell.inventory
Schritt 2: Autorisierungscode abrufen
Der Benutzer autorisiert, Sie erhalten einen Code an Ihrer Weiterleitungs-URI.
Schritt 3: Gegen Token austauschen
const response = await fetch('https://api.ebay.com/identity/v1/oauth2/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + Buffer.from(APP_ID + ':' + CERT_ID).toString('base64')
},
body: new URLSearchParams({
grant_type: 'authorization_code',
code: AUTHORIZATION_CODE,
redirect_uri: 'YOUR_SIGNIN_REDIRECT_URI'
})
})
const { access_token, refresh_token, expires_in } = await response.json()
Erforderliche Scopes
https://api.ebay.com/oauth/api_scope/sell.inventory- Bestandsverwaltunghttps://api.ebay.com/oauth/api_scope/sell.listings- Angebotehttps://api.ebay.com/oauth/api_scope/sell.orders- Bestellungenhttps://api.ebay.com/oauth/api_scope/sell.fulfillment- Abwicklunghttps://api.ebay.com/oauth/api_scope/sell.account- Kontoverwaltung
Bestandsverwaltung
Das Inventar repräsentiert die Produkte, die Sie verkaufen.
Lagerort erstellen
curl -X POST "https://api.ebay.com/sell/inventory/v1/location_inventory_location" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"locationId": "WAREHOUSE_1",
"name": "Main Warehouse",
"address": {
"addressLine1": "123 Main St",
"city": "San Jose",
"stateOrProvince": "CA",
"postalCode": "95101",
"countryCode": "US"
}
}'
Einen Inventargegenstand erstellen
curl -X POST "https://api.ebay.com/sell/inventory/v1/inventory_item" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"product": {
"title": "Vintage Leather Messenger Bag",
"description": "Genuine leather messenger bag, perfect for work or school.",
"aspects": {
"Brand": ["Vintage"],
"Material": ["Leather"],
"Color": ["Brown"]
},
"imageUrls": [
"https://example.com/images/bag1.jpg",
"https://example.com/images/bag2.jpg"
]
},
"condition": "USED_GOOD",
"conditionNotes": "Minor wear on corners",
"availability": {
"shipToLocationAvailability": {
"quantity": 25
}
}
}'
Bestand aktualisieren
curl -X PUT "https://api.ebay.com/sell/inventory/v1/inventory_item/SKU123" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"availability": {
"shipToLocationAvailability": {
"quantity": 30
}
}
}'
Inventargegenstand abrufen
curl -X GET "https://api.ebay.com/sell/inventory/v1/inventory_item/SKU123" \
-H "Authorization: Bearer ACCESS_TOKEN"
Artikel einstellen
Ein Angebot erstellen
curl -X POST "https://api.ebay.com/sell/inventory/v1/offer" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"sku": "SKU123",
"marketplaceId": "EBAY_US",
"format": "FIXED_PRICE",
"product": {
"title": "Vintage Leather Messenger Bag"
},
"pricingSummary": {
"price": {
"currency": "USD",
"value": "89.99"
}
},
"listing": {
"listingDuration": "GTC",
"listingType": "CLASSIC"
},
" fulfillment": {
"shippingProfileId": "SHIPPING_PROFILE_ID",
" fulfillmentPolicyId": "FULFILLMENT_POLICY_ID",
"paymentPolicyId": "PAYMENT_POLICY_ID"
}
}'
Wichtige Felder:
sku- Ihre Inventar-SKUmarketplaceId- EBAY_US, EBAY_UK, EBAY_DE usw.format- FIXED_PRICE oder AUCTIONlistingDuration- Wie lange (GTC = gültig bis auf Widerruf)price- Ihr Angebotspreis
Das Angebot veröffentlichen
curl -X POST "https://api.ebay.com/sell/inventory/v1/offer/OFFER_ID/publish" \
-H "Authorization: Bearer ACCESS_TOKEN"
Ein Angebot zurückziehen
curl -X POST "https://api.ebay.com/sell/inventory/v1/offer/OFFER_ID/withdraw" \
-H "Authorization: Bearer ACCESS_TOKEN"
Bestellverwaltung
Bestellungen abrufen
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/order?orderIds=ORDER_ID_1,ORDER_ID_2" \
-H "Authorization: Bearer ACCESS_TOKEN"
Nach Datum filtern:
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/order?filter=creation_date_range:from:2026-01-01T00:00:00Z,to:2026-03-24T00:00:00Z" \
-H "Authorization: Bearer ACCESS_TOKEN"
Bestelldetails abrufen
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/order/ORDER_ID" \
-H "Authorization: Bearer ACCESS_TOKEN"
Bestellantwort:
{
"orderId": "12-34567-89012",
"orderPaymentStatus": "PAID",
"pricingSummary": {
"total": {
"currency": "USD",
"value": "94.99"
}
},
"fulfillmentStartInstructions": [
{
"shippingStep": {
"shipTo": {
"fullName": "John Doe",
"contactAddress": {
"addressLine1": "123 Main St",
"city": "Anytown",
"stateOrProvince": "CA",
"postalCode": "12345",
"countryCode": "US"
}
}
}
}
],
"lineItems": [
{
"lineItemId": "LINE_ITEM_ID",
"sku": "SKU123",
"quantity": 1,
"title": "Vintage Leather Messenger Bag",
"lineItemCost": {
"currency": "USD",
"value": "89.99"
}
}
]
}
Versand und Abwicklung
Versandetikett erstellen
curl -X POST "https://api.ebay.com/sell/fulfillment/v1/order/ORDER_ID/shipping_fulfillment" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"lineItems": [
{
"lineItemId": "LINE_ITEM_ID",
"quantity": 1
}
],
"shippingStep": {
"shipFrom": {
"fullName": "Your Name",
"companyName": "Your Company",
"contactAddress": {
"addressLine1": "456 Warehouse Rd",
"city": "San Jose",
"stateOrProvince": "CA",
"postalCode": "95101",
"countryCode": "US"
}
}
},
"shippingCarrierCode": "USPS",
"shippingMethodCode": "PRIORITY_MAIL",
"trackingNumber": "9400111899223056789012"
}'
Transportunternehmen:
- USPS
- UPS
- FedEx
- DHL
Rücksendeverwaltung
Rücksendungsdetails abrufen
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/return/RETURN_ID" \
-H "Authorization: Bearer ACCESS_TOKEN"
Eine Rücksendung bearbeiten
curl -X POST "https://api.ebay.com/sell/fulfillment/v1/return/RETURN_ID/decide" \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"decision": "ACCEPT",
"shipment": {
"carrierId": "CARRIER_ID",
"trackingNumber": "TRACKING_NUMBER"
}
}'
Ratenbegrenzungen und deren Handhabung
eBay begrenzt API-Aufrufe, um Missbrauch zu verhindern. Überprüfen Sie die Header:
X-RateLimit-Limit- Maximal zulässige AnfragenX-RateLimit-Remaining- Verbleibende Anfragen im ZeitfensterX-RateLimit-Reset- Unix-Timestamp, wann das Limit zurückgesetzt wird
async function makeEbayRequest(url, options, retries = 3) {
for (let i = 0; i < retries; i++) {
const response = await fetch(url, options)
const remaining = response.headers.get('X-RateLimit-Remaining')
if (remaining && parseInt(remaining) < 10) {
console.warn('Ratenbegrenzung niedrig:', remaining)
}
if (response.status === 429) {
const resetTime = response.headers.get('X-RateLimit-Reset')
const waitTime = (parseInt(resetTime) - Date.now() / 1000) * 1000
await sleep(waitTime)
continue
}
return response
}
throw new Error('Ratenbegrenzung erreicht')
}
Testen mit Apidog
eBay APIs sind produktionskritisch. Testen Sie gründlich, bevor Sie Änderungen live schalten.

1. Umgebung einrichten
EBAY_APP_ID: your_app_id
EBAY_CERT_ID: your_cert_id
EBAY_ACCESS_TOKEN: stored_token
EBAY_REFRESH_TOKEN: stored_refresh
EBAY_MARKETPLACE_ID: EBAY_US
BASE_URL: https://api.ebay.com
2. Angebots-Payloads validieren
pm.test('Angebot hat erforderliche Felder', () => {
const requestBody = JSON.parse(pm.request.body.raw)
pm.expect(requestBody).to.have.property('sku')
pm.expect(requestBody).to.have.property('marketplaceId')
pm.expect(requestBody.pricingSummary).to.have.property('price')
})
pm.test('Preis ist gültig', () => {
const requestBody = JSON.parse(pm.request.body.raw)
const price = parseFloat(requestBody.pricingSummary.price.value)
pm.expect(price).to.be.above(0)
})
3. Auftragsabwicklung testen
pm.test('Auftragsantwort ist gültig', () => {
const response = pm.response.json()
pm.expect(response).to.have.property('orderId')
pm.expect(response.orderPaymentStatus).to.eql('BEZAHLT')
pm.expect(response.lineItems).to.be.an('array')
})
Testen Sie eBay APIs mit Apidog – kostenlos
Häufige Fehler und Behebungen
401 Nicht autorisiert
Ursache: Token abgelaufen oder ungültig.
Behebung: Verwenden Sie den Refresh-Token, um einen neuen Access-Token zu erhalten:
const response = await fetch('https://api.ebay.com/identity/v1/oauth2/token', {
method: 'POST',
headers: {
'Content-Type': 'application/x-www-form-urlencoded',
'Authorization': 'Basic ' + Buffer.from(APP_ID + ':' + CERT_ID).toString('base64')
},
body: new URLSearchParams({
grant_type: 'refresh_token',
refresh_token: storedRefreshToken
})
})
10002: API-Fehler - Ungültiger Access Token
Ursache: Access Token abgelaufen.
Behebung: Aktualisieren Sie den Token sofort.
21916684: Artikel existiert nicht
Ursache: Versuch, eine SKU zu aktualisieren, die nicht erstellt wurde.
Behebung: Erstellen Sie zuerst den Inventargegenstand, dann das Angebot.
10003: Ungültige SKU
Ursache: SKU-Format ungültig.
Behebung: SKUs müssen innerhalb Ihres Inventars eindeutig sein und dürfen nur alphanumerische Zeichen, Bindestriche und Unterstriche enthalten.
Ratenbegrenzung (429)
Ursache: Zu viele Anfragen.
Behebung: Backoff implementieren. eBay-Limits variieren je nach API und Endpunkt.
Alternativen und Vergleiche
| Funktion | eBay | Amazon SP-API | Etsy |
|---|---|---|---|
| Inventory API | ✓ | ✓ | Begrenzt |
| Listing API | ✓ | ✓ | ✓ |
| Order API | ✓ | ✓ | ✓ |
| Fulfillment API | ✓ | ✓ | Begrenzt |
| Kostenlose Stufe | Entwicklerprogramm | Begrenzt | Begrenzt |
| API-Komplexität | Mittel | Hoch | Niedrig |
Die eBay-API ist zugänglicher als die von Amazon, aber weniger funktionsreich. Etsy ist am einfachsten, aber für größere Verkäufer begrenzt.
Anwendungsfälle aus der Praxis
Multichannel-Verkauf. Ein Verkäufer listet auf eBay, Amazon und der eigenen Website. Das Inventar wird plattformübergreifend synchronisiert. Wenn auf einem Kanal verkauft, wird die Menge überall reduziert.
Automatisierte Preisgestaltung. Ein Verkäufer überwacht Wettbewerber und passt Preise über die API an. Wenn ein Wettbewerber die Preise senkt, passen sich die Preise des Verkäufers automatisch an, um wettbewerbsfähig zu bleiben.
Massenangebotserstellung. Ein Verkäufer mit 10.000 Artikeln erstellt Angebote in großen Mengen. Die API akzeptiert CSV-Uploads und erstellt automatisch Tausende von Angeboten.
Fazit
Das haben Sie gelernt:
- Authentifizierung mit OAuth 2.0 unter Verwendung von App-Zugangsdaten
- Inventar mit SKUs verwalten
- Angebote erstellen und veröffentlichen
- Bestellungen und Lieferungen bearbeiten
- Rücksendungen abwickeln
- Vor dem Go-Live mit Apidog testen
Ihre nächsten Schritte:
- Melden Sie sich für das eBay Developers Program an
- Erstellen Sie eine Anwendung und rufen Sie Anmeldeinformationen ab
- Implementieren Sie den OAuth-Fluss
- Erstellen Sie Ihren ersten Inventargegenstand
- Veröffentlichen Sie ein Testangebot
Testen Sie eBay APIs mit Apidog – kostenlos
FAQ
Benötige ich ein Geschäftskonto, um APIs zu nutzen?Ja. eBay APIs sind für verifizierte Verkäufer. Melden Sie sich für ein Verkäuferkonto an und schließen Sie die Verifizierung ab.
Was ist der Unterschied zwischen Inventar und Angeboten?Inventar speichert Produktinformationen (Titel, Beschreibung, Bilder). Angebote verknüpfen Inventar mit einem Marktplatz und enthalten Preis- und Abwicklungsinformationen. Mehrere Angebote können auf dasselbe Inventar verweisen.
Wie lange bleiben Angebote aktiv?Angebote mit GTC (gültig bis auf Widerruf) bleiben aktiv, bis Sie sie zurückziehen oder der Artikel ausverkauft ist.
Kann ich international über die API verkaufen?Ja. Setzen Sie marketplaceId auf verschiedene Werte (EBAY_US, EBAY_UK, EBAY_DE usw.). Sie müssen die Anforderungen jedes Marktplatzes erfüllen.
Was ist die API-Ratenbegrenzung?Die Limits variieren je nach Endpunkt und Ihrem Kontostatus. Überprüfen Sie die Antwort-Header für Ihre aktuellen Limits.
Wie erhalte ich Versandetiketten?eBay bietet über die Fulfillment API vergünstigte Versandetiketten an. Sie erstellen die Sendung und eBay generiert ein Etikett.
