eBay Marketplace Insights API alternative: sold data without approval
eBay's Marketplace Insights API is the only official source of sold items, and it is a limited release that is not accepting new developers. Here is what it returns, how to get the same sold data today with one API key, and a field-by-field mapping.
Marketplace Insights (item_sales/search) returns eBay items sold in the last 90 days. It is listed by eBay as a Limited Release: access requires eBay's approval, and new applications are generally not accepted. The Browse API that is open to everyone returns active listings only, and the Finding API's findCompletedItems was decommissioned in February 2025.
Your options for eBay sold data
| Option | Sold items? | Access |
|---|---|---|
| Marketplace Insights API | Yes, last 90 days | Limited release, eBay approval |
| Browse API | No, active listings only | Open to all developers |
| Finding API findCompletedItems | No longer works | Decommissioned February 2025 |
| Terapeak (Seller Hub) | Yes, in a browser | eBay sellers, no API |
| eBay Sold Listings API | Yes, up to 240 per call | Free key in minutes, no approval |
Get sold items in one request
curl "https://api.ebaysoldlistingsapi.com/scrape?keyword=nintendo+switch+oled&ebaySite=ebay.com&count=240" \
-H "Authorization: Bearer YOUR_API_KEY"import requests
r = requests.get(
"https://api.ebaysoldlistingsapi.com/scrape",
params={"keyword": "nintendo switch oled", "ebaySite": "ebay.com", "count": 240},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=90,
)
r.raise_for_status()
for item in r.json()["results"]:
print(item["endedAt"], item["soldPrice"], item["soldCurrency"], item["title"])Marketplace Insights fields mapped
| Marketplace Insights | eBay Sold Listings API |
|---|---|
itemSales[] | results[] |
itemId | itemId |
title | title |
lastSoldPrice.value / currency | soldPrice / soldCurrency |
lastSoldDate | endedAt |
condition / conditionId | condition / conditionId |
itemWebUrl | url |
image.imageUrl | thumbnailUrl |
seller.username | sellerUsername |
buyingOptions | buyingFormat |
categories | categoryId (as a filter) |
| (not returned) | shippingPrice, totalPrice, bestOfferAccepted, bidCount, itemLocation |
Filters
qbecomeskeyword. Keep it short: brand plus model, or card name plus set and number.category_idsbecomescategoryId.X-EBAY-C-MARKETPLACE-ID(EBAY_US, EBAY_GB, EBAY_DE...) becomesebaySite(ebay.com, ebay.co.uk, ebay.de...).- Price and condition filters become
minPrice,maxPrice,itemConditionorconditionId. - Date windows use
soldAfterandsoldBefore(YYYY-MM-DD). - Paging uses
pagewithhasNextPage, up to 240 results per page.
What you gain
- No approval process. A free key works in minutes, with 50 requests a month.
- 8 eBay sites in their own currency.
- Active listings from the same endpoint with
sold=false. - CSV on any search, and batch jobs of up to 100 keywords.
- A hosted MCP connector for Claude, Cursor and other AI tools.
Can I still get access to the Marketplace Insights API?
eBay lists Marketplace Insights as a limited release that requires approval, and new developers are generally not accepted. If you do not already have access, a sold-listings API is the practical route.
What is the best Marketplace Insights API alternative?
For most developers, a sold-listings API that works without approval. The eBay Sold Listings API returns up to 240 sold items per request as JSON or CSV across 8 eBay sites, with a free plan to start.
Does it cover the same 90 days?
It returns eBay's recent sold results, the same window eBay shows for sold searches, filtered by soldAfter and soldBefore if you need a narrower range.
Is the response format similar?
Close enough to migrate quickly: itemId, title, price, currency, sold date, condition, URL, image and seller all have direct equivalents, plus shipping, total price and a Best Offer flag.
Try it with real data
Get completed eBay sales as JSON. Fifty free requests a month, no card required.
Get your API key