LurkAPI eBay API
eBay search results and listing details: prices, bids, condition, sellers, shipping and item specifics.
eBay search results and listing details: prices, bids, condition, sellers, shipping and item specifics.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/lurkapi:lurkapi-ebay-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Lurkapi eBay API
version: 1.0.0
description: 'Operations tagged eBay across 2 of this provider''s published API definitions: lurkapi-openapi-api.json, lurkapi-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.lurkapi.com
security:
- apiKey: []
tags:
- name: eBay
description: 'eBay search results and listing details: prices, bids, condition, sellers, shipping and item specifics.'
paths:
/v1/ebay/search:
get:
operationId: ebay_search
tags:
- eBay
summary: Search eBay listings
description: 'Active eBay listings for a keyword, with price, bids, condition, shipping, seller and how many sold, filtered and sorted like ebay.com.
Use it for price research and sourcing: what''s listed, at what price, in what condition, and which listings sell. Filters work like eBay''s own: `condition`, `buying_format`, `min_price` and `max_price`, `free_shipping` and `category_id`.
The price filters use the item price, without shipping. `category_id` is the number in an eBay category URL, or the `category_id` from listing details (ebay_item).
Results match what ebay.com shows. Sponsored listings eBay places among the results are included; carousels and ads between them aren''t. `sold` is how many units a listing has sold. It isn''t a list of sold items, which eBay shows only to signed-in accounts.
**Pagination.** 60 listings per page. Pass `next_page` as `page` for more. It''s null on the last page.
Cost: 2 credits.'
externalDocs:
url: https://lurkapi.com/docs/ebay/search
x-credits: 2
parameters:
- name: query
in: query
required: true
description: Keywords, as typed into eBay's search box, e.g. `iphone 15 pro`.
schema:
type: string
minLength: 1
maxLength: 300
description: Keywords, as typed into eBay's search box, e.g. `iphone 15 pro`.
example: nintendo switch oled
- name: condition
in: query
required: false
description: '`new`, `open_box`, `refurbished` (any refurbished grade), `used`, `for_parts`, or `any` (default).'
schema:
description: '`new`, `open_box`, `refurbished` (any refurbished grade), `used`, `for_parts`, or `any` (default).'
default: any
type: string
enum:
- any
- new
- open_box
- refurbished
- used
- for_parts
- name: buying_format
in: query
required: false
description: '`buy_it_now`, `auction`, `best_offer` (accepts offers), or `any` (default).'
schema:
description: '`buy_it_now`, `auction`, `best_offer` (accepts offers), or `any` (default).'
default: any
type: string
enum:
- any
- buy_it_now
- auction
- best_offer
- name: sort
in: query
required: false
description: '`best_match` (eBay''s default), `ending_soonest`, `newly_listed`, `price_low` or `price_high` (price plus shipping).'
schema:
description: '`best_match` (eBay''s default), `ending_soonest`, `newly_listed`, `price_low` or `price_high` (price plus shipping).'
default: best_match
type: string
enum:
- best_match
- ending_soonest
- newly_listed
- price_low
- price_high
- name: min_price
in: query
required: false
description: Lowest item price in US dollars, e.g. `100`.
schema:
description: Lowest item price in US dollars, e.g. `100`.
type: number
minimum: 0
maximum: 10000000
- name: max_price
in: query
required: false
description: Highest item price in US dollars, e.g. `500`.
schema:
description: Highest item price in US dollars, e.g. `500`.
type: number
minimum: 0
maximum: 10000000
- name: free_shipping
in: query
required: false
description: '`true` keeps listings with free shipping only.'
schema:
description: '`true` keeps listings with free shipping only.'
default: 'false'
type: string
enum:
- 'true'
- 'false'
- name: category_id
in: query
required: false
description: An eBay category number, e.g. `9355` (Cell Phones & Smartphones).
schema:
description: An eBay category number, e.g. `9355` (Cell Phones & Smartphones).
type: string
pattern: ^\d{1,10}$
- name: page
in: query
required: false
description: Page of results, 1–100; 60 listings each. Use `next_page` from the previous answer.
schema:
description: Page of results, 1–100; 60 listings each. Use `next_page` from the previous answer.
default: 1
type: integer
minimum: 1
maximum: 100
responses:
'200':
description: Active eBay listings for a keyword, with price, bids, condition, shipping, seller and how many sold, filtered and sorted like ebay.com.
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
const: true
description: 'Always true here; errors have `success: false`.'
credits_remaining:
type: number
description: 'Your balance after this call. On anonymous playground calls: free tries left today.'
credits_charged:
type: number
description: 'Credits this call cost; 0 on free endpoints. On anonymous playground calls: tries used (1).'
total_results:
description: Matching listings as eBay counts them, from "40,000+ results" (a rounded lower bound for big searches).
type:
- number
- 'null'
items:
type: array
items:
type: object
properties:
id:
type: string
description: Item id, e.g. `285090601008`. Pass it to eBay listing details (ebay_item) for specifics, seller and shipping.
url:
type: string
description: The listing on ebay.com.
title:
type: string
description: Listing title.
subtitle:
description: 'The lines under the title other than the condition: the seller''s subtitle and key specifics, joined with ` · `.'
type:
- string
- 'null'
condition:
description: Condition as the card shows it, e.g. "Brand New", "Pre-Owned", "Good - Refurbished".
type:
- string
- 'null'
image:
description: Thumbnail URL (i.ebayimg.com).
type:
- string
- 'null'
price:
description: Price (the low end of a range, for listings with variations), in US dollars; null when the card doesn't show it.
type:
- number
- 'null'
price_max:
description: The high end of a price range; null for a single price, in US dollars; null when the card doesn't show it.
type:
- number
- 'null'
price_text:
description: The price as shown, e.g. "$189.99" or "$20.00 to $35.00".
type:
- string
- 'null'
original_price:
description: The struck-through earlier price on discounted listings, in US dollars; null when the card doesn't show it.
type:
- number
- 'null'
format:
type: string
enum:
- auction
- fixed_price
description: '`auction` when the card shows bids, else `fixed_price`.'
bids:
description: Bids so far, on auctions; null otherwise.
type:
- number
- 'null'
time_left:
description: Time left on auctions as shown, e.g. "6d 23h" or "46m"; null otherwise.
type:
- string
- 'null'
best_offer:
type: boolean
description: The seller accepts offers.
shipping_cost:
description: 'Shipping to the US: 0 when free, in US dollars; null when the card doesn''t show it.'
type:
- number
- 'null'
shipping_text:
description: Shipping as shown, e.g. "Free delivery in 2-4 days" or "+$8.99 delivery".
type:
- string
- 'null'
location:
description: Where the item ships from, e.g. "United States" or "China".
type:
- string
- 'null'
free_returns:
type: boolean
description: The card says free returns.
sold:
description: How many the listing has sold, from "1,234 sold" (a lower bound for "99+ sold"); null when not shown.
type:
- number
- 'null'
watchers:
description: Watchers, from "16+ watchers" (a lower bound); null when not shown.
type:
- number
- 'null'
seller:
anyOf:
- type: object
properties:
username:
type: string
description: The seller's eBay username.
feedback_percent:
description: Positive feedback, percent, e.g. 99.8; null for a seller without ratings.
type:
- number
- 'null'
feedback_count:
description: Feedback score as the card shows it; eBay rounds large ones (42K → 42000).
type:
- number
- 'null'
required:
- username
- feedback_percent
- feedback_count
additionalProperties: false
- type: 'null'
description: The seller, when the card shows one (eBay leaves it off some layouts).
badges:
type: array
items:
type: string
description: Other labels on the card, e.g. "New Listing", "Last one", "eBay Refurbished", "Authenticity Guarantee", coupons.
required:
- id
- url
- title
- subtitle
- condition
- image
- price
- price_max
- price_text
- original_price
- format
- bids
- time_left
- best_offer
- shipping_cost
- shipping_text
- location
- free_returns
- sold
- watchers
- seller
- badges
additionalProperties: false
description: One page of listings, in `sort` order.
page:
type: number
description: This page's number.
next_page:
description: Pass as `page` for the next 60 listings; null on the last page.
type:
- number
- 'null'
required:
- success
- credits_remaining
- credits_charged
- total_results
- items
- page
- next_page
additionalProperties: false
default:
description: Error. Not charged, except the endpoint's own 4xx answers such as not_found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
servers:
- url: https://api.lurkapi.com
/v1/ebay/item:
get:
operationId: ebay_item
tags:
- eBay
summary: eBay listing details
description: 'One eBay listing by item id or URL: price, condition, quantity sold and available, seller and feedback, shipping, returns, photos and item specifics.
Use it to track one listing''s price and sales, or to enrich a search result. Pass the item id or any eBay listing URL (`/itm/…`, from any eBay site).
For listings with variations (sizes, colors, storage), price and quantity are the default variation''s, as on ebay.com. Ended listings still work. They come with `ended: true`, the last price and the notice eBay shows, e.g. "Bidding ended on Mon, Oct 19 at 4:02 PM."
Returns 404 `not_found` when eBay has no such listing, and 403 `not_public` for adult listings, which eBay shows only to signed-in accounts.
Cost: 2 credits.'
externalDocs:
url: https://lurkapi.com/docs/ebay/item
x-credits: 2
parameters:
- name: id
in: query
required: false
description: Item id, e.g. `285090601008`. Required unless you pass `url`.
schema:
description: Item id, e.g. `285090601008`. Required unless you pass `url`.
type: string
example: '285090601008'
- name: url
in: query
required: false
description: A listing URL, e.g. `https://www.ebay.com/itm/285090601008`.
schema:
description: A listing URL, e.g. `https://www.ebay.com/itm/285090601008`.
type: string
responses:
'200':
description: 'One eBay listing by item id or URL: price, condition, quantity sold and available, seller and feedback, shipping, returns, photos and item specifics.'
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
const: true
description: 'Always true here; errors have `success: false`.'
credits_remaining:
type: number
description: 'Your balance after this call. On anonymous playground calls: free tries left today.'
credits_charged:
type: number
description: 'Credits this call cost; 0 on free endpoints. On anonymous playground calls: tries used (1).'
id:
type: string
description: Item id.
url:
type: string
description: The listing on ebay.com.
title:
type: string
description: Listing title.
price:
description: Current price (the current bid on auctions), in `currency`.
type:
- number
- 'null'
currency:
description: The price's currency, e.g. USD; the seller's own currency on some international listings.
type:
- string
- 'null'
price_text:
description: The price as ebay.com shows it, e.g. "US $189.99".
type:
- string
- 'null'
original_price:
description: The struck-through list price on discounted listings, in `currency`; null otherwise.
type:
- number
- 'null'
format:
type: string
enum:
- auction
- fixed_price
description: '`auction` when the listing takes bids, else `fixed_price`.'
bids:
description: Bids so far, on auctions; null otherwise.
type:
- number
- 'null'
ends_at:
description: When an auction ends, ISO 8601; null for fixed-price listings.
type:
- string
- 'null'
best_offer:
type: boolean
description: The seller accepts offers.
condition:
description: Condition, e.g. "New", "Used", "Pre-owned - Good".
type:
- string
- 'null'
seller_notes:
description: The seller's note on the condition; null without one.
type:
- string
- 'null'
available:
description: 'Quantity available: "3 available" → 3, "Last one" → 1, "More than 10 available" → 10 (a lower bound); null when not shown.'
type:
- number
- 'null'
sold:
description: How many this listing has sold, from "10 sold"; null when not shown.
type:
- number
- 'null'
ended:
type: boolean
description: The listing has ended (sold, ended by the seller, or out of time).
status:
description: The notice eBay shows on ended listings, e.g. "Bidding ended on Mon, Oct 19 at 4:02 PM."; null on live ones.
type:
- string
- 'null'
has_variations:
type: boolean
description: The listing has variations (sizes, colors…); price and quantity are the default one's.
seller:
type: object
properties:
username:
description: eBay username. Search by seller on eBay with it.
type:
- string
- 'null'
name:
description: 'The name the listing shows: the store name for eBay Stores, else the username.'
type:
- string
- 'null'
url:
description: The seller's store or items page.
type:
- string
- 'null'
feedback_percent:
description: Positive feedback, percent, e.g. 99.8.
type:
- number
- 'null'
feedback_count:
description: Feedback score, e.g. 42027.
type:
- number
- 'null'
required:
- username
- name
- url
- feedback_percent
- feedback_count
additionalProperties: false
description: Who sells it.
shipping_cost:
description: Shipping to the US in `currency`, 0 when free; null when eBay doesn't say (e.g. local pickup only).
type:
- number
- 'null'
shipping_text:
description: Shipping as shown, e.g. "Free USPS Ground Advantage®."
type:
- string
- 'null'
location:
description: Where the item is, e.g. "Virginia Beach, Virginia, United States".
type:
- string
- 'null'
returns:
description: Return policy as shown, e.g. "30 days returns. Seller pays for return shipping."
type:
- string
- 'null'
images:
type: array
items:
type: string
description: Every listing photo, full size (up to 1600 px), in the seller's order.
item_specifics:
type: object
propertyNames:
type: string
additionalProperties:
type: string
description: 'Item specifics as the seller filled them in, e.g. {"Brand": "Apple", "Model": "iPhone 12 mini"}. Condition is in `condition`.'
category:
type: array
items:
type: string
description: Category path, broadest first, e.g. ["Electronics", "Cell Phones & Accessories", "Cell Phones & Smartphones"]; empty if eBay doesn't show it.
category_id:
description: The listing's category number; pass it as `category_id` to search eBay listings for similar ones.
type:
- string
- 'null'
listed_at:
description: When the listing started, ISO 8601.
type:
- string
- 'null'
description_url:
description: The seller's description as its own HTML page (eBay loads it in a frame).
type:
- string
- 'null'
required:
- success
- credits_remaining
- credits_charged
- id
- url
- title
- price
- currency
- price_text
- original_price
- format
- bids
- ends_at
- best_offer
- condition
- seller_notes
- available
- sold
- ended
- status
- has_variations
- seller
- shipping_cost
- shipping_text
- location
- returns
- images
- item_specifics
- category
- category_id
- listed_at
- description_url
additionalProperties: false
'403':
description: 'not_public: The platform shows this account or post only to people who are logged in. Try a public one. Charged, since the platform was checked.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
'404':
description: 'not_found: What you asked for (a post, an ad, a subreddit) doesn''t exist, or there''s no endpoint at that path. Charged if the platform was checked.'
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
default:
description: Error. Not charged, except the endpoint's own 4xx answers such as not_found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
servers:
- url: https://api.lurkapi.com
components:
schemas:
Error:
type: object
properties:
success:
type: boolean
const: false
error:
type: string
description: What went wrong, in plain words.
code:
type: string
enum:
- invalid_params
- missing_api_key
- invalid_api_key
- invalid_token
- insufficient_credits
- over_max_credits
- account_suspended
- not_public
- not_found
- transcript_unavailable
- method_not_allowed
- rate_limited
- signup_required
- upstream_error
- upstream_busy
- upstream_timeout
- internal_error
description: Stable machine-readable code.
docs:
type: string
description: Page that explains how to fix it.
issues:
description: One entry per invalid parameter (invalid_params only).
type: array
items:
type: object
properties:
path:
type: string
message:
type: string
required:
- path
- message
additionalProperties: false
required:
- success
- error
- code
- docs
additionalProperties: false
securitySchemes:
apiKey:
type: apiKey
in: header
name: x-api-key
x-refined-from:
- lurkapi-openapi-api.json
- lurkapi-openapi.json