findCompletedItems alternative. eBay sold items, still as JSON.
eBay retired findCompletedItems and the Finding API in February 2025. Soldgraph searches eBay sold listings by keyword and returns JSON, with a key you can get today.
100 free requests a month · No card · No eBay developer account
curl -G https://api.soldgraph.com/v1/ebay/sold \ -H "Authorization: Bearer $SOLDGRAPH_KEY" \ --data-urlencode "q=sony wh-1000xm5"{ "priced_count": 40, "currency": "USD", "median": 189, "low": 120, "high": 260, "earliest_sold_date": "2026-09-02", "latest_sold_date": "2026-09-21"}Same job, a few differences.
The search works the way findCompletedItems did. Sign-in, the response shape and price stats are different.
| Finding API | Soldgraph | |
|---|---|---|
| Sold listings | findCompletedItems (retired) | GET /v1/ebay/sold |
| Active listings | findItemsAdvanced (retired) | GET /v1/ebay/listings |
| Sign-in | eBay App ID | Authorization: Bearer <key> |
| Response | XML or JSON, per call | JSON search job you poll until done |
| Rows per call | One page | 40 by default, up to 200 |
| Many keywords | One call for each | One batch call for the whole list |
| Price stats | None | Median, lowest and highest on every page |
| Sites | eBay sites | eBay in 8 countries, plus seven more marketplaces |
Move your code over in four steps.
Your old inputs map one to one. For before-and-after code in Python and Node, see the migration example on GitHub.
- Get a key. Create a free account and make a key. Free covers 100 requests a month.
- Rename your inputs. Send your old
keywordsvalue asq, and map the filters with the table here. - Poll for the result. Request
poll_urluntilstatusiscomplete. - Read the rows. They are in
result.data. Each has alinkback to the eBay listing.
| findCompletedItems | Soldgraph |
|---|---|
| keywords | q |
| GLOBAL-ID, like EBAY-GB | country, like uk |
| LocatedIn or AvailableTo | item_location |
| ListingType | buying_format |
| sortOrder | sort |
| categoryId | category_id |
| A minus sign before a word | The same, inside q |
Full detail, including what to plan for, is in the findCompletedItems replacement guide. Looking for the endpoint itself? See the eBay sold listings API.
Building with ChatGPT? Paste this.
One prompt gives your assistant the endpoint, the sign-in header and how to wait for a result, so its first script works.
I'm building with the Soldgraph API. It returns sold and for-sale listings from eBay and other resale marketplaces. Read the docs first: https://soldgraph.com/llms.txt OpenAPI spec: https://soldgraph.com/openapi.json Rules for the code you write: - Base URL: https://api.soldgraph.com/v1 - Auth: send the header "Authorization: Bearer <key>". Read the key from the SOLDGRAPH_KEY environment variable. Never put it in browser code. - eBay sold prices: GET /ebay/sold?q=<search words>. Add count=200 for up to 200 rows. - A search often answers 202 with status "pending" and a poll_url. Request https://api.soldgraph.com plus poll_url with ?wait=20 and the same header, until status is "complete" or "failed". - Read result.summary for the median, low and high price. The rows are in result.data, each with title, displayed_price, sold_date and link. - Each completed search uses one request. The free plan has 100 a month, so save results while testing instead of repeating a search. Start with a short script that prints the median sold price for "nintendo switch oled". Then ask me what I want to build.
eBay did not replace it with anything open. The Finding API, including findCompletedItems, was decommissioned in February 2025. The Browse API returns active listings only, and Marketplace Insights isn't open to new users.
Soldgraph's GET /v1/ebay/sold is the closest working replacement: a keyword search over eBay sold listings that returns JSON.
No. The Browse API returns active listings only.
No. You use a Soldgraph key in an Authorization: Bearer header. There is no eBay sign-up or partner approval.
It is a JSON search job. The first call often answers 202 with a poll_url, and you poll it until status is complete. Rows are in result.data, and each has a link back to the eBay listing.
Every page also has a summary with the median, lowest and highest price, which the Finding API never had.
No. A search returns one page of results: 40 rows by default, or up to 200 with count=200. Page through results if you need more rows.
Free covers 100 requests a month, with no card. Paid plans start at $19 a month for 5,000 requests. One completed search costs one request.
Get eBay sold prices in about two minutes.
Create a free account, make a key, and send your first request. 100 requests a month, no card.