# eBay Best Offer price API: get what the buyer actually paid

URL: https://ebaysoldlistingsapi.com/blog/ebay-best-offer-price-api

Updated: 2026-10-22



eBay's sold pages show the listing price on Best Offer sales, not what the buyer paid. Across 9,500 accepted-offer sales, buyers paid a median 14.2% less. Here is how to get the real accepted price with one API parameter, and how the main sold-data APIs compare.



Short answer: when an eBay listing sells through an accepted Best Offer, the sold page keeps showing the original listing price. The buyer usually paid less. Add `bestOfferPrice=true` to any sold search on the eBay Sold Listings API and every accepted-offer sale also returns `acceptedOfferPrice`, the price the buyer actually paid, at no extra cost.

### How much the listing price overstates Best Offer sales

We looked up the accepted price on 9,500 US accepted-offer sales between October 11 and October 22, 2026, across trading cards, phones and electronics, sneakers and fashion, watches and cameras.

Measure | Result
--- | ---
Median gap between listing price and price paid | 14.2% lower
1 in 10 accepted-offer sales | 31.8% lower or more
Average gap | 16.2% lower
Sales where the buyer paid the full listing price | 160 of 9,500 (1.7%)
(Accepted price vs listing price on 9,500 US eBay accepted-offer sales, October 2026.)

On items where many sales close on offers, like graded cards, sneakers and used electronics, averaging the sold page prices therefore pushes your comps up by roughly 14% on those rows. For a repricer, a valuation tool or a buy-list, that is the difference between a fair offer and an overpay.

### How to get the accepted offer price

```
curl "https://api.ebaysoldlistingsapi.com/scrape?keyword=charizard+ex+199/165+psa+10&bestOfferPrice=true" \
  -H "Authorization: Bearer YOUR_API_KEY"
```

Every sale with `bestOfferAccepted: true` then carries two extra fields. `soldPrice` is never changed, so you always have both numbers.

Field | Meaning
--- | ---
`acceptedOfferPrice` | The price the buyer actually paid, as a decimal string in the sale currency. Null until found.
`acceptedOfferPriceStatus` | `found` (final), `pending` (still being looked up, for up to about a day, so the same search later returns it) or `not_available`.

```
import requests

r = requests.get(
    "https://api.ebaysoldlistingsapi.com/scrape",
    params={"keyword": "air jordan 1 chicago 2015", "bestOfferPrice": "true"},
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    timeout=90,
)
r.raise_for_status()
for sale in r.json()["results"]:
    paid = sale.get("acceptedOfferPrice") if sale.get("acceptedOfferPriceStatus") == "found" else sale["soldPrice"]
    print(sale["endedAt"], paid, sale["title"])
```

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`.

### Not just trading cards

Some services only return accepted prices for collectibles. In the same October 2026 sample we returned the accepted price on 791 phone and electronics sales, 426 sneaker and fashion sales, 98 watch sales and 2,934 trading card sales. Accepted prices are available for sales priced in US dollars.

### How eBay sold-data APIs handle Best Offer (October 2026)

API | Accepted offer price | How | Extra cost
--- | --- | --- | ---
eBay Sold Listings API | Yes, all categories (USD sales) | `bestOfferPrice=true` on any sold search | None, 1 request per page of up to 240 sales
CompsAPI | Yes | `best_offer=1` | None stated
Trawl | Collectibles only (cards, comics) | `details=1` | Detail pages cost more credits
Soldgraph | No, flag only | `best_offer_accepted` flag; displayed prices are not verified accepted-offer prices | Not applicable
eBay Browse API | No | Active listings only | Not applicable
(From each provider's public documentation, checked October 22, 2026.)

Where the eBay Sold Listings API stands out: the accepted price comes back in the same call as the rest of the sale, on every plan including Free, across categories, with up to 240 sales per page and live data from 8 eBay marketplaces. The Unlimited plan (https://ebaysoldlistingsapi.com/#pricing) gives you all of it without counting requests.

### Try it

Create a free key, then add `bestOfferPrice=true` to a search you already run. Full field reference: Best Offer prices docs (https://ebaysoldlistingsapi.com/docs/best-offer-prices).

Q: Does eBay show the accepted Best Offer price on sold listings?
A: Not on the sold search results. eBay shows the original listing price with a Best Offer accepted label, so the sold price overstates what the buyer paid. Across 9,500 US accepted-offer sales in October 2026, buyers paid a median 14.2% less than the listing price.

Q: How do I get the accepted offer price through an API?
A: Add bestOfferPrice=true to a sold search on the eBay Sold Listings API. Each accepted-offer sale then includes acceptedOfferPrice and acceptedOfferPriceStatus, alongside the unchanged soldPrice.

Q: Does it cost extra?
A: No. bestOfferPrice=true uses the same single request as any sold search, on every plan including Free.

Q: What does pending mean?
A: The accepted price is still being looked up, for up to about a day. Run the same search later and it returns the price once found.

Q: Does it work for categories other than trading cards?
A: Yes. In October 2026 accepted prices were returned for phones and electronics, sneakers and fashion, watches and cameras as well as trading cards. Accepted prices are available for sales priced in US dollars.
