ebaysoldlistingsAPI
Guide

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.

· 7 min read

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)

OptionReturns sold items?Who can use it
Finding API findCompletedItemsDid, until February 2025Nobody, the API is retired
Browse API item_summary/searchNo, active listings onlyAny developer
Marketplace Insights APIYes, last 90 daysLimited release, approval required and rarely granted
Terapeak (Seller Hub)Yes, in a browsereBay sellers, no API
eBay Sold Listings APIYes, up to 240 sales per callAnyone 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=true

The 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 fieldSold Listings API field
itemIditemId
titletitle
sellingStatus.currentPricesoldPrice + soldCurrency
listingInfo.endTimeendedAt
condition.conditionDisplayNamecondition (and conditionId)
listingInfo.listingTypebuyingFormat (auction or buyItNow)
sellingStatus.bidCountbidCount
shippingInfo.shippingServiceCostshippingPrice + shippingType
sellerInfo.sellerUserNamesellerUsername
viewItemURLurl
galleryURLthumbnailUrl
(not available)totalPrice, bestOfferAccepted, itemLocation

Filters that carry over

  • itemFilter Condition becomes itemCondition=new|used or an exact conditionId.
  • itemFilter MinPrice / MaxPrice becomes minPrice and maxPrice.
  • itemFilter ListingType becomes buyingFormat=auction|buyItNow.
  • categoryId stays categoryId.
  • GLOBAL-ID (EBAY-GB, EBAY-DE...) becomes ebaySite=ebay.co.uk, ebay.de, and so on across 8 marketplaces.
  • Date windows use soldAfter and soldBefore (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