CompSniper Docs

eBay Item Details API (Sold Listings Included)

Get the condition, seller notes, item specifics and full description of any eBay listing by item ID, sold listings included, with GET /v1/items/details. One request per lookup, never charged when eBay no longer has the listing.

Search results tell you what sold and for how much. They do not tell you what the seller wrote about the item: the scratches, the missing charger, the box that was never opened. GET /v1/items/details reads one eBay listing by its item ID and returns its condition, the seller's condition notes, every item specific and the full description, for sold listings too, as long as eBay still keeps the listing page. That is typically months after the sale.

Use it after a sold search (/v1/scrape or /v1/research/sold) to explain why one sale went higher or lower than the rest, to grade comps by condition, or to train a pricing model on what sellers actually disclosed.

  • One request per successful lookup, on every plan, including free.
  • Never charged when eBay no longer has the listing (404 item_unavailable) or when a lookup fails.
  • Sold auctions are reported as sold at the winning bid.
  • Every eBay site: pass any eBay item ID; the listing is read from its own page.

Make a request

curl --fail-with-body \
  -H "Authorization: Bearer cs_live_REPLACEWITHYOURKEY" \
  "https://api.compsniper.com/v1/items/details?itemId=327446760056"
Python
import requests

API = "https://api.compsniper.com"
HEADERS = {"Authorization": "Bearer cs_live_REPLACEWITHYOURKEY"}

# 1. Find recent sales, 2. read what each seller wrote about the item.
sales = requests.get(f"{API}/v1/scrape", headers=HEADERS,
                     params={"keyword": "sony wh-1000xm5", "count": 10}, timeout=120).json()["items"]
for sale in sales[:3]:
    details = requests.get(f"{API}/v1/items/details", headers=HEADERS,
                           params={"itemId": sale["itemId"]}, timeout=60)
    if details.status_code == 404:
        continue  # eBay no longer has this listing; you were not charged
    details.raise_for_status()
    d = details.json()
    print(d["status"], d["price"], d["condition"], d["sellerNotes"], d["itemSpecifics"].get("Color"))
Node.js
const API = "https://api.compsniper.com";
const headers = { Authorization: "Bearer cs_live_REPLACEWITHYOURKEY" };

const res = await fetch(`${API}/v1/items/details?itemId=327446760056`, { headers });
if (res.status === 404) {
  console.log("eBay no longer has this listing (not charged)");
} else {
  const item = await res.json();
  console.log(item.status, item.price, item.condition, item.itemSpecifics);
}

Parameters

ParameterRequiredDescription
itemIdyeseBay item ID, 9 to 15 digits. Use the itemId field from /v1/scrape or /v1/research/sold.

Example response

A sold listing from the US site, read on November 9, 2026 (trimmed: the full response has all 18 item specifics, the whole description and every image). categoryPath is empty when the listing page shows no category breadcrumb.

{
  "itemId": "327446760056",
  "url": "https://www.ebay.com/itm/327446760056",
  "title": "SONY WH-1000XM5 wireless noise-canceling over-ear headphones BLACK NIB XMAS HOHO",
  "status": "sold",
  "soldDate": "2026-11-09T03:59:27.000Z",
  "endDate": "2026-11-09T03:59:27.000Z",
  "startDate": "2026-11-08T22:05:20.000Z",
  "price": "180.00",
  "currency": "USD",
  "condition": "New",
  "conditionDescription": "A brand-new, unused, unopened, undamaged item in its original packaging (where packaging is applicable). ...",
  "sellerNotes": null,
  "itemSpecifics": {
    "Brand": "Sony",
    "MPN": "WH-1000XM5",
    "Color": "Black",
    "Form Factor": "Headband",
    "Number of Earpieces": "Double"
  },
  "description": "You are bidding on a SONY WH-1000XM5 wireless noise-canceling over-ear headphones, BLACK BRAND NEW. The item pictured is the\nactual item you will receive...",
  "seller": "losbebes66",
  "categoryPath": [],
  "images": ["https://i.ebayimg.com/images/g/DeUAAeSwxeZq8PEb/s-l1600.webp"],
  "fetchedAt": "2026-11-09T05:15:58Z",
  "requestId": "..."
}

Response fields

FieldDescription
statussold, ended (ended without a sale) or active. A won auction is sold. A multi-quantity listing that is still selling is active.
price, currencyThe sold price (the winning bid for auctions) for sold listings, the current price for active ones. Decimal string.
soldDate, endDate, startDateISO 8601 dates. soldDate is set only when status is sold.
conditioneBay's condition label, for example New, Used, Certified - Refurbished, For parts or not working.
conditionDescriptioneBay's definition of that condition.
sellerNotesWhat the seller wrote about the condition: wear, defects, missing parts. null when they wrote nothing.
itemSpecificsEvery item specific on the listing as label to value: brand, model, color, size, card number, grade, grader and so on.
descriptionThe seller's description as plain text with line breaks. Empty when the listing has none.
sellerThe seller's eBay username.
categoryPathThe eBay category breadcrumb.
imagesFull-size image URLs.

Billing, limits and errors

SituationStatusCharged
Listing found2001 request
eBay no longer has the listing404 item_unavailableno
eBay did not answer in time503 item_details_unavailable, retry after a few secondsno
itemId is not 9 to 15 digits400 invalid_paramsno
More than 60 lookups in a minute429 item_details_rate_limitedno

Item details lookups share your plan's monthly requests and per-minute limit, with an extra cap of 60 lookups per minute per account. Send X-Credit-Source: credits to spend purchased credits first, the same as every other endpoint. See errors and rate limits.

Common uses

  • Condition-adjusted comps: price a used item against sales in the same condition, and drop sales whose notes mention defects.
  • Explain outliers: see why one sale went far below the median (missing parts, cracked screen) before you price your own listing.
  • Training data: pair each sold price with the seller's own words and item specifics.
  • Trading cards: read the card number, grader and grade from item specifics instead of parsing titles.

On this page