eBay Search Scraper API
Our eBay search scraper turns any keyword or search URL into structured JSON: the full result page as an array of listings, each with title, price, condition, shipping, sold count, watchers, and buying format, from one request.
Quickstart
curl "https://api.ebayscraperapi.com/api/v1/ebay/search?query=coffee+maker&api_key=$API_KEY" import requests
BASE = "https://api.ebayscraperapi.com"
API_KEY = "YOUR_API_KEY"
# Pass a keyword (query) or a full eBay search URL.
data = requests.get(
f"{BASE}/api/v1/ebay/search",
params={"query": "coffee maker", "api_key": API_KEY},
timeout=30,
).json()
print(data["query"], "-", data["total_results"], "listings")
for item in data["results"]:
print(item["position"], item["price"], item["condition"], item["title"])
print(" ", item["url"])
# Page deeper with the page parameter (1-100).
page2 = requests.get(
f"{BASE}/api/v1/ebay/search",
params={"query": "coffee maker", "page": 2, "api_key": API_KEY},
timeout=30,
).json() Params
| Parameter | Required | Default | Notes |
|---|---|---|---|
query | required | - | The search keyword, e.g. coffee maker. Required. Pass a full eBay search URL instead if you already have one. |
url | optional | - | A full eBay search-results URL (…/sch/i.html?_nkw=…). Use it in place of query to scrape a pre-built search, filtered link, or category page as-is. |
page | optional | 1 | Page number of results, 1 to 100. Each page returns roughly 60 listings (items-per-page is set to 60 server side). |
domain | optional | com | eBay marketplace TLD, e.g. com, co.uk, de, com.au. Controls which regional eBay site is searched. |
country | optional | - | Optional two-letter country code for the proxy egress, so prices and shipping render as seen from that region. |
api_key | required | - | Your API key, passed as a query parameter. Get one free at signup. |
Response
{
"query": "coffee maker",
"page": 1,
"total_results": 56,
"results": [
{
"position": 1,
"id": "117247270687",
"title": "Nespresso VertuoPlus Deluxe Coffee and Espresso Machine - Black (ENV155BAE)",
"url": "https://www.ebay.com/itm/117247270687",
"price": 45,
"currency": "USD",
"price_raw": "$45.00",
"rating": 5,
"reviews_count": 12,
"thumbnail": "https://i.ebayimg.com/images/g/ze4AAeSwZVNqLbzb/s-l140.webp",
"subtitle": null,
"condition": "Pre-Owned",
"shipping": "+$117.65 delivery",
"returns": null,
"quantity_sold": null,
"extracted_quantity_sold": null,
"buying_format": "accepts_offers",
"buying_format_text": "or Best Offer",
"extensions": null,
"watchers": null,
"extracted_watchers": null,
"stock_status": null,
"epid": "26047541878",
"new_listing": null,
"bids": null
},
{
"position": 2,
"id": "127757820251",
"title": "Single Serve One Cup Coffee Maker K Cup/Grounds, Mini 6-12oz Portable, Black",
"url": "https://www.ebay.com/itm/127757820251",
"price": 32.99,
"currency": "USD",
"price_raw": "$32.99",
"rating": null,
"reviews_count": null,
"thumbnail": "https://i.ebayimg.com/images/g/ukcAAeSwdVZpK5BX/s-l140.webp",
"condition": "Brand New",
"shipping": "+$20.23 delivery",
"quantity_sold": "169 sold",
"extracted_quantity_sold": 169,
"buying_format": "buy_it_now",
"buying_format_text": "Buy It Now",
"epid": null,
"bids": null,
"old_price": { "raw": "$59.99", "extracted": 59.99, "discount": "$32.99" }
}
]
} | Field | Type | Description |
|---|---|---|
query | string | The search term the results were fetched for. |
page | integer | The result page returned, starting at 1. |
total_results | integer | Number of listings parsed on this page. |
results | array | The listings on this page, each an object with the fields below. |
position | integer | Rank of the listing within the result page, starting at 1. |
id | string | The eBay item id, parsed from the stable /itm/{id} link. |
title | string | The listing title. |
url | string | Canonical /itm/{id} URL for the listing. Feed it straight into the product endpoint. |
Use it for
Price and market research
Competitor and reseller tracking
Deal and arbitrage sourcing
Catalog and feed building
How it compares
| Our API | DIY (requests / headless) | eBay Browse API | |
|---|---|---|---|
| Keyword search | Yes, query or full search URL | Manual fetch and parse per page | Requires an OAuth app and registration |
| Setup | API key only | Proxies, headless browser, parsers | Developer account, app keys, OAuth token |
| Card fields parsed | Price, condition, shipping, sold, watchers, format | You write a selector for each | Catalog fields, not the live SERP card |
| Anti-bot and proxies | Built in, geo-aware | You build and maintain it | Not applicable |
| Resilience to markup change | Anchored on /itm/ links | Breaks when eBay renames classes | Stable, but not the public SERP |
| Rate limits | By plan, no OAuth quota | Bound by your proxy pool | Per-app call quotas and throttling |
Pricing
| Plan | Price | Best for |
|---|---|---|
| Free | 1,000 requests | Testing and small jobs |
| Pro | $0.60 / 1k | Production workloads |
| Pay-as-you-go | $0.90 / 1k | Spiky or one-off volume |
Median response 2.6s. You only pay for successful requests.
FAQ
What is an eBay search scraper?
An eBay search scraper is a tool that reads an eBay keyword search and returns each listing as structured data. Our eBay search scraper API takes a keyword or a full search URL and returns the result page as JSON: position, id, title, url, price, currency, condition, shipping, sold count, watchers, buying format, rating, and badges for every listing, from a single request.
How do I scrape eBay search results without writing a parser?
Send one GET request to our ebay/search endpoint with your query and API key. We render nothing you have to manage: we rotate proxies, handle eBay's anti-bot checks, retry on failure, and parse the cards into JSON, so you skip maintaining selectors against eBay's s-card markup, which it renames periodically.
Can I scrape a specific eBay search URL or category?
Yes. Pass a full eBay search URL to the url parameter instead of query and we scrape it exactly as built, including your filters, sort order, or category. That means a link like /sch/i.html with condition, price, or Buy It Now filters already applied comes back parsed the same way a plain keyword search does.
How many results does one call return, and how do I get more?
One call returns a full first page, about 60 listings, because we set eBay's items-per-page to 60 server side rather than the smaller default. To go deeper, pass the page parameter (1 to 100); each value fetches the next page of results. The response echoes the page and total_results so you know how many listings came back.
Does it return the exact price and currency?
Yes. Each listing carries price as a number, price_raw as the exact on-card string, and currency. Discounted items also include an old_price object with the strikethrough list price and discount, and range-priced multi-variation listings return price as a { from, to } object. Note that eBay localises prices to the egress IP's country, so use the domain and country parameters to control which region's pricing you get.
Can I get seller feedback from the search results?
Not from the search endpoint. eBay does not put the seller username, feedback score, or positive percentage in the search-results HTML; those fields only appear on the item page and the seller's store. To get them, take the listing url or the seller and call our ebay/product or ebay/seller endpoint, which read the surfaces that carry that data.