findCompletedItems replacement: how to get eBay sold data after the Finding API shutdown
eBay shut down the Finding API, and findCompletedItems went with it. Here is what replaced it, what the official options really cover, and how to migrate your code to a sold-listings API in minutes.
For years, findCompletedItems in eBay's Finding API was how developers pulled sold and completed listings. eBay decommissioned the Finding API in February 2025, so every call to it now fails. If your price checker, repricer, or valuation model depended on it, this guide shows the fastest way back to working sold data.
What eBay offers instead (and why it usually does not help)
| Option | Returns sold items? | Who can use it |
|---|---|---|
Finding API findCompletedItems | Did, until February 2025 | Nobody, the API is retired |
Browse API item_summary/search | No, active listings only | Any developer |
| Marketplace Insights API | Yes, last 90 days | Limited release, approval required and rarely granted |
| Terapeak (Seller Hub) | Yes, in a browser | eBay sellers, no API |
| eBay Sold Listings API | Yes, up to 240 sales per call | Anyone with a free key |
The official migration path eBay points to is the Browse API, but it only searches live listings. The only first-party source of sold data is Marketplace Insights, and most applications are never approved. That gap is why sold-listings APIs exist.
Migrating a findCompletedItems call
A typical old request looked like this:
GET https://svcs.ebay.com/services/search/FindingService/v1
?OPERATION-NAME=findCompletedItems
&SECURITY-APPNAME=YourAppID
&RESPONSE-DATA-FORMAT=JSON
&keywords=nintendo+switch+oled
&itemFilter(0).name=SoldItemsOnly
&itemFilter(0).value=trueThe equivalent today is one GET with a bearer key. Sold-only is the default, so there is no filter to remember:
curl "https://api.ebaysoldlistingsapi.com/scrape?keyword=nintendo+switch+oled" \
-H "Authorization: Bearer YOUR_API_KEY"Field mapping
| findCompletedItems field | Sold Listings API field |
|---|---|
itemId | itemId |
title | title |
sellingStatus.currentPrice | soldPrice + soldCurrency |
listingInfo.endTime | endedAt |
condition.conditionDisplayName | condition (and conditionId) |
listingInfo.listingType | buyingFormat (auction or buyItNow) |
sellingStatus.bidCount | bidCount |
shippingInfo.shippingServiceCost | shippingPrice + shippingType |
sellerInfo.sellerUserName | sellerUsername |
viewItemURL | url |
galleryURL | thumbnailUrl |
| (not available) | totalPrice, bestOfferAccepted, itemLocation |
Filters that carry over
itemFilter ConditionbecomesitemCondition=new|usedor an exactconditionId.itemFilter MinPrice / MaxPricebecomesminPriceandmaxPrice.itemFilter ListingTypebecomesbuyingFormat=auction|buyItNow.categoryIdstayscategoryId.GLOBAL-ID(EBAY-GB, EBAY-DE...) becomesebaySite=ebay.co.uk,ebay.de, and so on across 8 marketplaces.- Date windows use
soldAfterandsoldBefore(YYYY-MM-DD).
Drop-in Python helper
import requests
def find_completed_items(keywords, site="ebay.com", **filters):
r = requests.get(
"https://api.ebaysoldlistingsapi.com/scrape",
params={"keyword": keywords, "ebaySite": site, **filters},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=90,
)
r.raise_for_status()
return r.json()["results"]
for item in find_completed_items("nintendo switch oled", itemCondition="used"):
print(item["endedAt"], item["soldPrice"], item["title"])Need hundreds of keywords at once, like a nightly repricing run? Use batch jobs to submit up to 100 keywords in one request and download everything as a single CSV.
Is findCompletedItems still available?
No. eBay decommissioned the Finding API, including findCompletedItems, in February 2025. Calls to it no longer return data.
What is the official replacement for findCompletedItems?
eBay's Browse API replaced most Finding API search calls, but it only returns active listings. Sold data officially lives in the Marketplace Insights API, which is limited release and requires eBay approval.
How do I get eBay sold listings without Marketplace Insights access?
Use a sold-listings API such as the eBay Sold Listings API. One GET request returns up to 240 completed sales for a keyword as JSON, with a free plan to start.
Does the replacement cover eBay UK and Germany?
Yes. Pass ebaySite=ebay.co.uk, ebay.de, ebay.com.au, ebay.ca, ebay.fr, ebay.it, or ebay.es. Prices come back in the local currency.
Try it with real data
Get completed eBay sales as JSON. Fifty free requests a month, no card required.
Get your API key