eBay Sold Comps - Real Sold Prices Without Login avatar

eBay Sold Comps - Real Sold Prices Without Login

Pricing

from $25.00 / 1,000 results

Go to Apify Store
eBay Sold Comps - Real Sold Prices Without Login

eBay Sold Comps - Real Sold Prices Without Login

eBay sold listings are behind a login wall. This actor still gets real sold prices: it finds the sellers listing your item and reads their public feedback for what buyers actually paid. Sold comps, price range, recommended price, demand. No account, no cookies.

Pricing

from $25.00 / 1,000 results

Rating

4.1

(5)

Developer

Marielise

Marielise

Maintained by Community

Actor stats

3

Bookmarked

361

Total users

27

Monthly active users

8 days ago

Last modified

Share

eBay put sold listings behind a login wall in August 2026. The "Sold Items" filter now redirects every signed-out visitor, every scraper and every API-less integration to a sign-in page. Most eBay sold-price tools on the Store return nothing since then.

This actor still returns real sold prices, with no account, no cookies and nothing to set up. Type what you want to price, get sold comps, a price range, a recommended listing price and a demand read.

How it gets sold prices when the sold search is closed

  1. Live search. The actor searches eBay for your keywords and reads the listings that are for sale right now: price, condition, seller, watchers, and the "N sold" badge on multi-quantity listings.
  2. Seller feedback. Every eBay seller has a public feedback profile listing what they sold, what the buyer paid, and when (past month, past 6 months, past year). The actor reads the feedback of the sellers currently listing your item, ranked by how many listings they have for it and how big their store is, and keeps the sales whose title matches your query.
  3. Comps and analytics. Each matching sale becomes a sold comp. Multi-quantity listings with a sold badge add one comp each at their current price. Accessories and parts that share the keywords but not the price are dropped. The analytics run on the result: median, 10th to 90th percentile range, condition breakdown, demand.

Everything read is public. No eBay account is used or needed.

What you get

Sold comps, one dataset item each:

FieldDescription
titleListing title as sold
soldPriceWhat the buyer paid (cents, display, currency)
soldPeriodpast_month, past_6_months or past_year, as eBay shows it. Null for badge comps.
sourceseller_feedback (from a completed sale in the seller's feedback) or active_sold_badge (a live multi-quantity listing with an "N sold" badge)
unitsSoldUnits sold on the listing, badge comps only
condition.conditionnew, open_box, certified_refurbished, like_new, very_good, good, acceptable, for_parts, or null. Read from the title and the listing card.
seller.username, seller.feedbackScore, seller.feedbackPctWho sold it
buyerRating, buyerCommentThe feedback the buyer left
urlItem page, or the seller's feedback profile when eBay printed no item id

Summary, the last dataset item and the Overview tab:

  • recommendedPrice (median), priceRange (10th to 90th percentile)
  • demandLevel from recent comps, units on sold badges and watchers on live listings
  • quickTake, confidence, confidenceReason
  • analytics: price statistics, breakdown by condition, trend
  • activeListings: the live listings scanned, with price, condition, seller, sold count and watchers

Key-value store: sold_items.csv, REPORT.md (markdown pricing report), OUTPUT.json (everything), RUN_DIAGNOSTICS.json (pages read, bytes, sellers, matches).

Quick start

{
"query": "iPhone 13 Pro 128GB",
"soldWithinDays": 180,
"maxItems": 50
}

Typical run: 10 to 40 seconds.

Input

ParameterDefaultDescription
queryItem keywords. Be as specific as a buyer would be: model, capacity, edition.
ebayUrlAn eBay listing URL; the actor derives the query from its title when query is empty.
ebaySiteebay.comebay.com, ebay.co.uk, ebay.de, ebay.fr, ebay.it, ebay.es, ebay.ca, ebay.com.au. Comps are kept in the site's currency.
soldWithinDays18030 (past month), 180 (past 6 months) or 365 (past year). eBay shows sale timing in these three bands.
conditionallKeep only these conditions
priceMin, priceMaxKeep only comps in this price range
maxItems50Maximum comps to return, 10 to 200. Billed per comp actually returned.
maxSellers20How many sellers' feedback to read, 5 to 60. More sellers, more comps, slower run.
includeAnalyticstrueAdd the full analytics block and REPORT.md
outputFormatfullfull, summary_only or items_only for OUTPUT.json
proxyresidentialResidential proxies are required; eBay blocks datacenter IPs.

Pricing

Pay per event. Per-comp pricing takes effect on 29 September 2026; until then the per-result price on the Pricing tab applies.

EventPriceWhen
Search query$0.15Once per run, only when at least one comp is found. Covers the listings scan and the feedback reads.
Sold comp$0.005Per comp written to the dataset.
RunCost
20 comps$0.25
50 comps$0.40
200 comps$1.15

A run that finds no comps, or is blocked, costs nothing. Free-plan users get every feature; the only limit is the run's Max total charge, which the actor respects by reducing maxItems to what the budget covers.

What to expect from the data

Coverage follows the market. Common products (phones, consoles, sneakers, popular LEGO, tools) have many sellers with many recent sales and return dozens of comps in seconds. One-off collectibles return fewer, from specialist sellers. A query that finds fewer than 10 comps is reported with low confidence; widen soldWithinDays or shorten the query.

Sale timing is a band, not a date. eBay's feedback profile says "past month", "past 6 months" or "past year". There is no day-level sold date and no days-to-sell figure anywhere on the public site any more, so this actor does not invent one.

Condition is read from the title. "Pre-owned", "sealed", "for parts" and similar words in the sold title set it. Untagged titles leave it null.

Sold badges are current-price evidence. A live listing showing "47 sold" at $259 means 47 buyers paid about $259. It enters the comps once, not 47 times, so a single high-volume seller cannot dominate the median.

Matching is by title. A comp is kept when every significant word of your query appears in the sold title (queries of four or more words tolerate one miss). Prices far below what live listings ask (cases, batteries, boards) or far above (lots, bundles) are dropped.

Output example

{
"type": "item",
"itemId": "336680124696",
"title": "Nintendo Switch OLED Model HEG-001 Handheld Console w/ Accessories - Excellent",
"url": "https://www.ebay.com/itm/336680124696",
"soldPrice": { "cents": 25999, "display": "$259.99", "currency": "USD" },
"soldPeriod": "past_6_months",
"source": "seller_feedback",
"unitsSold": null,
"condition": { "condition": "good", "conditionDetail": null },
"seller": { "username": "cocosprinkles", "feedbackScore": 41000, "feedbackPct": 99.9, "topRated": null },
"buyerRating": "positive",
"buyerComment": "Arrived fast, exactly as described.",
"extractedAt": "2026-09-14T16:02:11.000Z"
}

Summary item:

{
"type": "summary",
"status": "ok",
"summary": {
"recommendedPrice": { "display": "$234.99" },
"priceRange": { "low": { "display": "$189.99" }, "high": { "display": "$350.99" } },
"demandLevel": "high",
"quickTake": "nintendo switch oled sold at $189.99-$350.99. High demand. List at $234.99 for optimal sale.",
"confidence": "medium",
"confidenceReason": "Based on 55 sales - consider broader search for more accuracy"
},
"meta": {
"dataFreshness": "12 sold in the past month, 31 in the past 6 months, 7 in the past year, 5 from live sold badges"
}
}

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), blocked with blockReason: antibot (eBay refused every request; retry in a few minutes) or parser_stale (eBay changed its page; the actor needs an update). Nothing is charged.

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
  • Arbitrage: compare buy price elsewhere against eBay's realised prices
  • AI agents and MCP: 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({
query: 'Nintendo Switch OLED',
soldWithinDays: 180,
maxItems: 50,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
const summary = items.find(i => i.type === 'summary');
console.log(summary.summary.recommendedPrice.display);
from apify_client import ApifyClient
client = ApifyClient('YOUR_TOKEN')
run = client.actor('marielise.dev/ebay-sold-listings-intelligence').call(run_input={
'query': 'Nintendo Switch OLED',
'soldWithinDays': 180,
})
items = client.dataset(run['defaultDatasetId']).list_items().items
summary = next(i for i in items if i['type'] == 'summary')
print(summary['summary']['recommendedPrice']['display'])

Limitations

  • Sale timing is a band (month, 6 months, year), not a date. No days-to-sell.
  • Shipping paid is not shown in feedback, so totalPrice equals soldPrice.
  • Auction versus fixed price is not distinguishable in feedback; feedback comps are labelled buy_it_now.
  • Coverage is thinner for rare items and for sellers who receive little feedback.
  • Residential proxies are required and are included in the price.

FAQ

Is this real sold data? Yes. Every seller_feedback comp is a completed transaction with the price the buyer paid, taken from the seller's public feedback profile. Every active_sold_badge comp is a live listing eBay itself marks as sold N times.

Why not just log in? Running other people's searches through eBay accounts breaks eBay's terms and gets accounts banned. This actor reads only public pages.

Will this break when eBay changes something? Any scraper can. The two pages it relies on, search and feedback profiles, are core eBay UI that has been public since eBay began. RUN_DIAGNOSTICS.json shows exactly what was read on every run.

How is the recommended price calculated? Median of the comps' sold prices. The range is the 10th to 90th percentile.


Built by Ekipnico.