ebaysoldlistingsAPI
Guide

How to get eBay sold prices with an API

eBay retired public access to completed-sales data for most developers. Here is how to pull real eBay sold prices as JSON with a simple REST API, with copy-paste examples.

September 24, 2026 · 6 min read

Sold prices are the ground truth of resale. Whether you are pricing inventory, building a valuation tool, or feeding a model, you need what items actually sold for, not what sellers are asking. This guide shows how to get eBay sold prices programmatically as clean JSON.

Why this is harder than it should be

eBay's own Marketplace Insights API (which exposes sold data) is a restricted, limited-release program that most developers cannot get into. The public Browse API only returns active listings. And scraping eBay's "sold" search yourself means fighting bot protection, rotating proxies, parsing shifting HTML, and handling logins. Most teams do not want to own that.

The simple path: a sold-listings API

The eBay Sold Listings API wraps all of that. You send one keyword, you get back up to 240 completed sales as JSON, each with price, sale date, condition, shipping, and seller. One request:

curl 'https://api.ebaysoldlistingsapi.com/scrape?keyword=nintendo+switch+oled' \
  -H 'Authorization: Bearer YOUR_API_KEY'

The response is the raw sale record, ready for your database:

{
  "keyword": "nintendo switch oled",
  "ebaySite": "ebay.com",
  "count": 199,
  "results": [
    {
      "title": "Nintendo Switch OLED ... 64GB Wi-Fi",
      "soldPrice": "149.99",
      "soldCurrency": "USD",
      "endedAt": "2026-09-23",
      "condition": "Used",
      "shippingPrice": "0.00",
      "sellerUsername": "..."
    }
  ]
}

Compute a price from it

Because you get the raw sales, you decide the statistic. Median is the most robust "what's it worth" number:

import requests, statistics
r = requests.get(
    "https://api.ebaysoldlistingsapi.com/scrape",
    params={"keyword": "nintendo switch oled"},
    headers={"Authorization": "Bearer YOUR_API_KEY"},
).json()
prices = sorted(float(i["soldPrice"]) for i in r["results"] if i.get("soldPrice"))
print("median:", statistics.median(prices), "n:", len(prices))

Other marketplaces

Pass ebaySite to query any of eight marketplaces (ebay.com, ebay.co.uk, ebay.de, ebay.com.au, ebay.ca, ebay.fr, ebay.it, ebay.es). Prices come back in that marketplace's local currency, not normalized, so you always see what buyers actually paid.

Getting started

Create a free key (50 requests a month, no card), then send your first request. See the full API reference for every parameter and field.

Does eBay have a public sold listings API?

eBay's Marketplace Insights API exposes sold data but is a restricted limited-release program most developers cannot access. The eBay Sold Listings API is an independent service that returns completed sales as JSON without that gatekeeping.

How many results per request?

Up to 240 completed sales per keyword per request, with pagination for more.

Is it free to start?

Yes, the free plan includes 50 requests per month with no credit card.

Try it with real data

Get completed eBay sales as JSON. Fifty free requests a month, no card required.

Get your API key