ebaysoldlistingsDOCS

Best Offer prices

Get the price the buyer actually paid on eBay sales that closed through an accepted Best Offer, with bestOfferPrice=true.

When a listing sells through an accepted Best Offer, eBay's sold page shows the original listing price, not what the buyer paid. Pricing from those rows overstates the market, most of all on items where many sales close on offers. Add bestOfferPrice=true to any sold search to get the accepted price.

GET/scrape?bestOfferPrice=truecost 1 request, no extra charge
curl "https://api.ebaysoldlistingsapi.com/scrape?keyword=charizard+psa+10&bestOfferPrice=true" \
  -H "Authorization: Bearer YOUR_API_KEY"

Every sale with bestOfferAccepted: true then also carries:

acceptedOfferPricestring | null

The price the buyer actually paid, as a decimal string in the sale currency. Null until it is found. soldPrice is never changed, so you always have both.

acceptedOfferPriceStatusstring

found: the accepted price is in the response and final. pending: still being looked up (for up to about a day), so the same search later can return it. not_available: no accepted price is available for this sale, for example sales not priced in US dollars.

Accepted offer row
{
  "itemId": "3976xxxxxxxx",
  "title": "Charizard ex 223/197 Obsidian Flames PSA 10",
  "soldPrice": "189.99",
  "soldCurrency": "USD",
  "bestOfferAccepted": true,
  "acceptedOfferPrice": "162.00",
  "acceptedOfferPriceStatus": "found"
}
Pricing tip.

For a market price, use acceptedOfferPrice when its status is found, and treat soldPrice as an upper bound on accepted-offer rows that are still pending or not_available.

Look up saved prices later (free)

GET /best-offer-prices returns the accepted prices found so far for up to 100 item IDs at once. Use it to fill in pending rows from earlier searches without running the search again. It does not count against your monthly requests, so a daily job can refresh earlier sales in one call.

GET/best-offer-prices?itemIds=...cost Free
curl "https://api.ebaysoldlistingsapi.com/best-offer-prices?itemIds=389012345678,389087654321" \
  -H "Authorization: Bearer YOUR_API_KEY"
Response
{
  "items": [
    { "itemId": "389012345678", "acceptedOfferPrice": "405.00", "acceptedOfferPriceStatus": "found" },
    { "itemId": "389087654321", "acceptedOfferPrice": null, "acceptedOfferPriceStatus": "pending" }
  ]
}

An item ID that never came back with bestOfferAccepted: true in a bestOfferPrice=true search returns the status unknown. The lookup uses your normal per-minute rate limit.

On this page