eBay
eBay Search API
Search live eBay listings - or, with sold set to true, completed listings that actually sold - and get back price, condition, bids, shipping, location, seller and feedback as JSON. Send query, seller, or both: a seller with no keyword pages that seller's entire catalogue. Costs 1 credit per request.
Authorizations
AuthorizationstringheaderrequiredBearer authentication header of the form Bearer <token>, where <token> is your Scavio API key (e.g. Bearer sk_live_your_key).
Body
application/jsonquerystringKeyword to search, 1-500 characters. Optional only because a seller-only search is valid; one of query or seller must be present.
Example: wireless headphones
sellerstringRestrict results to one seller's listings, 1-64 characters, as in ebay.com/usr/<name>. Can be sent with no query at all - this, not the seller endpoint, is how you enumerate a seller's inventory.
Example: belkin-official-store
pageintegerResults page, 1-based. Minimum 1.
sort_byenum<string>default:best_matchResult sort order. eBay's 'Distance: nearest first' is deliberately unsupported: it ranks against our proxy exit, not against the caller.
best_match— eBay's default relevance ranking.ending_soonest— Auctions closing first.newly_listed— Most recently listed first.price_low— Price + shipping, lowest first.price_high— Price + shipping, highest first.
min_pricenumberMinimum price, inclusive. Must be 0 or greater.
max_pricenumberMaximum price, inclusive. Must be 0 or greater.
conditionenum<string>Item condition filter.
new— Brand new.open_box— New, opened packaging.refurbished— eBay's parent refurbished condition, not one of its three graded tiers (excellent / very good / good).used— Pre-owned.for_parts— For parts or not working.
buying_formatenum<string>Listing format filter.
auction— Auction listings.buy_it_now— Fixed-price listings.best_offer— Fixed price accepting offers.
free_shippingbooleanOnly listings with free shipping.
soldbooleanSearch completed listings that actually SOLD instead of live inventory - the price-research view. eBay publishes no headline count for it, so total_results comes back null on this view.
Example: true
category_idstringeBay category id. Must be numeric; a non-numeric value is rejected with a 400. An unrecognised numeric id is NOT an error - eBay returns the unfiltered set under a 200.
Example: 112529
per_pageenum<integer>default:60Listings per page. eBay accepts only 60, 120 or 240 and silently falls back to 60 for anything else, so treat it as a closed set.
60— Default page size.120— Double page.240— Maximum page.
Request
from scavio import ScavioClient
client = ScavioClient(api_key="sk_live_your_key")
# Price research: completed listings that actually sold
results = client.ebay.search(query="wireless headphones", sold=True)
print(results)Response