The eBay sold listings API. Every sale, as JSON.

The final price of everything that sold on eBay US and UK, with the fields buyers see and the ones they don't, minutes after the sale.

The world’s largest commercial dataset of eBay sold listings, at your fingertips.

Get your API key
  • Half a billionSold listings
  • 2,000Results a call
  • US · UKMarketplaces

Half a billion sales, years deep

What eBay shows for 90 days, trawl keeps: typed, searchable, and updated hundreds of times a day.

  • Half a billion sold listingsReal completed sales, each with the price it actually sold for.
  • Past the 90-day wallYears of sales history that eBay itself no longer shows.
  • Always currentNew sales are collected around the clock, so the index grows every day.
  • Every field typedPrices as numbers, dates as dates, and each sale’s item specifics read from its listing.

Straight to the sales you need

One GET with a keyword or a category picks its sales out of the whole index.

  • Keyword or categoryWords a title must contain, or a whole category on its own.
  • US or UKebay.com by default, or ebay.co.uk with site=EBAY_GB.
  • Find a categoryLook up any category’s ID by its name with /categories.

Narrowed to exactly what you asked for

Each filter keeps only the sales that match, cutting the search down further.

  • Condition, price, dateNew or used, a price range, and the dates it sold between.
  • Item specificsExact attributes such as Grade:PSA 10 or Brand:Apple.
  • Excluded wordsLeave out cases, lots and broken units by the words in their titles.

Clean, typed JSON, up to 2,000 results a call

The same shape every time, newest sale first.

  • 2,000 results in one callUp to 20 pages of 100, all in a single response.
  • Pay for what comes backFrom one credit a page; a search that finds nothing is free.
  • Python and Node SDKspip install trawl-api or npm install trawl-api.
  • Keep going with a cursornext_cursor picks up exactly where a call stopped.

That's every step of a call. Now pick one to make.

Our Two Main Endpoints

Search what sold, then read any sale in full. Open either one to see how it works; the playground below runs both, on our key until you have your own.

GET /soldiphone 13 proSend ↵
Apple iPhone 13 Pro 256GB Graphiteused · Jul 18$525
Apple iPhone 13 Pro 128GB Sierra Blueused · Jul 18$489
Apple iPhone 13 Pro 512GB Goldused · Jul 17$560

/sold Sold listings

Completed sales matching a query, newest first, with filters for marketplace, category, condition, price, dates and item specifics.

Pokémon Charizard Holo Base Set 4/102 PSA 9$1,150.00Sold · Auction
GamePokémon TCG
GradePSA 9
shipping_serviceUSPS Ground Advantage

/item Listing detail

One listing as the buyer saw it: item specifics, every image, the seller, shipping, returns and the description.

Search what sold for anything

Playground

Type an eBay search. Get back exactly the JSON your code will.

Endpoint
Parameters
site
category
attr
max_pages
of 20

1 credit for up to 100 results.

The response will appear here

Type a search, or pick a category alone for every sale in it, and press ↵. You'll get back the exact JSON the API returns: up to 100 sold listings per credit.

Try

What people build on it

Pricing tools, collector apps, market research, agents: anything that needs to know what something actually sold for, not what it was listed at.

GET /sold200 OK
385 results4 credits41 ms

Price an item while the user waits

Responses average about 200 ms across half a billion completed sales, quick enough to price while your user is still on the screen.

385 sold$525

Comps for a listing tool

One search per item you price: the spread of what it sold for, by condition, with the final price of every sale.

JanDec

Market research

A year of a category is twelve calls of one month each. Larger studies run as custom aggregations across the whole archive.

SKILL.mdtool call385 results
search_sold(
  query="charizard 1st edition holo",
  condition="used"
)

Agents that price things

A SKILL.md teaches an agent the API. One GET per answer, with typed fields it can reason over instead of a page to read.

Get a price estimate.

One credit is a page of up to 100 results, with full listing details included if you want them. Only successful responses spend credits, so size your month by the searches you will run.

I'll be using credits a month.

FAQ.

Anything else is in the docs, or write to us and a human replies within a business day.

New sales appear within minutes in busy categories like phones and trading cards, and within the day in quiet ones. Full listing details follow a few minutes after a sale.

Responses average about 200 ms across half a billion completed sales, quick enough to price an item while your user is still on the screen.

Yes, on request. We can run them across half a billion listings for large-scale analysis: price trends for a category, sales volume over time, breakdowns by condition or buying format. Tell us what you want to measure through the enterprise form on the pricing page, or by email, and we will scope it.

No. Every endpoint is a plain GET with query parameters and an x-api-key header, so it works from anything that speaks HTTP. If you want one, there is an official library for Python (pip install trawl-api) and for Node (npm install trawl-api), and every snippet in the docs is shown in curl, Python and Node.

Scrape eBay sold listings in Python, one script

There is no paging loop to write. Results are newest-first, 100 to a page: tell us how many pages you want with max_pages, up to 20, and they all arrive in one response, up to 2,000 results. Need more than that? A full response carries a next_cursor: send it back and the next pages follow from exactly where it stopped, as far as the data goes. You pay one credit per page actually returned, so a search with fewer results costs less, and one with no results costs nothing.

Yes. The playground on this page runs against the live production API on our key: ten free credits a month per visitor, no account needed. A free account comes with its own monthly credits and a key of your own.

Yes, with one case to know. eBay's sold search shows the listed price for a sale that closed on an accepted Best Offer, so a plain search returns that. Pass details=1 and each result carries the accepted amount where eBay publishes it, which is on Collectibles listings such as trading cards and comics. On other categories eBay never publishes the accepted amount, so no service has it.

eBay Sold Listings API Docs

Not any more. The Browse API searches live listings only, and eBay retired the Finding API and its findCompletedItems call in February 2025. Trawl is the sold half: the same keyword search, answered from completed sales as typed JSON.

Does eBay API return sold listings?

GET /ebay/v1/sold takes the same keyword, category, condition and price filters and returns the same fields: title, price, condition, sale date, item id, image. One short script maps the old request onto the new one.

The findCompletedItems alternative

eBay shows sold listings for 90 days. Trawl keeps the sales past that window, and date_from and date_to pick the range you want, so a year of history is twelve calls of one month each.

eBay sold listings history beyond 90 days

A scraper breaks when eBay changes its pages and reads one page at a time. Terapeak is a screen in Seller Hub with no API. Marketplace Insights is a Limited Release API that eBay grants case by case. Trawl needs no eBay approval and no browser: a key and one GET.

Trawl vs the eBay Marketplace Insights API

The first 250 credits each month are on us.

$ curl "https://api.trawl.dev/ebay/v1/sold?query=iphone+13+pro" \
    -H "x-api-key: $TRAWL_KEY"
Get your API keyNo card. Your key in under a minute.