ÖZET
eBay API'leri, dünyanın en büyük pazar yerinde envanteri, ilanları, siparişleri ve ödemeleri yönetmenizi sağlar. OAuth 2.0 ile kimlik doğrulaması yapar, `api.ebay.com/sell` uç noktalarını çağırır ve hız sınırlarını dikkatli bir şekilde yönetirsiniz. Test etmek için Apidog'u kullanarak ilan yüklerini doğrulayabilir, sipariş işlemeyi test edebilir ve entegrasyonunuzun API limitlerini sorunsuz bir şekilde ele aldığından emin olabilirsiniz.
Giriş
eBay, alıcıları ve satıcıları küresel olarak birbirine bağlar. API, satıcıların envanter yönetimini otomatikleştirmesine, toplu ilan oluşturmasına, siparişleri işlemesine, gönderimi yönetmesine ve iadeleri ele almasına olanak tanır. İster küçük bir satıcı ister bir kuruluş olun, API ölçeklenebilir.
Ana API alanları:
- Envanter API'si - Ürün envanterini yönetin
- İlan API'si - Öğe ilanlarını oluşturun ve yönetin
- Sipariş API'si - Siparişleri ve gönderimleri işleyin
- Gerçekleştirme API'si - Gönderimi ve takibi yönetin
- Analiz API'si - Satış raporlarını çekin
eBay API'lerini Apidog ile test edin - ücretsiz
Bu rehberin sonunda şunları yapabileceksiniz:
- eBay OAuth 2.0 ile kimlik doğrulaması yapma
- Envanter oluşturma ve yönetme
- İlanları yayınlama
- Siparişleri ve gönderimleri işleme
- İadeleri ve geri ödemeleri yönetme
- Apidog ile test etme
OAuth 2.0 ile Kimlik Doğrulama
eBay, API kimlik doğrulaması için OAuth 2.0 kullanır. eBay Geliştiriciler Programı'nda bir uygulama oluşturmanız gerekecektir.

Uygulama oluşturun
- developers.ebay.com adresine gidin
- Bir geliştirici hesabı için kaydolun
- Geliştirici Konsolu'nda bir uygulama oluşturun
- Uygulama Kimliğinizi (istemci kimliği) ve Sertifika Kimliğinizi (istemci gizli anahtarı) alın
OAuth akışı
Adım 1: Kullanıcı yetkilendirmesi
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
Adım 2: Yetkilendirme kodu alın
Kullanıcı yetkilendirir, yönlendirme URI'nizde bir kod alırsınız.
Adım 3: Belirteçler için takas edin
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()
Gerekli kapsamlar
https://api.ebay.com/oauth/api_scope/sell.inventory- Envanter yönetimihttps://api.ebay.com/oauth/api_scope/sell.listings- İlanlarhttps://api.ebay.com/oauth/api_scope/sell.orders- Siparişlerhttps://api.ebay.com/oauth/api_scope/sell.fulfillment- Gerçekleştirmehttps://api.ebay.com/oauth/api_scope/sell.account- Hesap yönetimi
Envanter yönetimi
Envanter, sattığınız ürünleri temsil eder.
Envanter konumu oluşturun
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"
}
}'
Bir envanter öğesi oluşturun
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
}
}
}'
Envanteri güncelleyin
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
}
}
}'
Envanter öğesini alın
curl -X GET "https://api.ebay.com/sell/inventory/v1/inventory_item/SKU123" \
-H "Authorization: Bearer ACCESS_TOKEN"
Öğeleri listeleme
Bir teklif oluşturun
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"
}
}'
Anahtar alanlar:
sku- Envanter SKU'nuzmarketplaceId- EBAY_US, EBAY_UK, EBAY_DE, vb.format- FIXED_PRICE veya AUCTIONlistingDuration- Ne kadar süre (GTC = iptal edilene kadar geçerli)price- İstediğiniz fiyat
Teklifi yayınlayın
curl -X POST "https://api.ebay.com/sell/inventory/v1/offer/OFFER_ID/publish" \
-H "Authorization: Bearer ACCESS_TOKEN"
Bir ilanı geri çekin
curl -X POST "https://api.ebay.com/sell/inventory/v1/offer/OFFER_ID/withdraw" \
-H "Authorization: Bearer ACCESS_TOKEN"
Sipariş yönetimi
Siparişleri alın
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/order?orderIds=ORDER_ID_1,ORDER_ID_2" \
-H "Authorization: Bearer ACCESS_TOKEN"
Tarihe göre filtrele:
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"
Sipariş detaylarını alın
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/order/ORDER_ID" \
-H "Authorization: Bearer ACCESS_TOKEN"
Sipariş yanıtı:
{
"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"
}
}
]
}
Gönderim ve gerçekleştirme
Gönderim etiketi oluşturun
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"
}'
Taşıyıcılar:
- USPS
- UPS
- FedEx
- DHL
İade yönetimi
İade detaylarını alın
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/return/RETURN_ID" \
-H "Authorization: Bearer ACCESS_TOKEN"
Bir iadeyi işleyin
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"
}
}'
Hız limitleri ve ele alma
eBay, kötüye kullanımı önlemek için API çağrılarını sınırlar. Başlıkları kontrol edin:
X-RateLimit-Limit- İzin verilen maksimum istek sayısıX-RateLimit-Remaining- Pencerede kalan istek sayısıX-RateLimit-Reset- Limitin sıfırlandığı Unix zaman damgası
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('Rate limit low:', 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('Rate limited')
}
Apidog ile Test Etme
eBay API'leri üretim açısından kritik öneme sahiptir. Canlı değişiklikler yapmadan önce iyice test edin.

1. Ortam kurulumu
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. İlan yüklerini doğrulayın
pm.test('Listing has required fields', () => {
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('Price is valid', () => {
const requestBody = JSON.parse(pm.request.body.raw)
const price = parseFloat(requestBody.pricingSummary.price.value)
pm.expect(price).to.be.above(0)
})
3. Sipariş işlemeyi test edin
pm.test('Order response is valid', () => {
const response = pm.response.json()
pm.expect(response).to.have.property('orderId')
pm.expect(response.orderPaymentStatus).to.eql('PAID')
pm.expect(response.lineItems).to.be.an('array')
})
eBay API'lerini Apidog ile test edin - ücretsiz
Yaygın hatalar ve düzeltmeler
401 Yetkisiz
Neden: Belirteç süresi doldu veya geçersiz.
Düzeltme: Yeni bir erişim belirteci almak için yenileme belirtecini kullanın:
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 hatası - Geçersiz erişim belirteci
Neden: Erişim belirtecinin süresi doldu.
Düzeltme: Belirteci hemen yenileyin.
21916684: Öğe mevcut değil
Neden: Oluşturulmamış bir SKU'yu güncellemeye çalışılıyor.
Düzeltme: Önce envanter öğesini oluşturun, ardından teklifi oluşturun.
10003: Geçersiz SKU
Neden: SKU formatı geçersiz.
Düzeltme: SKU'lar envanterinizde benzersiz olmalı ve yalnızca alfanümerik karakterler, kısa çizgiler ve alt çizgiler içerebilir.
Hız limiti (429)
Neden: Çok fazla istek.
Düzeltme: Geri çekilme (backoff) uygulayın. eBay limitleri API'ye ve uç noktaya göre değişir.
Alternatifler ve Karşılaştırmalar
| Özellik | eBay | Amazon SP-API | Etsy |
|---|---|---|---|
| Envanter API'si | ✓ | ✓ | Sınırlı |
| İlan API'si | ✓ | ✓ | ✓ |
| Sipariş API'si | ✓ | ✓ | ✓ |
| Gerçekleştirme API'si | ✓ | ✓ | Sınırlı |
| Ücretsiz katman | Geliştirici programı | Sınırlı | Sınırlı |
| API karmaşıklığı | Orta | Yüksek | Düşük |
eBay'in API'si Amazon'unkinden daha erişilebilir ancak daha az özellik sunar. Etsy en basitidir ancak büyük satıcılar için sınırlıdır.
Gerçek dünya kullanım senaryoları
Çok kanallı satış. Bir satıcı eBay'de, Amazon'da ve kendi sitesinde listeler. Envanter platformlar arasında senkronize edilir. Bir kanalda satıldığında, miktar her yerde azalır.
Otomatik yeniden fiyatlandırma. Bir satıcı rakipleri izler ve API aracılığıyla fiyatları ayarlar. Bir rakip fiyatları düşürdüğünde, satıcının fiyatları rekabetçi kalmak için otomatik olarak ayarlanır.
Toplu liste oluşturma. 10.000 ürünü olan bir satıcı toplu ilanlar oluşturur. API, CSV yüklemelerini kabul ederek binlerce ilanı otomatik olarak oluşturur.
Sonuç
İşte öğrendikleriniz:
- Uygulama kimlik bilgilerini kullanarak OAuth 2.0 ile kimlik doğrulaması yapma
- SKU'larla envanteri yönetme
- İlan oluşturma ve yayınlama
- Siparişleri ve gönderimleri işleme
- İadeleri ele alma
- Canlıya geçmeden önce Apidog ile test etme
Sonraki adımlarınız:
- eBay Geliştiriciler Programı'na başvurun
- Bir uygulama oluşturun ve kimlik bilgilerini alın
- OAuth akışını uygulayın
- İlk envanter öğenizi oluşturun
- Bir test ilanı yayınlayın
eBay API'lerini Apidog ile test edin - ücretsiz
Sıkça Sorulan Sorular
API'leri kullanmak için işletme hesabına ihtiyacım var mı?Evet. eBay API'leri doğrulanmış satıcılar içindir. Bir satıcı hesabı için kaydolun ve doğrulamayı tamamlayın.
Envanter ve teklifler arasındaki fark nedir?Envanter ürün bilgilerini (başlık, açıklama, resimler) saklar. Teklifler, envanteri fiyatlandırma ve gerçekleştirme bilgileriyle bir pazar yerine bağlar. Birden fazla teklif aynı envanteri referans alabilir.
İlanlar ne kadar süre aktif kalır?`GTC` (iptal edilene kadar geçerli) ilanlar, siz onları geri çekene veya ürünün stoğu bitene kadar aktif kalır.
API aracılığıyla uluslararası satış yapabilir miyim?Evet. `marketplaceId` değerini farklı değerlere (EBAY_US, EBAY_UK, EBAY_DE, vb.) ayarlayın. Her pazar yerinin gereksinimlerine uymanız gerekecektir.
API hız limiti nedir?Limitler uç noktaya ve hesap seviyenize göre değişir. Mevcut limitleriniz için yanıt başlıklarını kontrol edin.
Gönderim etiketlerini nasıl alabilirim?eBay, Gerçekleştirme API'si aracılığıyla indirimli gönderim etiketleri sağlar. Siz gönderimi oluşturursunuz ve eBay bir etiket oluşturur.
