# eBay (/docs/ebay)
eBay [#ebay]
eBay listings and their sellers behind the same unified envelope and canonical commerce schema
as Amazon, Walmart, Target and Google Shopping, so one parser handles all of them. Two
endpoints: a deep keyword search across any of nineteen national marketplaces, and a full
listing record that carries the seller's reputation alongside the item.
Base URL: `/v1/ebay/...`
`min_price`
and
`max_price`
are applied by eBay, not by us, so the boundary rows are approximate. Filter on
`product.price.current`
in the response when you need a hard bound.
Getting started [#getting-started]
Every endpoint is a `GET` with query parameters and an `x-api-key` header. Listings are
identified by **item id**, the number in a listing URL — `ebay.com/itm/327256602116` is item id
`327256602116`. Every row returned by search carries one.
```bash
# 1. Scan the marketplace, sixty listings per page
curl "https://www.socialcrawl.dev/v1/ebay/search?query=airpods%20pro&sort_by=price_low&condition=new" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"
# 2. One listing in full, including who is selling it
curl "https://www.socialcrawl.dev/v1/ebay/product?product_id=327256602116" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"
```
Both endpoints are 5 credits.
Search [#search]
`GET /v1/ebay/search` returns sixty listings per page — more rows per call than any other
listing endpoint here — each with the item id, title, price, condition, image, seller handle,
feedback score and units sold. That density is what makes eBay the cheapest marketplace on this
API to scan at depth.
The filters map directly onto eBay's own refinements:
* `sort_by` — `best_match` (default), `price_low`, `price_high`, `newly_listed`,
`ending_soonest`
* `condition` — `new`, `opened_box`, `refurbished`, `used`
* `buying_format` — `auction`, `buy_it_now`, `accepts_offers`
* `min_price` / `max_price` — a price band
* `show_only` — `sold_items` (ended in a sale), `completed_items` (all ended
listings), `free_shipping`, or a comma-joined pair such as
`sold_items,completed_items`
* `aspects` — a category-specific item aspect from a previous response, such as `Brand:Apple`
Sold and completed listings [#sold-and-completed-listings]
eBay's public sold search now requires a signed-in browser session. This
endpoint does not: you never pass an eBay login, cookie, or session. Call
`show_only=sold_items` and read the realised sale on `product.price.current`
and the sold date on `product.ext.sold_at`.
```bash
curl "https://www.socialcrawl.dev/v1/ebay/search?query=airpods%20pro&show_only=sold_items" \
-H "x-api-key: $SOCIALCRAWL_API_KEY"
```
`completed_items` returns every ended listing, including those that did not
sell. Combine the two tokens when you want that full ended set with sold
dates still stamped on the rows that sold. eBay itself only exposes about
ninety days of sold history through search.
Listing detail [#listing-detail]
`GET /v1/ebay/product?product_id=…` returns the listing in full — title, brand, price,
condition, MPN and UPC, quantity available, and watcher count. What sets it apart from the other
commerce platforms here is the **seller** block: feedback score, top-rated status, join date,
and four detailed sub-ratings. When you are evaluating who is selling as much as what is being
sold, this is the endpoint that answers it.
Marketplaces [#marketplaces]
`country` selects the national marketplace, and it sets the listing pool, the language and the
currency together — not just a display preference. `US` (ebay.com) is the default; `GB`, `AU`,
`CA`, `DE`, `FR`, `IT`, `ES`, `IE`, `AT`, `CH`, `NL`, `BE`, `PL`, `SG`, `MY`, `PH`, `HK` and
`MX` are the rest. Pass the same `country` on `product` that you used on `search`, because an
item id resolves within its own marketplace.
Endpoints [#endpoints]
Read this before you build [#read-this-before-you-build]
**Price filters are approximate.** `min_price` and `max_price` are applied by eBay, not by us,
and the boundary rows are not exact. If you need a hard bound, filter on `product.price.current`
in the response.
**There is no category-browse endpoint.** Unlike Target or Walmart, eBay's tree is not exposed
here — keyword search plus `aspects` refinement is the path from nothing to a set of item ids.
**Auction listings are moving targets.** A `buying_format=auction` row's price is the current
bid, so a listing fetched twice legitimately reports two different numbers. Read
`sort_by=ending_soonest` results as a snapshot, not a stable set.
Notes [#notes]
* All endpoints use `GET` with query parameters
* Authentication via the `x-api-key` header
* Responses follow the unified SocialCrawl schema, shared with the other commerce platforms
* Search is page-paginated starting at `page=1`
* Prices are returned in the marketplace's own currency