eBay's own sold filter stops at roughly three months. That is a limit of the page, not of the data, and there are a few ways past it depending on what you need.
When you tick Sold Items on an eBay search you are reading a public results page, and that page only indexes recent completions. Depending on the category you will see somewhere around 90 days. Scrolling further does not help and neither does changing the sort: the older sales are simply not on the page to be found.
This catches people out because the data obviously exists. eBay knows exactly what that console sold for two years ago. It just does not publish it there.
Terapeak, inside Seller Hub. eBay's own research tool does hold up to three years, and with an eligible store subscription it is there at no extra cost. The catches are that it is a dashboard rather than a feed, access depends on your subscription tier, and you cannot build anything on it.
findCompletedItems. The old developer API everyone remembers is gone. It was retired and the replacement does not fill the same gap.
Marketplace Insights. The modern API that returns sold data is access restricted, and even once you have it the window is about 90 days, so it does not solve this problem either.
Browser extensions and scrapers. They read the same public page you do, so they inherit the same ceiling. An extension cannot show you what the page does not contain.
That is what this API does. One request returns up to 240 completed sales and the window goes to 1,095 days:
curl -G https://api.compsapi.com/v1/sold \
-H "Authorization: Bearer YOUR_KEY" \
--data-urlencode "q=charizard psa 10" \
--data-urlencode "days=1095" \
--data-urlencode "best_offer=1"
Paging is time based rather than offset based, so there are no duplicate rows between pages and you can walk back through a category cleanly. Each sale carries the title, the price the buyer paid, the sale time to the minute, the listing format, shipping, the item id and the URL.
Accepted offers are not asking prices. Any tool reading the public sold page reports the asking price when a sale closed through an accepted Best Offer. We measured the gap over 5,859 matched sales: the public figure ran high 99.0% of the time by a median of 14.9%, and one sale in ten by more than 40%. If you are building a depreciation curve from asking prices it is biased in one direction. The study.
Very broad searches at the full window are hard on eBay's research backend. A single vague word across three years is an enormous aggregation and it can fail upstream. A narrower search at full depth is reliable, and a broad one works fine over a shorter window.
A free key needs no card and gives you 100 searches a month with a year of history. Growth and above open the full 1,095 days. If you would rather not write code at all, the Google Sheets template pulls the same sales into a spreadsheet.
100 free requests a month · every filter on · no card
Get a free key