eBay sold comps,
in one API call.
eBay sold comps as JSON. One GET returns what an item actually sold for: the sale price, date, condition and shipping of every match. Real sales, not asking prices.
Coming from SoldComps? The same search, and your code changes in minutes.
Run a sold comps search.
Live against the API, on our key. What comes back is exactly the JSON your code will get.
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.
- Half a billion
- sold listings to draw comps from, with more arriving minutes after each sale
- 100
- sold comps for one credit, up to 2,000 in one response, newest first
- 90+ days
- of sold prices, kept past the window where eBay's own sold search ends
- US · UK
- ebay.com in dollars and ebay.co.uk in pounds, picked per request
The response
What a sold comp carries.
A comp is a sale of the same item in the same condition. Every result of a sold comps search is one sale, and the same call in curl, Python or Node returns them to your code.
- sale_priceWhat the item sold for, with its currency. The number a comp is for.
- date_soldWhen it sold. Results are newest first, so the first comps are the latest sales.
- conditionnew, used, parts or other, and eBay's own wording beside it. Filter on it to compare like with like.
- shipping_priceWhat the buyer paid for shipping, apart from the price.
- buying_formatAuction, Buy It Now or Best Offer, so a bidding war and a fixed price are told apart.
- item_idThe eBay item. GET /item opens it in full: item specifics, images, seller, description.
curl "https://api.trawl.dev/ebay/v1/sold?query=iphone+15+pro+256gb&condition=used&exclude=max,case,cracked&max_pages=1" \
-H "x-api-key: $TRAWL_API_KEY"from trawl_api import Trawl
client = Trawl() # reads TRAWL_API_KEY
sold = client.ebay.sold(
"iphone 15 pro 256gb",
condition="used",
exclude=["max", "case", "cracked"],
max_pages=1, # up to 100 comps, 1 credit
)
prices = sorted(s.sale_price for s in sold.results)
print(f"{sold.count} comps, median {prices[len(prices) // 2]:.2f}")import { Trawl } from 'trawl-api'
const client = new Trawl() // reads TRAWL_API_KEY
const sold = await client.ebay.sold('iphone 15 pro 256gb', {
condition: 'used',
exclude: ['max', 'case', 'cracked'],
max_pages: 1, // up to 100 comps, 1 credit
})
const prices = sold.results.map((s) => s.sale_price).sort((a, b) => a - b)
console.log(`${sold.count} comps, median ${prices[Math.floor(prices.length / 2)].toFixed(2)}`)Switching
Coming from SoldComps?
The search is the same shape: a keyword, one eBay site, the sold listings back as JSON. The key goes in the x-api-key header, and these are the names that change. A free account has 250 credits a month and needs no card.
FAQ.
Anything else is in the docs, or write to us and a human replies within a business day.
Sold comps are comparable sold prices: what the same item, in the same condition, actually sold for. Resellers, card and sneaker traders and pricing tools use eBay sold comps to price an item from real sales, not from what sellers are asking.
Yes. GET /ebay/v1/sold is a keyword search over completed eBay sales. Each result is one comp: the title, the sale price, the sale date, the condition, the shipping and the item id, as JSON. eBay's own APIs search live listings only.
Yes. The playground on this page runs against the live API: ten free credits a month per visitor, no account and no key. A credit is a page of up to 100 comps.
A free account has 250 credits a month and needs no card. A credit is a page of up to 100 comps, a search that finds nothing costs nothing, and paid plans are monthly.
eBay's sold search shows about 90 days. Trawl keeps the sales past that window, and date_from and date_to pick the period, so last year's comps for the same item are one more call.
Sort the sale prices and take the median, the price in the middle. The middle half of the prices is the range most sales fall in. Exclude the words that mark a different item, and keep one condition, so every comp is the same thing.
The search is the same shape: a keyword, one eBay site, the sold listings back as JSON. Trawl answers from recorded sales with history past 90 days and up to 2,000 results in one response, on ebay.com and ebay.co.uk. The comparison page sets the two side by side.
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"