Listings & Offers

Listings & Offers

In eBay, an Offer is what makes a product publicly visible on the marketplace. It connects an inventory item (SKU) to a marketplace, category, price, and policies. A product can exist in the Inventory API without being listed — it only becomes a public listing when an offer is created and published.


API endpoints

MethodPathDescriptionAPI Reference
POST/api/v1/products/listingsCreate and publish a single offerref
POST/api/v1/products/listings/batchCreate multiple offers in batchref
POST/api/v2/products/listings/publishPublish an existing unpublished offerref
POST/api/v2/products/listings/migrateMigrate legacy listings to Inventory APIref
GET/api/v1/products/listingsGet all listings (Trading API)ref
GET/api/v1/products/listings/{id}Get a single listing with offersref
PUT/api/v1/listings/{offerId}Update an existing offerref

Creating and publishing a single offer (v1)

POST /api/v1/products/listings

This endpoint creates the offer and immediately attempts to publish it in a single call. The product (SKU) must already exist in the Inventory API before you can create an offer for it — see Products & Variants.

Before using this endpoint, ensure your account meets all Getting Started prerequisites (Payoneer, seller program enrollment, policies, and at least one location).

Full request payload:

POST /api/v1/products/listings
{
  "listing": {
    "sku": "MY-PRODUCT-001",
    "marketplaceId": "EBAY_US",
    "format": "FIXED_PRICE",
    "availableQuantity": 10,
    "categoryId": "9355",
    "listingDescription": "Full HTML or plain-text description of the product.",
    "listingDuration": "GTC",
    "listingPolicies": {
      "fulfillmentPolicyId": "6196932000",
      "paymentPolicyId": "6196934000",
      "returnPolicyId": "6196936000"
    },
    "merchantLocationKey": "WAREHOUSE-US-01",
    "pricingSummary": {
      "price": {
        "currency": "USD",
        "value": "29.99"
      }
    }
  }
}
FieldRequiredNotes
skuYesMust match a product in the Inventory API
marketplaceIdYese.g. EBAY_US — use underscore format
formatYesUse "FIXED_PRICE"
categoryIdYeseBay category ID for your marketplace. Use GET /api/v2/categories to find the right one → ref
listingDescriptionYesAccepts HTML. Shown on the eBay listing page
listingDurationYesUse "GTC" (Good Till Cancelled) for fixed-price listings
listingPolicies.fulfillmentPolicyIdYesMust belong to the same marketplaceId
listingPolicies.paymentPolicyIdYesMust belong to the same marketplaceId
listingPolicies.returnPolicyIdYesMust belong to the same marketplaceId
merchantLocationKeyYesLocation created via POST /api/v2/locations
pricingSummary.priceYescurrency and value as string
availableQuantityNoDefaults to inventory quantity on the product if omitted

A successful response returns an offerId. Save this ID — you will need it to update the offer later.

API Reference


Publishing an existing offer (v2)

POST /api/v2/products/listings/publish

Publishes an offer that was already created but not yet published — for example, after using POST /api/v1/products/listings/batch to bulk-create offers. Requires the offerId and marketplaceId.

POST /api/v2/products/listings/publish
{
  "listing": {
    "offerId": "OFFER_ID_HERE",
    "marketplaceId": "EBAY_US"
  }
}

API Reference


Updating an offer (v1)

PUT /api/v1/listings/{offerId}

The offerId is returned when you create an offer. You can also retrieve it by calling GET /api/v1/products/listings/{listingId} — the offerId appears inside the Offers array in the response.

Use caseHow
Update priceSend pricingSummary.price in the offer payload
Update quantityInclude inventory: true in the payload
Update description, policies, durationSend the full offer object with the updated fields

Price lives on the Offer, not on the product. Sending a price update to PUT /api/v2/products/{sku} will return 200 OK but will not change the price on eBay. Always update price via PUT /api/v1/listings/{offerId}.

Example — update price:

PUT /api/v1/listings/{offerId}
{
  "listing": {
    "marketplaceId": "EBAY_US",
    "pricingSummary": {
      "price": {
        "currency": "USD",
        "value": "24.99"
      }
    }
  }
}

API Reference


Getting listings (v1)

GET /api/v1/products/listings

Uses eBay's Trading API (GetSellerList) internally. Returns listings from the last 30 days by default.

Limits:

  • Max time range: 120 days
  • Max 300 requests per 15-second window

API Reference


Getting a single listing (v1)

GET /api/v1/products/listings/{listingId}

Returns full item details via Trading API (GetItem) plus the associated offers fetched from the Inventory API. For variant products, returns one offer per variant SKU in the Offers array.

API Reference


Creating offers in batch (v1)

POST /api/v1/products/listings/batch

Creates multiple offers in a single request using eBay's bulk_create_offer. This is the required third step when publishing a variant product group — see Products & VariantsComplete flow: create and publish a variant group.

API Reference