compsapi.com / price history api

Three years of sold prices, not ninety days

eBay's public sold page shows roughly the last 90 days, so that is the ceiling for almost every sold data API. We read eBay's own research data and page through up to 1,095 days per search.

Why ninety days is the usual ceiling

Search eBay for sold items and you get about three months. That limit is a property of the public page, not of eBay's data, so any tool built by reading that page inherits it. It is why competing APIs quote 90 days: they are all reading the same page.

Ninety days is enough to answer what something is worth this week. It cannot show you a depreciation curve, a seasonal pattern, the effect of a launch or a restock, or whether a category is drifting up or down. Those need years, and a single quarter of data will often point the wrong way.

What you can ask for

Set days up to 1095. Each request returns up to 240 completed sales, and page runs to 50, so a single query can reach 12,000 rows. Paging is time based rather than offset based, so pages never repeat a row.

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"

Every row carries last_sold to the minute, price, format, condition, shipping_cost, item_id and url. Three years of minute stamped sales is what lets you bucket by month and get a curve rather than a single number.

History is the thing that costs money

The free and Starter plans cover a full year, which already shows seasonality. The full 1,095 days is on Growth and above. If you ask for a window wider than your plan covers the call still succeeds: it returns the window you are entitled to plus a plan_limit object saying what was requested, what was served and what the next tier covers, so a script never breaks silently or quietly truncates without telling you.

The prices are also more accurate, not just older

Depth is not the only difference. On a sale that closed through an accepted offer, the public page reports the asking price and not the amount paid. Across 5,859 matched sales that figure read high 99.0% of the time by a median of 14.9%. A three year history built from asking prices is a long series of slightly wrong numbers. Ours carries the settled amount, flagged per row. See Best Offer prices and the study.

What people build on it

Depreciation curves for phones, consoles, GPUs and cameras. Seasonality for sports gear, garden tools and festive stock. Launch and restock impact on sneakers and trading cards. Multi season card pricing where a single quarter is meaningless. Insurance and lending valuations that need a defensible series rather than one recent sale. Collectible indices across years.

Getting started

A free key needs no card and no eBay developer account or approval. Full parameters are in the reference, and pricing has the plan by plan depth.

Price from what things
actually sold for

100 free requests a month · every filter on · no card

Get a free key