eBay Sold Price Checker: Real Sold Listings & Comps
Pricing
from $5.00 / 1,000 sold comps
eBay Sold Price Checker: Real Sold Listings & Comps
What did it actually sell for on eBay? Verified mode runs eBay's own sold search on managed accounts: exact sale dates, final prices, shipping, auction or Buy It Now. Standard mode needs no account and reads sellers' public feedback. Recommended price, range, demand and a pricing report.
Pricing
from $5.00 / 1,000 sold comps
Rating
4.1
(5)
Developer
Marielise
Maintained by CommunityActor stats
3
Bookmarked
373
Total users
10
Monthly active users
4 days ago
Last modified
Categories
Share
What did it actually sell for? Type an item, get the eBay sold listings behind its price: final price, sale date, shipping, auction or Buy It Now, plus a recommended listing price, a price range and a demand read.
eBay put its Sold Items filter behind a login in August 2026. This actor gives you two ways around it, and you never need an eBay account of your own.
| Verified | Standard | |
|---|---|---|
| Source | eBay's own sold search, run on our managed eBay accounts | Public feedback of sellers listing your item |
| Sale date | Exact day | Band: past month, 6 months or year |
| Auction vs Buy It Now, bids | Yes | No |
| Shipping paid | Yes | No |
| Your eBay account | Not needed | Not needed |
| Price | $0.35 per search + $0.004 per comp | $0.15 per search + $0.005 per comp |
Pick with dataSource. If a Verified run cannot get a logged-in account (all busy, or eBay is challenging them), it falls back to Standard on its own and is charged the Standard price. meta.dataSource and meta.fallbackReason on the summary tell you which one ran.
Quick start
{"dataSource": "verified","query": "iPhone 13 Pro 128GB","soldWithinDays": 90,"maxItems": 100}
Typical run: 15 to 60 seconds.
How each source works
Verified. The actor sends your query to our sold-search service. The service runs eBay's real sold search (Sold Items + Completed Items, newest first) on one of a small pool of logged-in eBay accounts, each with its own fixed browser and its own residential IP, at a person's pace. Only the parsed results come back to your run; no account, cookie or password ever enters it. Comps whose title does not match your query, in another currency, or priced like an accessory or a bundle are dropped.
Standard. No account anywhere:
- The actor searches eBay's live listings for your keywords and reads price, condition, seller, watchers and the "N sold" badge on multi-quantity listings.
- It reads the public feedback profiles of the sellers listing your item, ranked by how many listings they have for it and how big their store is. Feedback shows what each buyer paid and roughly when.
- Matching sales become comps. Multi-quantity listings with a sold badge add one comp each at their current price.
What you get
Sold comps, one dataset item each:
| Field | Description |
|---|---|
title | Listing title as sold |
soldPrice | What the buyer paid (cents, display, currency) |
shippingPrice, totalPrice | Shipping paid and price plus shipping (Verified) |
soldDate | Exact sale day (Verified), null for Standard |
soldPeriod | past_month, past_6_months or past_year |
listingType, bidCount | auction, buy_it_now or best_offer, and bids (Verified) |
source | sold_search (Verified), seller_feedback or active_sold_badge (Standard) |
condition.condition | new, open_box, certified_refurbished, like_new, very_good, good, acceptable, for_parts, or null |
seller.username, seller.feedbackScore, seller.feedbackPct | Who sold it |
buyerRating, buyerComment | Feedback the buyer left (Standard) |
unitsSold | Units on a sold badge (Standard) |
url | Item page |
Summary, the last dataset item and the Overview tab:
recommendedPrice(median),priceRange(10th to 90th percentile)demandLevel,quickTake,confidence,confidenceReasonanalytics: price statistics, breakdown by condition and listing type, trendmeta.dataSource,meta.fallbackReason,meta.dataFreshness
Key-value store: sold_items.csv, REPORT.md (pricing report), OUTPUT.json (everything), RUN_DIAGNOSTICS.json.
Input
| Parameter | Default | Description |
|---|---|---|
dataSource | standard | verified or standard. The Console form starts on verified. |
query | Item keywords. Be as specific as a buyer would: model, capacity, edition. | |
ebayUrl | An eBay listing URL; the query is taken from its title when query is empty. | |
ebaySite | ebay.com | ebay.com, ebay.co.uk, ebay.de, ebay.fr, ebay.it, ebay.es, ebay.ca, ebay.com.au. Verified currently covers ebay.com; other sites fall back to Standard. |
soldWithinDays | 180 | How far back to look, 30 to 365. Verified uses exact dates; Standard rounds to 30, 180 or 365. |
condition | all | Keep only these conditions |
priceMin, priceMax | Keep only comps in this price range, in the site's currency | |
maxItems | 50 | Maximum comps to return, 10 to 200. Billed per comp actually returned. |
maxSellers | 20 | Standard only: sellers' feedback to read, 5 to 60 |
includeAnalytics | true | Add the analytics block and REPORT.md |
outputFormat | full | full, summary_only or items_only for OUTPUT.json |
proxy | residential | Standard only. Verified uses our own proxies. |
Pricing
Pay per event.
| Event | Price | When |
|---|---|---|
| Verified search | $0.35 | Once per Verified run, when the logged-in search completes, even if nothing matches |
| Verified sold comp | $0.004 | Per comp written to the dataset |
| Standard search | $0.15 | Once per Standard run, only when at least one comp is found |
| Standard sold comp | $0.005 | Per comp written to the dataset |
| Run | Verified | Standard |
|---|---|---|
| 20 comps | $0.43 | $0.25 |
| 50 comps | $0.55 | $0.40 |
| 200 comps | $1.15 | $1.15 |
A Verified run that falls back is charged as Standard. A Standard run that finds nothing, or is blocked, costs nothing. The actor respects the run's Max total charge by lowering maxItems to what the budget covers.
What to expect from the data
Verified is eBay's own record. Each comp is one ended listing that eBay marks as sold, with the price shown on eBay's sold results. When a seller accepted a Best Offer, eBay shows the original price struck through and listingType is best_offer; the accepted amount is not published.
Standard follows the market. Common products (phones, consoles, sneakers, popular LEGO, tools) return dozens of comps. One-off collectibles return fewer. Sale timing is a band, condition is read from the title, and auction vs fixed price is not visible in feedback.
Matching is by title. A comp is kept when every significant word of your query appears in its title (four or more words tolerate one miss). Prices far below or far above the typical sale are dropped as accessories or bundles.
Output example
{"type": "item","itemId": "336680124696","title": "Nintendo Switch OLED Model HEG-001 Handheld Console w/ Accessories","url": "https://www.ebay.com/itm/336680124696","soldPrice": { "cents": 25999, "display": "$259.99", "currency": "USD" },"shippingPrice": { "cents": 899, "display": "$8.99", "currency": "USD" },"totalPrice": { "cents": 26898, "display": "$268.98", "currency": "USD" },"soldDate": "2026-10-14T00:00:00.000Z","soldPeriod": "past_month","listingType": "auction","bidCount": 11,"source": "sold_search","condition": { "condition": "good", "conditionDetail": "Pre-Owned" },"seller": { "username": "cocosprinkles", "feedbackScore": 41000, "feedbackPct": 99.9, "topRated": null }}
When there are no comps
The run still succeeds and writes OUTPUT.json to the key-value store with a status: no_results (nothing matched; try broader keywords), or blocked with blockReason antibot (retry in a few minutes), login_wall (eBay now asks for a login on the pages Standard reads; use Verified) or parser_stale (eBay changed its page; the actor needs an update).
Use cases
- Resellers and flippers: what is this actually selling for, before you buy it
- Estate sales, consignment, pawn: fair prices from real transactions, not asking prices
- Collectors: verify a price before you pay it
- Pricing tools and AI agents: call it with a query, read
summary.recommendedPrice
API
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: 'YOUR_TOKEN' });const run = await client.actor('marielise.dev/ebay-sold-listings-intelligence').call({dataSource: 'verified',query: 'Nintendo Switch OLED',soldWithinDays: 90,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const summary = items.find(i => i.type === 'summary');console.log(summary.summary.recommendedPrice.display, summary.meta.dataSource);
from apify_client import ApifyClientclient = ApifyClient('YOUR_TOKEN')run = client.actor('marielise.dev/ebay-sold-listings-intelligence').call(run_input={'dataSource': 'verified','query': 'Nintendo Switch OLED','soldWithinDays': 90,})items = client.dataset(run['defaultDatasetId']).list_items().itemssummary = next(i for i in items if i['type'] == 'summary')print(summary['summary']['recommendedPrice']['display'], summary['meta']['dataSource'])
Limitations
- Verified covers
ebay.comfor now. - Verified runs share a small pool of accounts, so at busy moments a run may wait up to 45 seconds, or fall back to Standard.
- Best Offer prices are the listed price, not the accepted offer, on both sources.
- Standard coverage is thinner for rare items and for sellers who receive little feedback.
FAQ
Do I need an eBay account? No. Verified uses our accounts and Standard uses none.
Is this real sold data? Yes. Verified comps are eBay's own sold listings. Standard comps are completed transactions from sellers' public feedback, or live listings eBay marks as sold N times.
What if eBay changes something? Any scraper can break. Both sources detect a changed page, a login wall or a challenge, say so in OUTPUT.json, and charge nothing for a broken run.
How is the recommended price calculated? Median of the comps' sold prices. The range is the 10th to 90th percentile.
Built by Ekipnico.