Across 5,859 matched sales, the public sold page showed a higher price than the buyer paid 99.0% of the time, by a median of 14.9%. Here is the gap, by category, and what it does to anything priced off those comps.
When a listing sells through an accepted Best Offer, eBay's public sold page shows the asking price, not the amount the buyer paid. The accepted figure is not on that page at all. So every tool, spreadsheet and scraper that reads the public sold page reports a number that is too high, and nothing in the data tells you by how much.
We hold both figures, so we measured the gap. Over the 90 days to 10 October 2026 we matched 5,859 completed Best Offer sales across 5,840 distinct listings, from 93 searches in 12 categories. Each sale is matched on listing id, so the asking price and the accepted price belong to the same item on the same sale. No row was thrown away.
99.0% of accepted Best Offer sales read high on the public sold page. 0.7% match within half a percent and 0.4% read low.
| Overstated by more than | Share of accepted Best Offer sales |
|---|---|
| 5% | 89.2% |
| 10% | 68.9% |
| 25% | 23.4% |
| 50% | 5.9% |
| 100% | 0.8% |
Every one of the 12 categories sits above 11% on a money weighted basis. Offer heavy categories are worse, and the ones where sellers list high and expect to negotiate are worst of all.
| Category | Sales matched | Read high | Median gap | p90 | Money weighted |
|---|---|---|---|---|---|
| Auto parts | 228 | 96.9% | 12.2% | 51.3% | 23.9% |
| Sneakers | 857 | 99.9% | 20.0% | 50.0% | 22.0% |
| Graded trading cards | 390 | 99.7% | 15.7% | 40.0% | 17.3% |
| Jewellery | 652 | 99.1% | 17.6% | 55.6% | 16.8% |
| Designer handbags | 723 | 98.9% | 17.5% | 46.7% | 15.8% |
| Video games and consoles | 446 | 99.8% | 14.7% | 36.4% | 15.7% |
| Phones and tablets | 300 | 99.7% | 10.0% | 35.9% | 15.3% |
| Golf clubs | 599 | 99.3% | 13.7% | 33.3% | 14.5% |
| Musical instruments | 365 | 98.4% | 13.2% | 33.3% | 14.4% |
| Coins and bullion | 362 | 98.1% | 11.1% | 30.0% | 13.2% |
| Luxury watches | 655 | 98.0% | 11.2% | 31.2% | 12.1% |
| Cameras and lenses | 282 | 97.9% | 11.1% | 25.0% | 11.5% |
A Best Offer is a private negotiation between a buyer and a seller. eBay publishes that the item sold and what it was listed at, and keeps the accepted amount off the public record. There is no field to parse and no query that reveals it, so this is not something a better scraper fixes. The number simply is not on the page.
That is why two tools reading the same sold page produce the same wrong answer, and why the error is invisible: nothing in the response looks off. A $15,500 watch that was listed at $24,995 reads as a $24,995 sale, forever, to everyone reading the public page.
The error is one sided. It never cancels out, because a Best Offer is almost never accepted above the asking price, so every affected comp pushes your estimate the same way.
Both sides of every pair come from the same sale on the same listing id. The asking side is what eBay's public sold page displayed, which is exactly what competing tools read. The accepted side is the amount the sale closed at, from our own data.
The honest limits:
CompsAPI returns what the sale closed at, on every plan including the free one, with best_offer on each row so you can see which sales were negotiated. Pass best_offer=only to look at nothing else.
curl -G https://api.compsapi.com/v1/sold \
-H "Authorization: Bearer YOUR_KEY" \
--data-urlencode "q=charizard psa 10" \
--data-urlencode "days=1095" \
--data-urlencode "best_offer=1"
Free key, no card, 100 requests a month. If you want to reproduce this study on your own category, that is enough to do it.
100 free requests a month · every filter on · no card
Get a free key