Get eBay Sold Prices in Python: Working Code for 2026
A copy-paste Python script that pulls eBay sold listings as JSON, drops lots and outliers, and prints a fair median. No eBay developer account needed.
Oct 22, 2026 · 2 min
Sold comps from eBay as clean JSON: send a keyword, get back up to 200 completed sales with the median already worked out. For card apps, watch dealers, resellers and AI agents.
curl "https://api.soldcomps.io/v1/sold?q=pokemon+card" -H "Authorization: Bearer $KEY"
Free: 100 requests a month, no card
query · pokemon card
$ GET /v1/sold?q=charizard+4/102 → 186 sales
Every item is a completed eBay sale with its sold price, date, condition and shipping. Up to 200 per request.
clean · 200 sales
lots · for parts · outliers → left out
The median comes back precomputed, with lots, for-parts listings, outliers and hidden Best Offers left out.
your app ← json
no eBay keyset · no OAuth · no review
No eBay developer keyset, OAuth or partner review. Get a key and make your first call in a minute.
Live eBay sales, the same data the API returns. Five free lookups a day.
Real sales from the last 90 days: what it sold for, when, and in what condition. The median skips lots, broken items and outliers.
Search a keyword, get every recent eBay sale back as JSON, with the junk already filtered out of the median.
GET /v1/sold
?q=nintendo 64 console
&condition=used
Host: api.soldcomps.io
Authorization:
Bearer sh_live_…One GET request with your API key. No eBay account, OAuth or approval.
Up to 200 recent sales. Lots, for-parts listings and outliers are flagged and left out of the stats.
$118.50
median sold price
183 clean sales from the last 90 days. 17 lots and outliers excluded.

200 sales in one call · lots, for-parts and outliers flagged and left out of the median
A single GET request with your API key. No OAuth, no XML, no pagination tokens. Pass a keyword, get back up to 200 sold listings.
Every sale includes the sold price, shipping, currency, sold date, condition, how it sold (auction, Buy It Now or Best Offer), a photo and a link to the listing.
{
"query": "pokemon card charizard",
"site": "EBAY_US",
"window_days": 90,
"count": 186,
"stats": {
"median": 42.5,
"p25": 18,
"p75": 96,
"min": 3.5,
"max": 410,
"excluded": 23,
"currency": "USD"
},
"items": [
{
"item_id": "306123456789",
"title": "Charizard ex 199/165 Pokemon 151 Special Illustration Rare NM",
"sold_price": { "value": 42.5, "currency": "USD" },
"shipping": { "value": 4.99, "currency": "USD" },
"sold_at": "2026-10-22",
"condition": "Pre-Owned",
"buying_format": "auction",
"best_offer_accepted": false,
"url": "https://www.ebay.com/itm/306123456789",
"flags": []
},
// … 185 more sales
]
}Pay per search, not per result: one request returns up to 200 sold listings. Free to start. Full pricing
| Plan | Price | Requests / mo | Up to listings | Rate limit |
|---|---|---|---|---|
| Free | Free | 100 | 20,000 | 30 req/min |
| Starter | $9/mo | 2,500 | 500,000 | 60 req/min |
| Growth Popular | $29/mo | 12,000 | 2,400,000 | 120 req/min |
| Scale | $79/mo | 60,000 | 12,000,000 | 300 req/min |
How eBay sold data works, and how to get it into your code. All guides.
A copy-paste Python script that pulls eBay sold listings as JSON, drops lots and outliers, and prints a fair median. No eBay developer account needed.
Oct 22, 2026 · 2 min
Not one you can sign up for. Finding is gone, Browse is active-only, and Marketplace Insights is closed to new developers. Here's every option left.
Oct 22, 2026 · 3 min
eBay shut down the Finding API on Feb 5, 2025. What replaced findCompletedItems, a field-by-field mapping from the old XML to JSON, and drop-in code.
Oct 22, 2026 · 3 min
A sold comps API returns recent completed sales (sold comparables) for an item as structured data, so software can price things from what actually sold instead of from asking prices. SaleHistory's sold comps API takes a keyword and returns up to 200 eBay sold listings as JSON, with the median and middle range already worked out.
Only one: the Marketplace Insights API, which returns up to 90 days of sold items. It is a Limited Release API that requires eBay business approval, and eBay currently says it is not open to new users. The old Finding API call findCompletedItems was decommissioned in February 2025, and the Browse API only returns active listings.
One request is one keyword search. It returns up to 200 completed eBay sales with title, sold price, shipping, sold date, condition, a Best Offer flag and a link to the listing, plus a median that already ignores lots, for-parts listings and outliers.
eBay shows roughly the last 90 days of completed sales, and that is the window SaleHistory returns. For multi-year trend charts, eBay's own Terapeak dashboard goes back about three years, but it has no API.
No. You sign up, get a SaleHistory API key, and send a GET request with it. There's no eBay keyset, OAuth flow or approval process, and you never pass us an eBay login.
You pay per search, not per result. The free plan includes 100 requests a month (up to 20,000 sold listings) with no card. Paid plans start at $9 a month for 2,500 requests.
Yes, every plan including Free permits commercial use, such as a repricing tool, a card scanner, a Chrome extension or an estate-sale pricing workflow.