eBay sold listings API. Sold prices as JSON, today.
Search eBay sold listings by keyword. Get each sale's price, date, condition and link, plus the median, low and high. No eBay developer account or partner approval.
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"}Real sales, ready to use.
Send a keyword. Get back the sold listings eBay shows for it, as clean JSON, with the price maths already done.
Every sale, with a link
Title, displayed price, shipping, sold date, condition, seller, location and image. Each row links to the eBay listing so anyone can check it.
The median, worked out
Every page has a summary with the median, lowest and highest price and the range of sold dates. You get a number without writing any maths.
Up to 200 rows a request
A page is 40 rows, or 60, 120 or 200 with count. A bigger page is still one search and costs one request.
eBay's own filters
Condition, price range, auction or Buy It Now, seller location, category and sort order. Put a minus sign in front of a word to leave it out.
Eight eBay sites
US, UK, Canada, Australia, Germany, France, Italy and Spain. Prices come back in that site's currency.
Whole lists in one call
Send many keywords as one batch. Poll one ID, read a summary for each item, or download everything as CSV.
Why not use eBay's? None is open for sold data.
eBay has had three APIs that touch this. One is retired, one has no sold data, and one is closed to new users.
| API | Sold listings | Can you get access? |
|---|---|---|
| Soldgraph | Yes | Yes, with a free key |
| Finding API (findCompletedItems) | It did | No. Retired in February 2025 |
| Browse API | No. Active listings only | Yes |
| Marketplace Insights API | Yes | No. Not open to new users |
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.
Not one you can sign up for. eBay retired the Finding API and findCompletedItems in February 2025. Its public Browse API only returns active listings. Its sold-data API, Marketplace Insights, isn't open to new users.
Soldgraph returns eBay sold listings as JSON with a key you can get today.
One page of sold listings for your keyword: 40 rows by default, or up to 200 with count=200. Each row has the title, displayed price, sold date, condition and a link to the eBay listing.
Every page also has a summary with the median, lowest and highest price.
It is the price the listing showed. An accepted best offer or a bundle can change what the buyer paid. Rows where a best offer was accepted are marked with best_offer_accepted.
eBay US, UK, Canada, Australia, Germany, France, Italy and Spain. Pick one with country. Each country is its own search and costs one request.
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, whatever the page size. Failed searches are free.
Yes. Send the list as one batch call. You get one ID to poll and a summary for each item, and you can download every row as one CSV file.
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.