Looking for an eBay Marketplace Insights API alternative? You're in good company. Marketplace Insights is the only official eBay API that returns sold items, and it's a limited release: you apply, you explain your business case, and most of us never hear back or get turned down.
Meanwhile the product you're building still needs sold prices. This post covers what eBay actually offers, why each official route dead-ends, and a working alternative you can call today.
What eBay offers for sold data in 2026
| eBay API | Sold prices? | Can you use it? |
|---|---|---|
| Marketplace Insights | Yes, about 90 days | Limited release, approved partners only |
| Browse API | No, active listings only | Yes |
Finding API (findCompletedItems) |
Used to | Decommissioned February 2025 |
| Trading / Sell APIs | Only your own sales | Yes, for your own account |
| Terapeak (Product Research) | Yes | Browser dashboard only, no API |
So if your app needs other people's sold prices, eBay leaves you with nothing you can call.
The alternative: one GET request
CompSniper is an eBay sold listings API that needs no eBay approval, no developer account and no OAuth dance. Sign up, copy a key, call it.
curl -H "Authorization: Bearer $COMPSNIPER_API_KEY" \
"https://api.compsniper.com/v1/scrape?keyword=nintendo+switch+oled&count=240&ebaySite=ebay.com"
You get up to 240 sold listings with the sold price, sold date, condition, shipping and seller, plus a summary with the median, quartiles, min, max and average shipping.
How it compares with what Marketplace Insights would give you
| Marketplace Insights | CompSniper | |
|---|---|---|
| Access | Apply and wait for approval | Free key in a minute |
| Sold history | About 90 days | Recent sales, plus up to 3 years with /v1/research/sold
|
| Results | Up to 10,000 per search, paged | Up to 240 per request, more with Max Mode |
| Price summary | Build it yourself | Median and range in every response |
| Wrong matches | Raw keyword results | Optional AI cleanup removes accessories, parts and wrong models |
| Best Offer sales | Not documented | Real accepted price with bestOfferPrice=true
|
| eBay sites | Selected marketplaces | 8: US, UK, Germany, France, Italy, Spain, Canada, Australia |
| Other marketplaces | No | Poshmark, Mercari, TCGplayer, Grailed and more on the same key |
On accuracy: in a blind 40-search benchmark, 5.4% of the sales CompSniper returned were the wrong product, against 25.7% to 31.6% for other eBay sold data APIs tested. That matters more than it sounds. Wrong matches (a case, a charger, a different storage size) are exactly what drag a median away from the real price.
Python: recent sold prices
import os
import requests
r = requests.get(
"https://api.compsniper.com/v1/scrape",
headers={"Authorization": f"Bearer {os.environ['COMPSNIPER_API_KEY']}"},
params={"keyword": "nintendo switch oled", "count": 240, "ebaySite": "ebay.com"},
timeout=90,
)
r.raise_for_status()
data = r.json()
s = data["summary"]
print(f"{s['count']} sales, median {s['median']} {s['currency']}, middle half {s['p25']} to {s['p75']}")
for item in data["items"][:5]:
print(item["endedAt"], item["soldPrice"], item["condition"], item["title"][:60])
Or pip install compsniper for a ready-made client with retries.
Going past 90 days
This is where you'd hit Marketplace Insights' ceiling even if you were approved. /v1/research/sold returns sold history between any two dates, up to 3 years back:
r = requests.get(
"https://api.compsniper.com/v1/research/sold",
headers={"Authorization": f"Bearer {os.environ['COMPSNIPER_API_KEY']}"},
params={
"keyword": "nintendo switch oled",
"startDate": "2023-11-05",
"endDate": "2026-11-04",
"sort": "lastSoldDescending",
"limit": 50,
},
timeout=60,
)
r.raise_for_status()
for row in r.json()["results"]:
print(row["lastSoldDate"], row["soldUnits"], row["averageSoldPrice"]["amount"], row["title"][:60])
Page through with page and hasNextPage. Every plan, free included, gets the full 3 years.
JavaScript (Node 18+)
const params = new URLSearchParams({ keyword: "nintendo switch oled", count: "240", ebaySite: "ebay.co.uk" });
const res = await fetch(`https://api.compsniper.com/v1/scrape?${params}`, {
headers: { Authorization: `Bearer ${process.env.COMPSNIPER_API_KEY}` },
});
if (!res.ok) throw new Error(`API error ${res.status}`);
const data = await res.json();
console.log(data.summary.median, data.summary.currency); // prices in GBP on ebay.co.uk
Each eBay site returns prices in its own currency: GBP, EUR, CAD, AUD or USD.
Migrating code that expected Marketplace Insights
If you designed around Marketplace Insights' item_sales/search, the mapping is straightforward:
-
qbecomeskeyword -
X-EBAY-C-MARKETPLACE-ID: EBAY_GBbecomesebaySite=ebay.co.uk(the eBay IDs likeEBAY_GBare accepted too) -
lastSoldPricebecomessoldPrice, andlastSoldDatebecomesendedAt - the OAuth client-credentials flow becomes one
Authorization: Bearerheader
Keep your own interface in front of it (get_sold_listings(keyword, site)), and if eBay ever approves you, swapping the backend is a one-file change.
Try it
Free key at compsniper.com: 100 requests a month, no credit card, and 3-year history included. Docs: API reference and 3-year sold history. Code: ebay-sold-listings-api and ebay-sold-history-api on GitHub.
Did you ever get a reply on a Marketplace Insights application, or did it just sit in the queue like most?
Top comments (0)