Skip to main content
GET
Completed / Sold Listings
The completed-listings endpoint returns sold items — the closing prices buyers actually paid, with the date each item sold. Every result has sold set to true on the response envelope. This is the data resellers, flippers and pricing tools rely on, since asking prices alone don’t reflect what items actually sell for.

Query Parameters

string
required
Search keywords. Matches against listing titles.
string
default:"com"
eBay marketplace domain TLD or alias. See /v1/ebay/markets for all supported values.Examples: com, co.uk, de, fr, com.au
string
Restrict results to an eBay category id. Use /v1/ebay/categories to look up ids.
integer
default:1
Page number for paginated results. Range: 1 - 1000.Use pagination.has_more to know when to stop — eBay re-serves its last page if you ask past the end, so this API returns an empty page there.
integer
Results per page. Clamped to one of 60, 120, or 240.
string
default:"best_match"
Sort order for results.
string
Item condition filter (new, open_box, refurbished, used, for_parts).Trading cards also accept graded and ungraded — eBay’s card conditions for slabbed (PSA / BGS / CGC) versus raw cards. Pricing a raw card against sales that include slabs skews the average badly, so price the two separately.
string
Item location.Omit it and you get eBay’s default, which mixes foreign listings into a national marketplace. Two things follow from that, and both matter for price research: a national price series picks up sales that never happened in that country, and a foreign listing’s price is shown converted into the marketplace’s currency rather than the amount it actually sold for. location=domestic removes both.
number
Minimum sold-price filter in the marketplace’s local currency.
number
Maximum sold-price filter in the marketplace’s local currency.

Response

Identical shape to /v1/ebay/search, except sold is true, each result’s price reflects the final sold price, and each result carries a sold_date.
string
The search query that was executed.
string
Marketplace domain that was searched.
boolean
Always true for completed/sold listings.
array
Array of sold listings (same SearchResult shape as active search).
object
Available filter facets keyed by name.
object
Pagination metadata with current_page, per_page, total_results, has_more.total_results is populated (the sold results page carries a match count). total_pages may be null — page with has_more rather than a fixed page total.
string
ISO 8601 timestamp when the results were scraped.

Example Response

Fetching every sold listing

has_more is the stop signal for bulk extraction. Increment page while it is true:
Do not loop on “until the response is empty” alone. Past its last page eBay clamps — asking for page 200 of a 133-page result set re-serves page 133. This API detects that and returns an empty page with has_more: false, but a client that ignores has_more and retries forever will keep spending credits.
A broad sold search runs roughly 130 pages deep at per_page=240 (~26,000 listings). Use the largest per_page you can: each request costs 5 credits regardless of page size, so per_page=240 is about 8x cheaper per listing than the default.
Each completed/sold request costs 5 credits. Failed requests are not charged.

Authorizations

x-api-key
string
header
required

Query Parameters

query
string
required

Search keywords.

domain
string
default:com

eBay marketplace domain TLD or alias (com, co.uk, de, fr, ...).

category_id
string

Restrict results to a category id.

page
integer
default:1

Page number for paginated results.

Required range: 1 <= x <= 1000
per_page
integer

Results per page. Clamped to 60, 120 or 240.

Required range: 1 <= x <= 240
sort_by
enum<string>
default:best_match

Sort order for results.

Available options:
best_match,
ending_soonest,
newly_listed,
price_low_to_high,
price_high_to_low
condition
enum<string>

Item condition. graded / ungraded are eBay's trading-card conditions — slabbed (PSA/BGS/CGC) vs raw — so a card can be priced separately from its slabs.

Available options:
new,
open_box,
refurbished,
used,
for_parts,
graded,
ungraded
min_price
number

Minimum price filter in the marketplace's local currency.

Required range: x >= 0
max_price
number

Maximum price filter in the marketplace's local currency.

Required range: x >= 0
location
enum<string>

Item location. domestic returns only items located in this marketplace's own country (domain=fr → France only); worldwide widens to every country. Foreign listings are priced in the marketplace's currency after eBay CONVERTS them, so domestic is also how you get untouched native sale prices.

Available options:
domestic,
worldwide

Response

200 - application/json

Completed / sold listings

query
string | null
domain
string
category_id
string | null
sold
boolean
results
object[]
facets
object
pagination
object
scraped_utc
number | null
scraped_at
string | null