Skip to content

eBay API

The TrueScrape eBay API exposes 2 public endpoints covering eBay listing details and Search eBay listings. Every call is a GET against public, logged-out pages and returns the same unified schema as every other platform here. Calls cost 1 credit each. A cache hit is free, and a failed or empty response is never charged.

Endpoints

EndpointReturnsCreditsCacheableBatchable
/v1/ebay/producteBay listing details1yesyes
/v1/ebay/searchSearch eBay listings1yesyes

Reference

GET/v1/ebay/product1 creditcacheablebatchable

eBay listing details

Public details for an eBay listing: title, price, condition, seller and an inline sample of reviews. **Required:** Pass either product_id or url.

ParameterTypeRequiredDescription
product_idstringnoNumeric eBay item id, e.g. 166619046796
urlstringnoeBay listing URL, e.g. https://www.ebay.com/itm/166619046796
tldstringnoeBay marketplace, default com. One of: com, co.uk, com.au, de, ca, fr, it, es, at, ch, com.sg, com.my, ph, ie, pl, nl
country_codestringno

Also accepts cache_max_age (a hit costs 0 credits) and include_raw (returns the untouched upstream payload under raw).

Returns one Product.

Fields
FieldTypePresentDescription
platformone of 32 stringsalways
idstringalwaysThe product id on its marketplace: the ASIN on Amazon, the item id on Walmart and eBay. Always a string.
titlestring | nullalways
brandstring | nullalways
descriptionstring | nullalways
urlstring | nullalways
imageUrlsstring[]always
pricenumber | nullalwaysThe price a buyer pays now, in `currency`.
currencystring | nullalwaysISO 4217 currency code for the amounts in this record, such as USD or EUR.
listPricenumber | nullalwaysThe struck-through reference price shown next to `price` when the listing shows a discount.
availabilityin_stock | out_of_stock | preorder | discontinued | unknown | nullalwaysStock status. `unknown` means the listing showed a status that could not be read as one of the other values.
ratingnumber | nullalwaysAverage customer rating, out of 5.
reviewCountnumber | nullalwaysNumber of ratings or reviews the marketplace reports for the product, not the number of entries in `reviews`.
sellerNamestring | nullalways
shipsFromstring | nullalwaysThe party the item ships from, as the listing names it.
marketplacestring | nullalwaysThe marketplace site this product was read from, such as `amazon.co.uk`.
categoriesstring[]alwaysCategory breadcrumb, from the broadest category to the most specific.
featureBulletsstring[]always
attributesRecord<string, string>alwaysSpecifications as label and value pairs. Which labels appear varies by marketplace and category.
reviewsProductReview[]alwaysA sample of reviews shown on the product page, not the full review list.
fetchedAtstringalwaysWhen this record was retrieved, as an ISO 8601 timestamp.
curl
curl "$API/v1/ebay/product?cache_max_age=7d" \
  -H "x-api-key: $KEY"
TypeScript
const query = new URLSearchParams({
  cache_max_age: '7d',
});

const response = await fetch(`${API}/v1/ebay/product?${query}`, {
  headers: { 'x-api-key': KEY },
});

const body = await response.json();
if (!body.success) throw new Error(body.error.code);

// 1 credit, 0 on a cache hit
console.log(body.data, body.meta.creditsCharged);
Python
Python
import os, httpx

r = httpx.get(
    f"{os.environ['API']}/v1/ebay/product",
    params={
        "cache_max_age": "7d",
    },
    headers={"x-api-key": os.environ["KEY"]},
    timeout=30,
)

body = r.json()
if not body["success"]:
    raise RuntimeError(body["error"]["code"])

print(body["data"], body["meta"]["creditsCharged"])
Response codes
200Success
400invalid_request. Not charged
401missing_api_key / invalid_api_key / revoked_api_key. Never a billing error
402insufficient_credits. The key is valid, the balance is not
429daily_cap_exceeded or upstream_rate_limited. Not charged
501not_configured. This deployment is not set up to serve this endpoint. Not charged.
502upstream_blocked / upstream_schema_drift. Not charged
504upstream_timeout. Not charged
Try it here
GET/v1/ebay/product
Open the full playground

Questions

How much does the eBay API cost?
Calls cost 1 credit each. Every endpoint is cacheable, and a cache hit costs nothing. A failed request and an empty result are both free, on every endpoint.
Does the eBay API need a login or cookies?
No. Every endpoint reads public, logged-out pages only — no account, no cookies, no session. An API key identifies your own TrueScrape account and nothing else.
Can I fetch many eBay targets in one request?
Yes. 2 of 2 are batchable: one POST to /v1/jobs/batch takes many targets and returns a job id to poll.
Can I watch eBay endpoints for changes?
Yes, 1 of 2. A subscription polls on your schedule and fires your webhook only when the content changed; the rest carry x-subscribable: false in the spec.