Documentation Python quickstart Blog Free tools Enterprise solutions hello@quanticdata.ioLog in
All collectors

eBay scraper API

E-commerce · v1.2.0 · ebay_search

$0.001 / listing

$1.00 / 1K · pay per delivered listing

An eBay scraper API that returns listings for a keyword: item id, title, price and struck-through list price, condition, buying format, shipping and returns lines, seller location, sponsored flag and image — across 15 marketplaces.

$0.001 per delivered listing · $2 free every month · Failed runs never billed

What it does

What an eBay scraper API does

eBay rebuilt its result cards around generic text spans, which broke every scraper that relied on the old s-item classes. This collector reconstructs a row from the card's text roles instead, so it survives the class churn that takes selector-based scrapers offline.

One detail matters and it is handled: the condition chip is not always first — refurbished listings put a seller blurb ahead of it, so the condition is picked by vocabulary rather than by position.

Inputs

The whole request. Anything you leave out falls back to the default shown in the catalog.

InputTypeRequiredWhat it does
querystringyesWhat to search on eBay, e.g. "running shoes".
conditionstringnoRestrict to new or used listings. One of: any, new, used.
buy_it_now_onlybooleannoExclude auctions.
countrystringnoISO 3166-1 alpha-2 code — picks the local site AND the proxy exit (default us).
max_resultsintegernoHow many listings to deliver at most (1–250). You pay only for delivered listings.

Outputs — 26 fields, one row per listing

What one listing looks like

Every delivered listing carries these fields. Nullable means the source did not publish it — the field stays empty instead of being guessed.

FieldTypeWhat it holds
rankinteger1-based position across pages.
pageintegerSearch page the row came from.
item_idstringeBay item id.
titlestringListing title.
pricestring · nullablePrice as shown.
price_valuenumber · nullableNumeric price.
list_pricestring · nullableStruck-through price when discounted.
conditionstring · nullableCondition chip (Brand New, Pre-Owned…).
attributesstring[]Variant/brand chips shown under the title.
formatstring · nullableBuying format (Buy It Now, bids…).
shippingstring · nullableShipping/delivery line.
locationstring · nullableSeller location line.
returnsstring · nullableReturns line when shown.
sponsoredbooleanTrue for paid placements.
imagestring · nullableThumbnail URL.
urlstring · nullableListing URL.
best_offerbooleanTrue when the listing accepts offers.
shipping_costnumber · nullableShipping cost parsed from the shipping line (0 when free).
bidsinteger · nullableBid count on auctions.
time_leftstring · nullableAuction time left as shown ("6d 11h").
ratingnumber · nullableProduct star rating when the listing is tied to a catalog product.
reviews_countinteger · nullableNumber of product ratings.
product_idstring · nullableeBay catalog product id (ePID) when present.
watchersinteger · nullableWatcher count when the card shows it.
badgestring · nullableCard caption ("NEW LOW PRICE", "NEWLY LISTED").
urgencystring · nullableUrgency line ("Last one").

Integration

One POST, typed rows

Base URL https://api.quanticdata.io/v1, Bearer auth, the same key as every other Data API. Endpoint: POST /v1/scraper/collectors/ebay_search/run.

curl -X POST https://api.quanticdata.io/v1/scraper/collectors/ebay_search/run \
  -H "Authorization: Bearer $QD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"query":"running shoes","country":"us","max_results":50}'

Example response

POST /v1/scraper/collectors/ebay_search/run
$ curl $QD/ebay_search/run \
    -H "Authorization: Bearer $QD_API_KEY" \
    -d '{"query": "running shoes", "country": "us", "max_results": 50}'
{ "status": "done", "count": 50,
  "results": [
    {
      "item_id": "…",
      "title": "…",
      "price": "…",
      "price_value": … } ],
  "cost": 0.05 }
# 50 listings × $0.001 · nothing delivered, nothing charged

Try it

eBay search, running now

Change the input and run it against the live collector — nothing to install, no sign-up.

Run it from your own code, on your own inputs

Same collector, same rows — $2 of free API credit every month, no card.

Get my free API key
eBay scraper API: from query and country, QuanticData reads the eBay results and returns one row per listing with title, price and condition, at $0.001 per delivered listing.
You send query and condition; the run goes out through a residential exit and comes back as listings with rank, page and item_id — 26 fields on every row — and you are billed $0.001 for each listing actually delivered, nothing for a run that delivers none.
$0.001 / listing2,000 listings on the free $2 every month
Semantic inputquery, condition, buy_it_now_only — no URL lists
Up to 250listings per run, pagination handled for you
No browserread over HTTP/TLS — cheaper and faster than rendering

Pricing

eBay scraper API pricing

$0.001 per delivered listing. A run that delivers nothing costs nothing: blocked pages, challenges and retries are on us, and the $2 monthly allowance covers about 2,000 listings before you spend anything.

$0.001per delivered listing$1 per 1,000 delivered listings
2,000 listingson the free allowance$2 every month, no card
Zero rowszero chargeblocks, captchas and retries are on us
−30%on volume tiersthe catalog returns your key's price

Same wallet, same key and same $2 monthly allowance as every other Data API. Prices are launch pricing read live from the billing config — GET /v1/scraper/collectors returns the price your key actually pays.

What people build with the eBay scraper API

Three shapes of work this endpoint was designed around.

Resale price research

Compare asking prices by condition for the same model across a marketplace.

Auction versus fixed price

Split the market by buying format before deciding how to list.

Grey-market monitoring

Watch which sellers list your product, from which country, at what price.

eBay scraper API versus rolling your own

The differences that actually cost time when you build this in-house.

DIY scraperThis collector
Card markupBreaks with every class renameRebuilt from text roles
Sponsored detectionMissedDetected
ConditionFirst chip, often the seller's blurbMatched against eBay's condition vocabulary

What people search for

Live autocomplete demand around eBay search, pulled with our own Keyword ideas collector.

The index versus the page

eBay's Browse and Finding APIs are real and well documented, and reaching them means registering an application, completing developer onboarding and handling OAuth token refresh. For a team that wants a comparable price series across five marketplaces this quarter, that is a lot of process before the first row.

They also answer from eBay's index with eBay's ranking, while a dataset about the market usually needs the result page as served — including promoted placements and the order buyers actually saw. For comparability the fields that matter are format and shipping: an auction bid mid-flight and a fixed price are not the same measurement, and a cheap item with expensive postage is not cheap.

Limits, filters and the legal bit

Up to 250 listings per run — deep enough that long-tail supply on page four is reachable. The condition and buy_it_now_only filters apply at the source, so narrowing a sweep reduces what you are billed rather than just what you keep. Throughput is your plan's rate limit rather than anything about the collector: 60 requests/minute on pay-as-you-go, up to 1,200 on the top tier.

Collecting publicly visible data is generally lawful in most jurisdictions, and courts have repeatedly declined to treat reading a public page as unauthorised access. eBay's terms restrict automated access, and seller usernames and locations can be personal data depending on context. None of this is legal advice — get some for your actual use case.

eBay scraper API: the POST to the ebay_search collector, 50 listings delivered and the bill, 50 × $0.001 = $0.05 in usage.cost_usd; zero listings would cost $0.
The same call you would paste into a terminal: a Bearer key, query, country and condition in the body, and back the envelope every QuanticData endpoint returns — type, message, payload — where count is how many listings arrived and usage.cost_usd is $0.05, which is 50 × $0.001. A run that delivers nothing costs nothing. The key is good for 60 req/min on the free tier.

Sources and standards

The platform documentation and standards this collector is built against — check any claim on this page against the primary source:

FAQ

Questions we get about the eBay scraper API.

Something else? Ask us

Can I filter to new or used only?

Yes. condition accepts new or used and maps to eBay's own filter ids, and buy_it_now_only drops auctions.

Which marketplaces are supported?

Fifteen, chosen with country: US, UK, IE, DE, FR, IT, ES, NL, BE, AT, CH, PL, CA, AU.

Do you return the seller name?

The result card publishes location, format, shipping and returns, not a seller handle. Where eBay shows a store name in the card it lands in the attribute chips.

Is there a free eBay scraper API?

Every account gets $2 of credit every month with no card, which is about 2,000 delivered listings on this endpoint at $0.001 each. It renews monthly, and a run that delivers nothing is never billed — so a failed or blocked attempt does not eat the allowance.

How much does one run cost?

Multiply the rows you actually receive by $0.001. A run capped at 250 listings — the maximum for this collector — costs $0.25 if every row comes back, and less when the source has fewer. Volume tiers take up to 30% off, and GET /v1/scraper/collectors returns the price your key actually pays.

Why keep the buying format as a column?

Because mixing auctions and fixed-price listings produces a price series that moves for reasons unrelated to the market. Keeping format lets one dataset answer both questions instead of quietly averaging them into a third that means nothing.

Do the filters save money?

Yes — they are applied by eBay before results are collected, so a used-only or Buy-It-Now-only sweep collects and bills fewer rows rather than returning everything for you to discard.

Run the eBay scraper API now

$2 of free credit every month, no card. Your key returns its own prices from GET /v1/scraper/collectors.

Run in dashboard
Illustration: three coloured zones of the page that is read (eBay results) turn into clean JSON with the fields title, price and condition; 26 fields on every row.