curl --request GET \
--url https://scrapebadger.com/v1/ebay/search \
--header 'x-api-key: <api-key>'import requests
url = "https://scrapebadger.com/v1/ebay/search"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://scrapebadger.com/v1/ebay/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/ebay/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/ebay/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/ebay/search")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/ebay/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"query": "<string>",
"domain": "<string>",
"category_id": "<string>",
"sold": true,
"results": [
{
"position": 123,
"item_id": "<string>",
"product_id": "<string>",
"title": "<string>",
"url": "<string>",
"image": "<string>",
"price": {
"value": 123,
"currency": "<string>",
"symbol": "<string>",
"raw": "<string>"
},
"original_price": {
"value": 123,
"currency": "<string>",
"symbol": "<string>",
"raw": "<string>"
},
"discount_percent": 123,
"currency": "<string>",
"condition": "<string>",
"brand": "<string>",
"buying_format": "<string>",
"is_auction": true,
"bids": 123,
"time_left": "<string>",
"current_bid": {
"value": 123,
"currency": "<string>",
"symbol": "<string>",
"raw": "<string>"
},
"shipping": "<string>",
"shipping_cost": {
"value": 123,
"currency": "<string>",
"symbol": "<string>",
"raw": "<string>"
},
"free_shipping": true,
"location": "<string>",
"returns": "<string>",
"sold_count": 123,
"sold_date": "2 Jul 2026",
"sold_date_at": "2026-07-02",
"watchers": 123,
"coupon": "<string>",
"rating": 123,
"ratings_total": 123,
"seller_name": "<string>",
"seller_feedback_percent": 123,
"seller_feedback_score": 123,
"program_badge": "<string>",
"is_sponsored": true
}
],
"facets": {},
"pagination": {
"current_page": 123,
"per_page": 123,
"total_pages": 123,
"total_results": 123,
"has_more": true
},
"scraped_utc": 123,
"scraped_at": "<string>"
}Search Listings
Search an eBay marketplace for active listings.
curl --request GET \
--url https://scrapebadger.com/v1/ebay/search \
--header 'x-api-key: <api-key>'import requests
url = "https://scrapebadger.com/v1/ebay/search"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://scrapebadger.com/v1/ebay/search', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://scrapebadger.com/v1/ebay/search",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://scrapebadger.com/v1/ebay/search"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://scrapebadger.com/v1/ebay/search")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://scrapebadger.com/v1/ebay/search")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"query": "<string>",
"domain": "<string>",
"category_id": "<string>",
"sold": true,
"results": [
{
"position": 123,
"item_id": "<string>",
"product_id": "<string>",
"title": "<string>",
"url": "<string>",
"image": "<string>",
"price": {
"value": 123,
"currency": "<string>",
"symbol": "<string>",
"raw": "<string>"
},
"original_price": {
"value": 123,
"currency": "<string>",
"symbol": "<string>",
"raw": "<string>"
},
"discount_percent": 123,
"currency": "<string>",
"condition": "<string>",
"brand": "<string>",
"buying_format": "<string>",
"is_auction": true,
"bids": 123,
"time_left": "<string>",
"current_bid": {
"value": 123,
"currency": "<string>",
"symbol": "<string>",
"raw": "<string>"
},
"shipping": "<string>",
"shipping_cost": {
"value": 123,
"currency": "<string>",
"symbol": "<string>",
"raw": "<string>"
},
"free_shipping": true,
"location": "<string>",
"returns": "<string>",
"sold_count": 123,
"sold_date": "2 Jul 2026",
"sold_date_at": "2026-07-02",
"watchers": 123,
"coupon": "<string>",
"rating": 123,
"ratings_total": 123,
"seller_name": "<string>",
"seller_feedback_percent": 123,
"seller_feedback_score": 123,
"program_badge": "<string>",
"is_sponsored": true
}
],
"facets": {},
"pagination": {
"current_page": 123,
"per_page": 123,
"total_pages": 123,
"total_results": 123,
"has_more": true
},
"scraped_utc": 123,
"scraped_at": "<string>"
}Query Parameters
/v1/ebay/markets for all supported values.Examples: com, co.uk, de, fr, com.au/v1/ebay/categories to look up ids.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.60, 120, or 240.| Value | Description |
|---|---|
best_match | Best match (default) |
ending_soonest | Auctions ending soonest first |
newly_listed | Most recently listed |
price_low_to_high | Cheapest first (incl. shipping) |
price_high_to_low | Most expensive first (incl. shipping) |
| Value | Description |
|---|---|
new | Brand new |
open_box | New (other) / open box |
refurbished | Refurbished (any grade) |
used | Pre-owned |
for_parts | For parts or not working |
graded | Trading cards: slabbed (PSA / BGS / CGC) |
ungraded | Trading cards: raw |
graded / ungraded are eBay’s card-specific conditions. Pricing a raw card
against sales that include slabs skews the average badly — price the two
separately.| Value | Description |
|---|---|
auction | Auction listings |
buy_it_now | Fixed-price listings |
best_offer | Listings accepting best offers |
| Value | Description |
|---|---|
domestic | Only items located in this marketplace’s own country (domain=fr → France only) |
worldwide | Items from every country |
location=domestic removes both.Response
false for active-listing search (see /completed for sold).Show SearchResult object
Show SearchResult object
value, currency, symbol, raw.Buy It Now, Auction, or Best Offer.12h 16m (auctions only, nullable).value, currency, symbol, raw; mirrors price. Null for non-auction (fixed-price) listings.2 Jul 2026 (completed/sold cards only; localized on non-English marketplaces, nullable).sold_date, e.g. 2026-07-02 (null when the marketplace’s date format is not English).eBay Refurbished (nullable).null. eBay renders its “Sponsored” badge into every card as anti-scraping bait, so promoted placements cannot be distinguished from organic results.current_page, per_page, total_pages, total_results.Example Response
{
"query": "nintendo switch oled",
"domain": "com",
"category_id": null,
"sold": false,
"results": [
{
"position": 1,
"item_id": "256123456789",
"product_id": "20057872541",
"title": "Nintendo Switch OLED Model White Console - Brand New Sealed",
"url": "https://www.ebay.com/itm/256123456789",
"image": "https://i.ebayimg.com/images/g/abc/s-l500.jpg",
"price": { "value": 299.99, "currency": "USD", "symbol": "$", "raw": "$299.99" },
"original_price": { "value": 349.99, "currency": "USD", "symbol": "$", "raw": "$349.99" },
"discount_percent": 14.0,
"condition": "Brand New",
"brand": "Nintendo",
"buying_format": "Buy It Now",
"is_auction": false,
"bids": null,
"time_left": null,
"current_bid": null,
"shipping": "Free shipping",
"free_shipping": true,
"location": "United States",
"sold_count": 42,
"watchers": 18,
"seller_name": "topgames_us",
"seller_feedback_percent": 99.4,
"seller_feedback_score": 18452,
"is_sponsored": null
},
{
"position": 2,
"item_id": "256987654321",
"title": "Nintendo Switch OLED Console - No Reserve Auction",
"url": "https://www.ebay.com/itm/256987654321",
"image": "https://i.ebayimg.com/images/g/def/s-l500.jpg",
"price": { "value": 212.5, "currency": "USD", "symbol": "$", "raw": "$212.50" },
"condition": "Used",
"buying_format": "Auction",
"is_auction": true,
"bids": 17,
"time_left": "12h 16m",
"current_bid": { "value": 212.5, "currency": "USD", "symbol": "$", "raw": "$212.50" },
"shipping": "Free shipping",
"free_shipping": true,
"location": "United States",
"seller_name": "retro_deals",
"is_sponsored": null
}
],
"facets": { "condition": ["New", "Used"], "buying_format": ["Buy It Now", "Auction"] },
"pagination": { "current_page": 1, "per_page": 60, "total_pages": 100, "total_results": 6000 },
"scraped_at": "2026-06-21T12:00:00Z"
}
Authorizations
Query Parameters
Search keywords.
eBay marketplace domain TLD or alias (com, co.uk, de, fr, ...).
Restrict results to a category id.
Page number for paginated results.
1 <= x <= 1000Results per page. Clamped to 60, 120 or 240.
1 <= x <= 240Sort order for results.
best_match, ending_soonest, newly_listed, price_low_to_high, price_high_to_low 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.
new, open_box, refurbished, used, for_parts, graded, ungraded Buying format filter.
auction, buy_it_now, best_offer Minimum price filter in the marketplace's local currency.
x >= 0Maximum price filter in the marketplace's local currency.
x >= 0Only return listings with free shipping.
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.
domestic, worldwide 
