eBay API Nutzung: Eine Anleitung

Ashley Innocent

Ashley Innocent

24 March 2026

eBay API Nutzung: Eine Anleitung

Apidog für Unternehmen

On-Premises-Bereitstellung

SSO & RBAC

SOC 2 konform

Apidog Enterprise entdecken

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:

💡
Wenn Sie eBay-Integrationen erstellen, hilft Ihnen Apidog, die Angebotserstellung zu testen, Auftragsantworten zu validieren und sicherzustellen, dass Ihre Integration Ratenbegrenzungen und Fehler korrekt handhabt.
Schaltfläche

Testen Sie eBay APIs mit Apidog – kostenlos

Am Ende dieses Leitfadens werden Sie in der Lage sein:

Authentifizierung mit OAuth 2.0

eBay verwendet OAuth 2.0 zur API-Authentifizierung. Sie müssen eine Anwendung im eBay Developers Program erstellen.

eBay Entwicklerkonsole

Eine Anwendung erstellen

  1. Gehen Sie zu developers.ebay.com
  2. Registrieren Sie sich für ein Entwicklerkonto
  3. Erstellen Sie eine Anwendung in der Developer Console
  4. 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

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:

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:

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:

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.

Apidog Test-Umgebung

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:

Ihre nächsten Schritte:

  1. Melden Sie sich für das eBay Developers Program an
  2. Erstellen Sie eine Anwendung und rufen Sie Anmeldeinformationen ab
  3. Implementieren Sie den OAuth-Fluss
  4. Erstellen Sie Ihren ersten Inventargegenstand
  5. Veröffentlichen Sie ein Testangebot

Testen Sie eBay APIs mit Apidog – kostenlos

Schaltfläche

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.

Praktizieren Sie API Design-First in Apidog

Entdecken Sie eine einfachere Möglichkeit, APIs zu erstellen und zu nutzen