To get eBay price data programmatically, use Scavio's eBay API. POST /api/v1/ebay/search returns up to 240 live listings in one call (242 for "iphone 14 pro 128gb unlocked"), each with price, original price, condition, shipping, buying format, auction bids, time left, units sold, watchers and the seller's feedback. /product returns one listing in full with item specifics and returns policy, and /seller returns a seller's profile. Every call costs 1 credit, about $0.002 on the Growth plan billed yearly.
eBay's own Browse API returns active listings after you register an application and request OAuth tokens. Sold and completed results are a different matter: since late August 2026 eBay shows them only to signed-in users, which we documented here. This guide covers what you can pull without that view and how to turn it into a price.
Step 1: Search live listings
curl -s https://api.scavio.dev/api/v1/ebay/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "iphone 14 pro 128gb unlocked", "per_page": 240}'On October 27, 2026 this returned 242 listings in one call. One row, as captured (image URL and subtitle trimmed):
{
"pos": 48,
"item_id": "375758080538",
"condition": "Good - Refurbished",
"title": "Apple iPhone 14 Pro 128GB Unlocked 6.1\" - (Black) A2650 w/1 Year Warranty",
"url": "https://www.ebay.com/itm/375758080538",
"price": 396.03,
"price_max": null,
"original_price": 999,
"currency": "USD",
"buy_it_now": true,
"best_offer": false,
"bids": null,
"time_left": null,
"shipping_cost": 0,
"free_shipping": true,
"shipping_text": "Free delivery in 2-3 days",
"location": "United States",
"sold_count": 428,
"watchers": null,
"free_returns": true,
"seller_name": "tekdeals",
"seller_feedback_percent": 99.9,
"seller_feedback_count": 90200,
"top_rated_seller": true,
"programs": ["certifiedRefurbished"],
"sponsored": false
}sold_count is eBay's own units-sold figure on a multi-quantity listing; eBay caps the figure it displays above a threshold, so read a large count as "at least". watchers appears when eBay shows a watcher count; on this page 70 of 242 rows had a units-sold count and 44 had watchers. page pages through the rest, and per_page takes 60, 120 or 240 only.
Step 2: Narrow by condition, format and price
The same endpoint takes eBay's filters, so you do not have to download everything and filter locally:
curl -s https://api.scavio.dev/api/v1/ebay/search \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "iphone 14 pro 128gb unlocked", "buying_format": "auction", "sort_by": "ending_soonest", "per_page": 240}'Auction rows carry the current bid as price, plus bids and time_left:
{
"item_id": "307243124907",
"condition": "Pre-Owned",
"title": "Apple iPhone 14 Pro Deep Purple 128GB Unlocked",
"price": 215.5,
"buy_it_now": false,
"bids": 41,
"time_left": "1d 16h left",
"shipping_text": "Shipping not specified",
"seller_name": "joby_36",
"seller_feedback_percent": 100,
"seller_feedback_count": 451
}Other filters are condition (new, open_box, refurbished, used, for_parts), min_price, max_price, free_shipping, a numeric category_id and sort_by (best_match, ending_soonest, newly_listed, price_low, price_high). One caution: eBay pads a thin result set with looser matches. This auction search returned 266 rows while eBay counted 40 matching listings, and the extra rows included the iPhone 14 Pro Max, iPhone 13 and a Pixel. Check titles before you average.
Step 3: Turn listings into a price
A median of every ask overstates the market, because overpriced listings sit unsold. Group by the signal each listing carries instead. Across three searches (3 credits), 177 live iPhone 14 Pro 128GB listings broke down like this:
| Group | Listings | Price range | Median |
|---|---|---|---|
| Fixed price, shows units sold (1,781 units in total) | 18 | $351.99 to $549.95 | $403.51 |
| Fixed price, shows watchers but no sales | 24 | $299.99 to $529.00 | $390.00 |
| Fixed price, no sales or watchers shown | 112 | $270.00 to $890.70 | $420.00 |
| Auctions with bids (current bid, still running) | 13 | $96.00 to $325.00 | $207.50 |
The listings that sell cluster around $400; 29 of the listings with no signal ask more than $600. A daily run of the same searches, stored, gives you a price history with demand attached. The chart and the vendor comparison are in the best eBay price data APIs.
Step 4: Get the full listing
curl -s https://api.scavio.dev/api/v1/ebay/product \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"item_id": "375758080538"}'item_id also accepts a full ebay.com/itm/ URL. The captured response, trimmed:
{
"item_id": "375758080538",
"condition": "Good - Refurbished",
"price": 396.03,
"original_price": 999,
"availability": "InStock",
"brand": "Apple",
"mpn": "A2650",
"model": "Apple iPhone 14 Pro",
"color": "Black",
"seller_name": "tekdeals",
"seller_feedback_percent": 99.9,
"seller_feedback_count": 90210,
"shipping_cost": 0,
"item_location": "San Marcos, California, United States",
"returns_accepted": true,
"quantity_sold": 428
}The full response adds every image at full size (five here), payment_methods, the returns text and item_specifics, which for this listing held 16 key-value pairs including lock status, storage capacity, RAM and screen size. Search rows do not carry item specifics, so this is the call that confirms the exact variant.
Step 5: Check the seller
curl -s https://api.scavio.dev/api/v1/ebay/seller \
-H "Authorization: Bearer $SCAVIO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"seller": "tekdeals"}'{
"seller": "tekdeals",
"name": "Tek Deals Store",
"is_store": true,
"store_slug": "tekdealsstore",
"feedback_percent": 99.9,
"items_sold": 278000,
"items_sold_text": "278K",
"followers": 25000,
"categories": ["iPhones & Watches", "Apple iPads", "MacBooks, iMacs, Mac Minis", "eBay Daily Deals", "Previous Deals", "Chromebook & Window Laptops", "Other"]
}The profile is a card, not an inventory. To list what a seller has for sale, call search with seller set: {"seller": "tekdeals", "query": "iphone 14 pro"} returned 60 of the seller's 63 matching listings on the first page, every one from tekdeals, and 23 of them showed a units-sold count.
All three endpoints
| Endpoint | What it returns | Credits |
|---|---|---|
/api/v1/ebay/search | Up to 240 live listings with price, condition, shipping, bids, time left, units sold, watchers and seller feedback; filter by seller, condition, format, price and category | 1 |
/api/v1/ebay/product | One listing in full: images, brand, MPN, item specifics, returns, payment methods, units sold | 1 |
/api/v1/ebay/seller | A seller's profile: store name, feedback percentage, items sold, followers, categories | 1 |
Passing "sold": true to search returns an HTTP 400 explaining that eBay now requires sign-in for sold and completed listings; it is not billed. If eBay reopens that view, the flag works again with no change on your side.
Getting started
- Sign up at dashboard.scavio.dev/sign-up: 50 free credits, no card required.
- Copy your API key from the dashboard.
- Send a POST to
/api/v1/ebay/searchwith your key in theAuthorizationheader.
Try the eBay API free in the playground first, or call it from Claude and other agents through the MCP server.
Reference: eBay API overview · search · listing detail · seller · best eBay price data APIs
Frequently asked questions
How do I get eBay prices through an API?
Send a POST to Scavio's /api/v1/ebay/search with a keyword and your API key. Each listing comes back with price, original price, condition, shipping, buying format, bids, time left, units sold, watchers and seller feedback. Add per_page 240 to get up to 240 listings in one 1-credit call.
Can I get sold prices from eBay through an API?
Not from eBay's public pages without signing in: since late August 2026 eBay redirects logged-out sold and completed searches to its sign-in page, and its Marketplace Insights API is a limited release. Scavio's sold flag returns an explicit HTTP 400 saying so. Live listings still carry units sold on multi-quantity listings and bids on auctions.
How do I filter eBay listings by condition or auction?
Pass condition (new, open_box, refurbished, used or for_parts), buying_format (auction, buy_it_now or best_offer), min_price, max_price, free_shipping and sort_by to /api/v1/ebay/search. sort_by ending_soonest puts the auctions closest to their end first.
How do I see every listing from one eBay seller?
Call /api/v1/ebay/search with seller set to the username, with or without a query, and page through the results. /api/v1/ebay/seller returns the seller's profile: store name, feedback percentage, items sold, followers and store categories.
How much does eBay data cost with Scavio?
Every eBay call costs 1 credit: about $0.002 on the Growth plan billed yearly and $0.0043 on the $30 monthly Project plan. A 240-listing search is one call. New accounts get 50 free credits with no card.