eBay API endpoint
Searches eBay listings by keyword from a JSON body, with page, page size (60, 120 or 240) and a listing-status filter (`active`, `sold`, `completed` or `sold_completed`). Each result has the item id, title, link, image, price or price range, bid count, seller and rating, location, shipping information, and sold and watcher counts.
/ebay/searchRequest body (top-level JSON fields — do not nest these under an option key):
keyword (string): required. eBay search keyword.page (integer): optional. Result page number, default 1.limit (integer): optional. Results page size, default 60. Allowed values: 60, 120, 240.listing_type (string): optional. Listing status filter, default active. Allowed values: active, sold, completed, sold_completed.There is currently no price, shipping-country, or seller-type filter on this endpoint — any extra fields in the request body are ignored rather than rejected, so a typo'd or unsupported field will not surface as an error.
Example request body:
{
"keyword": "1952 topps baseball mickey mantle #311",
"limit": 60,
"listing_type": "active"
}
| Field | Filled in, of 60 checked | Values in the sample |
|---|---|---|
| image | 60 | i.ebayimg.com |
| item_id | 60 | |
| title | 60 | “Apple iPhone 12 - 64gb - Blue Physical Sim - 77% batt (Unlo…” and 59 other values |
| sub_title | 60 | “Pre-Owned” and 21 other values |
| link | 60 | ebay.com |
| price | 60 | 1.12 to 2,975.77, median 173.28 |
| rating | 21 | 4.5 to 5, median 4.5 |
| bid_count | 7 | 2 to 57, median 6 |
| seller | 60 | |
| logistic | 59 | “+$325.47 delivery” and 31 other values |
| location | 60 | “Canada” and 13 other values |
| watcher_count | 17 | 9 to 105, median 17 |
| offer_note | 54 | Buy It Now (37), or Best Offer (17) |
| sold_count | 4 | 42 to 132, median 51 |
| caption | 5 | NEW LOW PRICE in all 5 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| option (body) | object | Yes | eBay search payload | ||
| x-api-key (header) | string | Yes | API key required |
curl -X POST "https://api.crawlora.net/api/v1/ebay/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword":"1952 topps baseball mickey mantle #311","limit":60,"listing_type":"active","page":1}'{
"keyword": "1952 topps baseball mickey mantle #311",
"limit": 60,
"listing_type": "active",
"page": 1
}{
"code": 200,
"msg": "OK",
"data": {
"page": 1,
"total": 123,
"has_more": true,
"result": [
{
"image": "https://i.ebayimg.com/images/g/item1/s-l140.webp",
"caption": "New Listing",
"item_id": "196435705622",
"title": "OpenAI Shirt",
"sub_title": "Brand New",
"link": "https://www.ebay.com/itm/196435705622"
}
]
}
}Request schema
#/definitions/ebay.SearchOption
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| keyword | string | Yes | 1952 topps baseball mickey mantle #311 | keyword to search on Ebay | ||
| limit | integer | No | 60, 120, 240 | 60 | Number of items per page | |
| listing_type | string | No | active, sold, completed, sold_completed | active | Listing type to search | |
| page | integer | No | 1 | Page number |
Response schema
#/definitions/ebay.searchResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | ebay.SearchResp | No | ||||
| data.has_more | boolean | No | true | Whether more results are available on later pages. | ||
| data.page | integer | No | 1 | Page number returned. | ||
| data.result | array | No | Listings on this page. | |||
| data.result[].bid_count | integer | No | 9 | Number of bids on an auction listing. | ||
| data.result[].caption | string | No | caption | Caption line shown on the search card. | ||
| data.result[].image | string | No | https://i.ebayimg.com/images/g/b6wAAOSwLRdmZeHS/s-l500.jpg | URL of the listing's thumbnail image. | ||
| data.result[].is_authenticity_guaranteed | boolean | No | false | Whether the listing carries eBay's Authenticity Guarantee. | ||
| data.result[].item_id | string | No | 196435705622 | eBay item ID of the listing. Use it with the item endpoint. | ||
| data.result[].link | string | No | https://www.ebay.com/itm/196435705622 | URL of the listing on eBay. | ||
| data.result[].location | string | No | Canada | Item location shown on the search card, such as `Canada`. | ||
| data.result[].logistic | string | No | +$4.95 shipping | Shipping information shown on the search card, such as `+$4.95 shipping`. | ||
| data.result[].offer_note | string | No | Buy It Now | Purchase option label shown on the card, such as `Buy It Now`. | ||
| data.result[].price | number | No | 49.95 | Listing price as a number. Set only when the card shows a single price, not a range. | ||
| data.result[].price_from | number | No | 10 | $10 to $20 | ||
| data.result[].price_to | number | No | 20 | Upper end of the price when the card shows a price range. | ||
| data.result[].rating | number | No | 5 | Average product star rating. | ||
| data.result[].rating_num | integer | No | 1 | Number of product ratings. | ||
| data.result[].seller | string | No | soonerfan1949 (998) 100% | Seller name with feedback count and positive percentage, as shown on the card, such as `soonerfan1949 (998) 100%`. | ||
| data.result[].sold_count | integer | No | 178 | Number of units sold, as shown on the card. | ||
| data.result[].sub_title | string | No | Pre-Owned | Subtitle line shown on the card, such as `Pre-Owned`. | ||
| data.result[].title | string | No | 1983 TOPPS BASEBALL - 1952 TOPPS REPRINTS #311 MICKEY MANTLE | Listing title as shown on the search card. | ||
| data.result[].watcher_count | integer | No | 26 | Number of users watching the listing. | ||
| data.total | integer | No | 120 | Total number of results eBay reports for the search. | ||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/definitions/app.Response |
| 500 | Internal Server Error | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X POST "https://api.crawlora.net/api/v1/ebay/search" \
-H "x-api-key: $CRAWLORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{"keyword":"1952 topps baseball mickey mantle #311","limit":60,"listing_type":"active","page":1}'