สรุปโดยย่อ
API ของ eBay ช่วยให้คุณสามารถจัดการสินค้าคงคลัง, รายการสินค้า, คำสั่งซื้อ และการชำระเงินในตลาดซื้อขายที่ใหญ่ที่สุดในโลกได้ คุณจะยืนยันตัวตนด้วย OAuth 2.0, เรียกใช้ endpoint api.ebay.com/sell และจัดการข้อจำกัดอัตรา (rate limits) อย่างระมัดระวัง สำหรับการทดสอบ ให้ใช้ Apidog เพื่อตรวจสอบความถูกต้องของข้อมูลรายการสินค้า, ทดสอบกระบวนการจัดการคำสั่งซื้อ และให้แน่ใจว่าการผสานรวมของคุณสามารถจัดการกับข้อจำกัดของ API ได้อย่างราบรื่น
บทนำ
eBay เชื่อมโยงผู้ซื้อและผู้ขายทั่วโลก API ช่วยให้ผู้ขายสามารถจัดการสินค้าคงคลังโดยอัตโนมัติ, สร้างรายการสินค้าจำนวนมาก, ประมวลผลคำสั่งซื้อ, จัดการการจัดส่ง และจัดการการคืนสินค้า ไม่ว่าคุณจะเป็นผู้ขายรายเล็กหรือองค์กรขนาดใหญ่ API นี้ก็สามารถปรับขนาดได้
ส่วนหลักของ API:
- Inventory API - จัดการสินค้าคงคลัง
- Listing API - สร้างและจัดการรายการสินค้า
- Order API - ประมวลผลคำสั่งซื้อและการจัดส่ง
- Fulfillment API - จัดการการจัดส่งและการติดตาม
- Analytics API - ดึงรายงานการขาย
ทดสอบ API ของ eBay ด้วย Apidog - ฟรี
เมื่อจบคู่มือนี้ คุณจะสามารถ:
- ยืนยันตัวตนด้วย eBay OAuth 2.0
- สร้างและจัดการสินค้าคงคลัง
- เผยแพร่รายการสินค้า
- ประมวลผลคำสั่งซื้อและการจัดส่ง
- จัดการการคืนสินค้าและการคืนเงิน
- ทดสอบด้วย Apidog
การยืนยันตัวตนด้วย OAuth 2.0
eBay ใช้ OAuth 2.0 สำหรับการยืนยันตัวตน API คุณจะต้องสร้างแอปพลิเคชันในโปรแกรมสำหรับนักพัฒนา eBay (eBay Developers Program)

สร้างแอปพลิเคชัน
- ไปที่ developers.ebay.com
- ลงทะเบียนสำหรับบัญชีนักพัฒนา
- สร้างแอปพลิเคชันใน Developer Console
- รับ App ID (client ID) และ Cert ID (client secret) ของคุณ
ขั้นตอน OAuth
ขั้นตอนที่ 1: การอนุญาตจากผู้ใช้
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
ขั้นตอนที่ 2: รับรหัสการอนุญาต
ผู้ใช้อนุญาต คุณจะได้รับรหัสที่ redirect URI ของคุณ
ขั้นตอนที่ 3: แลกเปลี่ยนเป็นโทเค็น
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()
สโคปที่จำเป็น
https://api.ebay.com/oauth/api_scope/sell.inventory- การจัดการสินค้าคงคลังhttps://api.ebay.com/oauth/api_scope/sell.listings- รายการสินค้าhttps://api.ebay.com/oauth/api_scope/sell.orders- คำสั่งซื้อhttps://api.ebay.com/oauth/api_scope/sell.fulfillment- การดำเนินการจัดส่งhttps://api.ebay.com/oauth/api_scope/sell.account- การจัดการบัญชี
การจัดการสินค้าคงคลัง
สินค้าคงคลังแสดงถึงผลิตภัณฑ์ที่คุณขาย
สร้างสถานที่เก็บสินค้าคงคลัง
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"
}
}'
สร้างรายการสินค้าคงคลัง
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
}
}
}'
อัปเดตสินค้าคงคลัง
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
}
}
}'
รับรายการสินค้าคงคลัง
curl -X GET "https://api.ebay.com/sell/inventory/v1/inventory_item/SKU123" \
-H "Authorization: Bearer ACCESS_TOKEN"
การลงรายการสินค้า
สร้างข้อเสนอ
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"
}
}'
ฟิลด์สำคัญ:
sku- SKU สินค้าคงคลังของคุณmarketplaceId- EBAY_US, EBAY_UK, EBAY_DE, เป็นต้นformat- FIXED_PRICE หรือ AUCTIONlistingDuration- ระยะเวลา (GTC = ดีจนกว่าจะยกเลิก)price- ราคาที่คุณเสนอขาย
เผยแพร่ข้อเสนอ
curl -X POST "https://api.ebay.com/sell/inventory/v1/offer/OFFER_ID/publish" \
-H "Authorization: Bearer ACCESS_TOKEN"
ถอนรายการสินค้า
curl -X POST "https://api.ebay.com/sell/inventory/v1/offer/OFFER_ID/withdraw" \
-H "Authorization: Bearer ACCESS_TOKEN"
การจัดการคำสั่งซื้อ
รับคำสั่งซื้อ
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/order?orderIds=ORDER_ID_1,ORDER_ID_2" \
-H "Authorization: Bearer ACCESS_TOKEN"
กรองตามวันที่:
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"
รับรายละเอียดคำสั่งซื้อ
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/order/ORDER_ID" \
-H "Authorization: Bearer ACCESS_TOKEN"
การตอบกลับของคำสั่งซื้อ:
{
"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"
}
}
]
}
การจัดส่งและการดำเนินการจัดส่ง
สร้างฉลากการจัดส่ง
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"
}'
ผู้ให้บริการขนส่ง:
- USPS
- UPS
- FedEx
- DHL
การจัดการการคืนสินค้า
รับรายละเอียดการคืนสินค้า
curl -X GET "https://api.ebay.com/sell/fulfillment/v1/return/RETURN_ID" \
-H "Authorization: Bearer ACCESS_TOKEN"
ดำเนินการคืนสินค้า
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"
}
}'
ข้อจำกัดอัตรา (Rate limits) และการจัดการ
eBay จำกัดการเรียกใช้ API เพื่อป้องกันการใช้งานในทางที่ผิด ตรวจสอบส่วนหัว (headers):
X-RateLimit-Limit- จำนวนคำขอสูงสุดที่อนุญาตX-RateLimit-Remaining- จำนวนคำขอที่เหลืออยู่ในช่วงเวลาX-RateLimit-Reset- Unix timestamp เมื่อข้อจำกัดถูกรีเซ็ต
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
API ของ eBay มีความสำคัญอย่างยิ่งต่อการใช้งานจริง ควรทดสอบอย่างละเอียดก่อนทำการเปลี่ยนแปลงใดๆ

1. การตั้งค่าสภาพแวดล้อม
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. ตรวจสอบความถูกต้องของข้อมูลรายการสินค้า
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. ทดสอบกระบวนการจัดการคำสั่งซื้อ
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')
})
ทดสอบ API ของ eBay ด้วย Apidog - ฟรี
ข้อผิดพลาดทั่วไปและการแก้ไข
401 ไม่ได้รับอนุญาต (Unauthorized)
สาเหตุ: โทเค็นหมดอายุหรือไม่ถูกต้อง
วิธีแก้ไข: ใช้ refresh token เพื่อรับ access token ใหม่:
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 - Access token ไม่ถูกต้อง
สาเหตุ: Access token หมดอายุ
วิธีแก้ไข: รีเฟรชโทเค็นทันที
21916684: รายการสินค้าไม่มีอยู่จริง
สาเหตุ: พยายามอัปเดต SKU ที่ยังไม่ได้สร้าง
วิธีแก้ไข: สร้างรายการสินค้าคงคลังก่อน จากนั้นจึงสร้างข้อเสนอ
10003: SKU ไม่ถูกต้อง
สาเหตุ: รูปแบบ SKU ไม่ถูกต้อง
วิธีแก้ไข: SKU จะต้องไม่ซ้ำกันในสินค้าคงคลังของคุณ และสามารถมีได้เฉพาะตัวอักษรและตัวเลข, เครื่องหมายขีดกลาง และเครื่องหมายขีดล่างเท่านั้น
ข้อจำกัดอัตรา (Rate limit) (429)
สาเหตุ: มีคำขอมากเกินไป
วิธีแก้ไข: ใช้วิธี backoff ข้อจำกัดของ eBay แตกต่างกันไปตาม API และ endpoint
ทางเลือกและการเปรียบเทียบ
| คุณสมบัติ | eBay | Amazon SP-API | Etsy |
|---|---|---|---|
| API สินค้าคงคลัง | ✓ | ✓ | จำกัด |
| API รายการสินค้า | ✓ | ✓ | ✓ |
| API คำสั่งซื้อ | ✓ | ✓ | ✓ |
| API การดำเนินการจัดส่ง | ✓ | ✓ | จำกัด |
| แผนฟรี | โปรแกรมสำหรับนักพัฒนา | จำกัด | จำกัด |
| ความซับซ้อนของ API | ปานกลาง | สูง | ต่ำ |
API ของ eBay เข้าถึงได้ง่ายกว่าของ Amazon แต่มีฟีเจอร์น้อยกว่า Etsy นั้นง่ายที่สุดแต่มีข้อจำกัดสำหรับผู้ขายรายใหญ่
กรณีใช้งานจริง
การขายแบบหลายช่องทาง (Multi-channel selling) ผู้ขายลงรายการสินค้าบน eBay, Amazon และเว็บไซต์ของตนเอง สินค้าคงคลังจะซิงค์กันในทุกแพลตฟอร์ม เมื่อขายได้ในช่องทางใดช่องทางหนึ่ง จำนวนสินค้าจะถูกลดลงในทุกที่
การปรับราคาอัตโนมัติ (Automated repricing) ผู้ขายตรวจสอบคู่แข่งและปรับราคาผ่าน API เมื่อคู่แข่งลดราคา ราคาของผู้ขายจะถูกปรับโดยอัตโนมัติเพื่อรักษาความสามารถในการแข่งขัน
การลงรายการสินค้าจำนวนมาก (Bulk listing) ผู้ขายที่มีสินค้า 10,000 รายการ สร้างรายการสินค้าจำนวนมาก API รองรับการอัปโหลดไฟล์ CSV ซึ่งช่วยสร้างรายการสินค้าได้หลายพันรายการโดยอัตโนมัติ
บทสรุป
นี่คือสิ่งที่คุณได้เรียนรู้:
- ยืนยันตัวตนด้วย OAuth 2.0 โดยใช้ข้อมูลรับรองแอป
- จัดการสินค้าคงคลังด้วย SKU
- สร้างและเผยแพร่รายการสินค้า
- ประมวลผลคำสั่งซื้อและการจัดส่ง
- จัดการการคืนสินค้า
- ทดสอบด้วย Apidog ก่อนใช้งานจริง
ขั้นตอนต่อไปของคุณ:
- สมัครโปรแกรมสำหรับนักพัฒนา eBay (eBay Developers Program)
- สร้างแอปพลิเคชันและรับข้อมูลรับรอง
- ใช้งานขั้นตอน OAuth
- สร้างรายการสินค้าคงคลังแรกของคุณ
- เผยแพร่รายการทดสอบ
ทดสอบ API ของ eBay ด้วย Apidog - ฟรี
คำถามที่พบบ่อย
ฉันจำเป็นต้องมีบัญชีธุรกิจเพื่อใช้ API หรือไม่?ใช่ API ของ eBay มีไว้สำหรับผู้ขายที่ได้รับการยืนยัน ลงทะเบียนสำหรับบัญชีผู้ขายและดำเนินการยืนยันให้เสร็จสมบูรณ์
สินค้าคงคลัง (inventory) กับข้อเสนอ (offers) แตกต่างกันอย่างไร?สินค้าคงคลังจะเก็บข้อมูลผลิตภัณฑ์ (ชื่อ, รายละเอียด, รูปภาพ) ข้อเสนอจะเชื่อมโยงสินค้าคงคลังไปยังตลาดกลางพร้อมข้อมูลราคาและการดำเนินการจัดส่ง ข้อเสนอหลายรายการสามารถอ้างอิงถึงสินค้าคงคลังเดียวกันได้
รายการสินค้าจะยังคงใช้งานได้นานแค่ไหน?รายการสินค้าที่มี GTC (ดีจนกว่าจะยกเลิก) จะยังคงใช้งานได้จนกว่าคุณจะถอนออกหรือสินค้าหมด
ฉันสามารถขายสินค้าระหว่างประเทศผ่าน API ได้หรือไม่?ได้ คุณสามารถตั้งค่า marketplaceId เป็นค่าต่างๆ (เช่น EBAY_US, EBAY_UK, EBAY_DE เป็นต้น) คุณจะต้องปฏิบัติตามข้อกำหนดของแต่ละตลาดกลาง
ข้อจำกัดอัตรา (rate limit) ของ API คืออะไร?ข้อจำกัดจะแตกต่างกันไปตาม endpoint และระดับบัญชีของคุณ ตรวจสอบส่วนหัว (response headers) เพื่อดูข้อจำกัดปัจจุบันของคุณ
ฉันจะรับฉลากการจัดส่งได้อย่างไร?eBay มีฉลากการจัดส่งในราคาพิเศษผ่าน Fulfillment API คุณสร้างการจัดส่งและ eBay จะสร้างฉลากให้
