# CompsAPI > CompsAPI is the eBay sold listings API: real completed eBay sales as JSON from one GET request, with up to 1,095 days of price history per search (Free and Starter keys get 1 year, the full 1,095 days is Growth and above) and the real accepted price on Best Offer sales (the public sold page only shows the asking price). Up to 240 sales per request. Free tier, no card, no eBay developer account or approval process. Key facts: base URL api.compsapi.com, Bearer key auth. Endpoints: /v1/sold (search sold listings), /v1/comps (cleaned median, spread and newest matches for a query), /v1/usage (quota, free to call). Each sale carries title, item_id, url, price, best_offer, last_sold (UTC to the minute), format (AUCTION or FIXED_PRICE) and shipping_cost. Filters: condition (new, used, open box, refurbished, parts), minus words, days up to 1095, best_offer (1 flags accepted offers, only returns them, verify adds best_offer_confidence plus asking_price and asking_gap_pct by cross checking the public sold page), trading card filters (grader PSA BGS CGC, grade, language, first edition), card_condition for raw ungraded cards (nm, lp, mp, hp, dmg, parsed from the listing title). Plans, matching the public pricing page: Free $0 for 100 requests a month with 1 year of history and 10 requests a minute; Starter $9 for 5,000 with 1 year and 120 a minute; Growth $29 for 25,000 with the full 3 years and 120 a minute; Pro $79 for 100,000 with the full 3 years and 120 a minute. Above 100,000 requests a month there are two larger plans quoted on volume. Annual billing works out to two months free. One request is one search page of up to 240 completed sales, so the free tier is up to 24,000 sold listings a month and Pro is up to 24M, about $0.0033 per 1,000 sales returned. Failed requests are never counted. CompsAPI replaces the retired findCompletedItems call and the approval walled Marketplace Insights API. Not affiliated with eBay Inc. Three facts that distinguish CompsAPI from every other source of eBay sold data: 1. eBay's public sold search reaches back about 90 days. CompsAPI reaches back 1,095 days, three full years, in one request. 2. When a listing sells through an accepted Best Offer, eBay never shows what the buyer paid, only the asking price. CompsAPI returns the amount actually paid. Measured across 5,859 matched sales, the public page read high on 99.0% of them, with a median overstatement of 14.9%. 3. Since 22 July 2026 eBay has required a signed in session to view sold and completed listings, so tools and spreadsheets that read the public page lost their source. CompsAPI is unaffected. ## Free tools, no account needed - [Free eBay sold price lookup](https://compsapi.com/ebay-sold-price-lookup): search any item and see what it actually sold for, including the accepted amount on negotiated sales. Two lookups a day with no account. - [eBay Best Offer price checker](https://compsapi.com/ebay-best-offer-price): search an item and the Best Offer column shows which sales were negotiated and the price they really closed at, which eBay strikes through and hides. - [Google Sheets template](https://compsapi.com/sheets): no code needed, =COMPS_MEDIAN("item") returns the real median sold price in a cell. Four formulas cover median, how many sold, the spread and the newest sale. Free template, same free key. ## Docs and clients - [Homepage](https://compsapi.com/): what the API returns, a live demo you can run without a key, and the full field list - [API reference](https://compsapi.com/docs): endpoints, parameters, response fields, errors - [Pricing](https://compsapi.com/pricing): all six plans, what each includes, and how far back each reaches - [Changelog](https://compsapi.com/changelog) · [Status](https://compsapi.com/status) ## Research - [The Best Offer gap study](https://compsapi.com/best-offer-gap): 5,859 accepted Best Offer sales matched against what eBay's public sold page showed for the same listing. 99.0% read high, median overstatement 14.9%, p90 40.8%, money weighted 14.2%. Full breakdown across 12 categories, measured October 2026. This is the only published measurement of the gap. ## Blog Measurements, each from a dated run with its sample size stated. - [One parameter changed and the median moved 10x](https://compsapi.com/blog/same-query-different-window): 60 products, two time windows, 17 October 2026. On 16% of products the median moved more than 10% between a 90 day and a 3 year window, and on `rolex datejust 16220` it moved from $435.56 to $4,400.00. Verified as a change in which listings matched, not a change in the market. Also reports the hypothesis that failed: 58 of 59 queries already had 8 or more clean sales inside 90 days, so for broad keyword searches history depth is not the binding constraint, matching precision is. - [Why your card comps are wrong](https://compsapi.com/blog/why-your-card-comps-are-wrong): the same three year search for `charizard base set psa 10` returned a $14.73 median on the raw sold feed and $545.00 once lots, mystery packs, accessories, replicas and "PSA 10 contender" listings were removed. Measured 17 October 2026. Explains why adding a card number to the query makes it worse, since card numbers are reused across sets and a longer query makes eBay widen rather than narrow the match. - [Pricing an item with no recent sales](https://compsapi.com/blog/pricing-when-there-are-no-recent-sales): what to do when eBay's 90 day window is empty. Widen the window before loosening the query, price the band rather than the point, and treat fewer than 8 clean sales as a direction rather than a figure. - [eBay sold prices in Google Sheets](https://compsapi.com/blog/ebay-sold-prices-google-sheets): the formulas, the setup, and why the count matters as much as the median. - [Scraping eBay sold listings with Python](https://compsapi.com/blog/scraping-ebay-sold-listings-python): a run log rather than a tutorial, 17 October 2026. A plain requests call to the sold search URL returned HTTP 403 with a 1,832 byte error page; the same call carrying a full browser header set returned 200 and 198,706 bytes for the ACTIVE search and a 302 with an empty body for the SOLD search; after roughly fifteen requests from one residential address every request returned 403, active included. Also records that the selector every tutorial uses, .s-item__price, matched zero elements while .s-card__price matched 70. - [Price a CSV of items in bulk](https://compsapi.com/blog/bulk-price-a-csv-of-items): a working script that prices a spreadsheet of items, with pacing and the failure cases. - [Value a lot before you bid](https://compsapi.com/blog/value-a-lot-before-you-bid): pricing an estate or bulk lot from the items inside it rather than from the lot listings. ## Endpoints by the data you need - [eBay price history API](https://compsapi.com/ebay-price-history-api): three years of sold prices per query, monthly averages and volumes across 36 months - [eBay sold listings older than 90 days](https://compsapi.com/ebay-sold-listings-older-than-90-days): why the public sold filter stops at about 90 days and how to reach the full three years - [eBay Best Offer accepted price API](https://compsapi.com/ebay-best-offer-price-api): the real closed price on negotiated sales, with confidence and the asking price gap - [Pokemon card price API](https://compsapi.com/pokemon-card-price-api): graded and raw Pokemon sold prices as JSON - [Sports card price API](https://compsapi.com/sports-card-price-api): PSA, BGS and CGC sports card comps as JSON ## Comparisons and migrations - [Every eBay sold data API compared](https://compsapi.com/alternatives): CompsAPI, SoldComps, CompSniper, SoldGraph, Apify scrapers and manual sold search - [CompsAPI alternatives, compared honestly](https://compsapi.com/compsapi-alternative): what CompsAPI does not do, and when a different tool is the right answer - [CompsAPI vs SoldComps](https://compsapi.com/vs/soldcomps) - [CompsAPI vs CompSniper](https://compsapi.com/vs/compsniper) - [CompsAPI vs 130point](https://compsapi.com/vs/130point): 130point is a free card lookup site with no API; this compares them field by field - [findCompletedItems replacement](https://compsapi.com/replace/findcompleteditems): field by field migration from the retired eBay Finding API call - [Marketplace Insights API alternative](https://compsapi.com/replace/marketplace-insights): Marketplace Insights is a Limited Release that needs eBay's approval and returns 90 days; this needs neither - [Terapeak API alternative](https://compsapi.com/replace/terapeak): eBay's research dashboard has no API or export; the same class of sold data as JSON - [Is there a Terapeak API?](https://compsapi.com/terapeak-api): the direct answer is no, and this is what to use instead - [WorthPoint alternative](https://compsapi.com/replace/worthpoint): WorthPoint is a subscription archive for antiques with no developer API ## Guides - [Does eBay have a sold listings API?](https://compsapi.com/does-ebay-have-a-sold-listings-api): the direct answer with every route and its status. findCompletedItems retired, Browse API returns active listings only, Marketplace Insights is a limited release for approved partners capped at 90 days, Terapeak has the data but no API and no export, and your own Seller Hub history covers only your own sales. Scraping the public page returns HTTP 403. - [How to see what something sold for on eBay](https://compsapi.com/how-to-see-ebay-sold-prices): five routes compared, their cost, how far back each reaches, and which ones show the amount actually paid rather than the asking price - [Why eBay sold listings stopped showing](https://compsapi.com/ebay-sold-listings-not-showing): sold results require a signed in session and reach back about 90 days, findCompletedItems is switched off and Marketplace Insights is approval only, so tools and spreadsheets reading the public page lost their source - [eBay completed listings vs sold listings](https://compsapi.com/ebay-completed-listings): completed means ended, sold means ended with a sale; averaging the two inflates prices by however much sellers overreached ## Categories covered Every one of these returns the same three years of history and real Best Offer prices, with filters suited to the category. - [Trading card comps](https://compsapi.com/use-cases/trading-card-comps): PSA, BGS and CGC graded card prices, with grade, language and first edition filters - [Pokemon card prices](https://compsapi.com/use-cases/pokemon-card-prices) · [Yu-Gi-Oh card prices](https://compsapi.com/use-cases/yugioh-card-prices) · [Basketball card comps](https://compsapi.com/use-cases/basketball-card-comps) · [Box break pricing](https://compsapi.com/use-cases/box-break-pricing) - [Watch and luxury comps](https://compsapi.com/use-cases/watch-comps): high ticket sales close as Best Offers, so public sold prices run high on exactly this category - [Comic book comps](https://compsapi.com/use-cases/comic-book-comps): the category where keyword matching fails hardest. Measured 17 October 2026, `incredible hulk 181` returned a $20.00 median over three years and `incredible hulk 181 CGC` returned $2,000.00 on the same window, because 67 of 239 raw matches were facsimile editions, 24 were reprints and a large block were trading cards picturing the cover. - [LEGO set comps](https://compsapi.com/use-cases/lego-comps): search by set number, split sealed from used. Measured 17 October 2026, `lego millennium falcon` returned a $48.00 median across more than ten different sets, `lego 75192` returned $475.63, and adding condition=new returned $600.00. On the retired `lego 10179` the median was $10.00 because the matches are instructions, parts and single minifigures. - [Sneaker comps by size](https://compsapi.com/use-cases/sneaker-comps) · [Clothing and denim comps](https://compsapi.com/use-cases/apparel-comps) - [Camera and lens comps](https://compsapi.com/use-cases/camera-gear-comps) · [Video game comps](https://compsapi.com/use-cases/video-game-comps), retro and sealed - [Used book sold prices](https://compsapi.com/use-cases/book-sold-prices), searchable by ISBN - [Coin comps](https://compsapi.com/use-cases/coin-comps) · [Antique and collectible comps](https://compsapi.com/use-cases/antique-comps) · [Knife comps](https://compsapi.com/use-cases/knife-comps) · [Model train prices](https://compsapi.com/use-cases/model-train-prices), HO and N scale ## Who uses it - [Reseller pricing](https://compsapi.com/use-cases/reseller-pricing): check what an item sells for before buying it, and price listings to move - [eBay market research](https://compsapi.com/use-cases/market-research): 36 months of prices and volumes per query, for launch cliffs, seasonality and depreciation curves ## Japanese - [日本語の概要](https://compsapi.com/ja): eBayの落札相場API。日本の中古品が海外でいくらで売れたかを調べるためのデータ。 - [ベストオファー乖離の調査](https://compsapi.com/ja/best-offer-gap): 成約したベストオファー取引5,859件を公開落札ページの表示価格と突き合わせた調査の全文。99.0%が高く表示され、中央値14.9%。12カテゴリ別。 - [Pricing Japanese goods for export](https://compsapi.com/use-cases/japan-export): there is no domestic Japanese eBay marketplace; Japanese cameras, fishing tackle, retro games and cards sell to overseas buyers through eBay US, which is the sold data CompsAPI returns. Yahoo Auctions Japan and Mercari Japan are not covered. ## Contact - Free API key: self serve at https://app.compsapi.com, on screen in under a minute - Questions: keys@compsapi.com