วิธีใช้ eBay API

Ashley Innocent

Ashley Innocent

24 March 2026

วิธีใช้ eBay API

สรุปโดยย่อ

API ของ eBay ช่วยให้คุณสามารถจัดการสินค้าคงคลัง, รายการสินค้า, คำสั่งซื้อ และการชำระเงินในตลาดซื้อขายที่ใหญ่ที่สุดในโลกได้ คุณจะยืนยันตัวตนด้วย OAuth 2.0, เรียกใช้ endpoint api.ebay.com/sell และจัดการข้อจำกัดอัตรา (rate limits) อย่างระมัดระวัง สำหรับการทดสอบ ให้ใช้ Apidog เพื่อตรวจสอบความถูกต้องของข้อมูลรายการสินค้า, ทดสอบกระบวนการจัดการคำสั่งซื้อ และให้แน่ใจว่าการผสานรวมของคุณสามารถจัดการกับข้อจำกัดของ API ได้อย่างราบรื่น

บทนำ

eBay เชื่อมโยงผู้ซื้อและผู้ขายทั่วโลก API ช่วยให้ผู้ขายสามารถจัดการสินค้าคงคลังโดยอัตโนมัติ, สร้างรายการสินค้าจำนวนมาก, ประมวลผลคำสั่งซื้อ, จัดการการจัดส่ง และจัดการการคืนสินค้า ไม่ว่าคุณจะเป็นผู้ขายรายเล็กหรือองค์กรขนาดใหญ่ API นี้ก็สามารถปรับขนาดได้

ส่วนหลักของ API:

💡
หากคุณกำลังสร้างการผสานรวมกับ eBay, Apidog ช่วยคุณทดสอบการสร้างรายการสินค้า, ตรวจสอบความถูกต้องของคำตอบจากคำสั่งซื้อ, และทำให้แน่ใจว่าการผสานรวมของคุณจัดการกับข้อจำกัดอัตรา (rate limits) และข้อผิดพลาดได้อย่างถูกต้อง
button

ทดสอบ API ของ eBay ด้วย Apidog - ฟรี

เมื่อจบคู่มือนี้ คุณจะสามารถ:

การยืนยันตัวตนด้วย OAuth 2.0

eBay ใช้ OAuth 2.0 สำหรับการยืนยันตัวตน API คุณจะต้องสร้างแอปพลิเคชันในโปรแกรมสำหรับนักพัฒนา eBay (eBay Developers Program)

image-234.png

สร้างแอปพลิเคชัน

  1. ไปที่ developers.ebay.com
  2. ลงทะเบียนสำหรับบัญชีนักพัฒนา
  3. สร้างแอปพลิเคชันใน Developer Console
  4. รับ 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()

สโคปที่จำเป็น

การจัดการสินค้าคงคลัง

สินค้าคงคลังแสดงถึงผลิตภัณฑ์ที่คุณขาย

สร้างสถานที่เก็บสินค้าคงคลัง

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"
    }
  }'

ฟิลด์สำคัญ:

เผยแพร่ข้อเสนอ

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"
  }'

ผู้ให้บริการขนส่ง:

การจัดการการคืนสินค้า

รับรายละเอียดการคืนสินค้า

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):

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 มีความสำคัญอย่างยิ่งต่อการใช้งานจริง ควรทดสอบอย่างละเอียดก่อนทำการเปลี่ยนแปลงใดๆ

image-235.png

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 ซึ่งช่วยสร้างรายการสินค้าได้หลายพันรายการโดยอัตโนมัติ

บทสรุป

นี่คือสิ่งที่คุณได้เรียนรู้:

ขั้นตอนต่อไปของคุณ:

  1. สมัครโปรแกรมสำหรับนักพัฒนา eBay (eBay Developers Program)
  2. สร้างแอปพลิเคชันและรับข้อมูลรับรอง
  3. ใช้งานขั้นตอน OAuth
  4. สร้างรายการสินค้าคงคลังแรกของคุณ
  5. เผยแพร่รายการทดสอบ

ทดสอบ API ของ eBay ด้วย Apidog - ฟรี

button

คำถามที่พบบ่อย

ฉันจำเป็นต้องมีบัญชีธุรกิจเพื่อใช้ API หรือไม่?ใช่ API ของ eBay มีไว้สำหรับผู้ขายที่ได้รับการยืนยัน ลงทะเบียนสำหรับบัญชีผู้ขายและดำเนินการยืนยันให้เสร็จสมบูรณ์

สินค้าคงคลัง (inventory) กับข้อเสนอ (offers) แตกต่างกันอย่างไร?สินค้าคงคลังจะเก็บข้อมูลผลิตภัณฑ์ (ชื่อ, รายละเอียด, รูปภาพ) ข้อเสนอจะเชื่อมโยงสินค้าคงคลังไปยังตลาดกลางพร้อมข้อมูลราคาและการดำเนินการจัดส่ง ข้อเสนอหลายรายการสามารถอ้างอิงถึงสินค้าคงคลังเดียวกันได้

รายการสินค้าจะยังคงใช้งานได้นานแค่ไหน?รายการสินค้าที่มี GTC (ดีจนกว่าจะยกเลิก) จะยังคงใช้งานได้จนกว่าคุณจะถอนออกหรือสินค้าหมด

ฉันสามารถขายสินค้าระหว่างประเทศผ่าน API ได้หรือไม่?ได้ คุณสามารถตั้งค่า marketplaceId เป็นค่าต่างๆ (เช่น EBAY_US, EBAY_UK, EBAY_DE เป็นต้น) คุณจะต้องปฏิบัติตามข้อกำหนดของแต่ละตลาดกลาง

ข้อจำกัดอัตรา (rate limit) ของ API คืออะไร?ข้อจำกัดจะแตกต่างกันไปตาม endpoint และระดับบัญชีของคุณ ตรวจสอบส่วนหัว (response headers) เพื่อดูข้อจำกัดปัจจุบันของคุณ

ฉันจะรับฉลากการจัดส่งได้อย่างไร?eBay มีฉลากการจัดส่งในราคาพิเศษผ่าน Fulfillment API คุณสร้างการจัดส่งและ eBay จะสร้างฉลากให้

ฝึกการออกแบบ API แบบ Design-first ใน Apidog

ค้นพบวิธีที่ง่ายขึ้นในการสร้างและใช้ API