🛒 eBay Sold Comps Scraper avatar

🛒 eBay Sold Comps Scraper

Pricing

from $3.50 / 1,000 sold listing or comps summary records

Go to Apify Store
🛒 eBay Sold Comps Scraper

🛒 eBay Sold Comps Scraper

Scrape eBay sold listings (90-day window) for any query. Sold price, condition, shipping, sold date, seller info. Plus computed comps: median, P10/P90, byVariant grouped by storage/color/condition, sell-through rate, velocity. Export, run via API, schedule, or integrate with other tools.

Pricing

from $3.50 / 1,000 sold listing or comps summary records

Rating

0.0

(0)

Developer

Skootle

Skootle

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

3 hours ago

Last modified

Share

eBay Sold Comps hero

TL;DR

Scrape eBay's last 90 days of sold listings for any search query. Returns clean rows with sold price (numeric USD + raw), condition enum, shipping cost, sold date in ISO 8601, seller info, and computed comps: median, P10, P90, sample-size confidence, broken down by condition tier and by variant tuple (storage, color, model). Includes sell-through rate and velocity (sold/day). For resellers, collectibles valuation, AI shopping agents, insurance appraisers.


Try it on a small dataset, then let us know what you think in a review.


What does eBay Sold Comps Scraper do?

eBay Sold Comps Scraper extracts every sold listing from eBay's last-90-days window for any search query. You give it queries (e.g., ["iphone 15 pro 256gb", "vintage rolex submariner"]); it returns two record types:

  1. sold_listing — one record per individual sold item with sold price, condition enum (NEW | LIKE_NEW | PRE_OWNED | GOOD | FOR_PARTS | UNKNOWN), shipping cost, sold date, seller name + feedback %, photos, and item specifics tuple (brand, model, storage, color).

  2. comps_summary — one record per query with medianUsd, p10Usd, p90Usd, sampleSize, confidence enum (high / medium / low), byCondition[] block, byVariant[] block, sellThroughRate, and velocityScorePerDay.

So a "256GB Natural Titanium Pre-Owned" gets its own price band separate from "128GB Black For Parts". Every record carries agentMarkdown for direct LLM consumption.

Why scrape eBay sold comps?

eBay sold listings are the deepest comp source for almost any product on Earth — collectibles, used electronics, vintage tools, watches, sneakers, retro tech, anything that resells. eBay only keeps sold listings for 90 days, but in that window the data is gold-standard for:

  • Reseller pricing decisions before buying or listing
  • Insurance and estate appraisals with defensible "fair market value" backed by recent comps
  • Collectibles valuation for cards, vintage, watches, art, sneakers
  • Inventory buy-vs-pass decisions using sellThroughRate and velocityScore
  • Repricing engines that adjust active listings against the latest sold-comp band

eBay doesn't expose a public sold-listings API for non-commercial users. This actor handles the search + variant-grouping + condition normalization + comps math.

Who needs this?

  • Resellers pricing buys and listings (clothing, electronics, collectibles, watches, sneakers)
  • Pawnshop and consignment operators appraising buy-side offers
  • Insurance adjusters building defensible "fair market value" claims with sold-comp evidence
  • Estate appraisers valuing inherited collections
  • Inventory acquisition teams using sellThroughRate to filter slow-moving SKUs
  • Repricing tool builders integrating eBay sold-comp data into Vendoo / List Perfectly / Crosslist
  • AI shopping / arbitrage agents comparing sold-comp median against local goodwill / estate / Marketplace finds
  • Trend researchers tracking velocity changes by category over time

How to use eBay Sold Comps Scraper

  1. Open the Input tab on the actor page
  2. Add search queries to searchQueries (one per line)
  3. Optionally filter conditions or set lookbackDays (default 30, max 90)
  4. Set maxItemsPerQuery (default 50)
  5. Optionally enable emitCompsSummary (default true)
  6. Click Start

How much will scraping eBay sold comps cost?

This actor is priced per event:

  • Actor Start: $0.01 once per run
  • eBay record (sold_listing or comps_summary): tiered, charged per record written
Apify plan$/1000 records
FREE$30.00
BRONZE$25.50
SILVER$21.00
GOLD$18.00
PLATINUM$18.00
DIAMOND$16.20

A daily reseller workflow on 10 SKUs returns ~510 records. Roughly $9 per run on GOLD — sub-$0.02 per SKU comp lookup.

Yes, eBay sold listings are publicly accessible to anyone in a browser without logging in. This actor reads the same public sold-search results with proper rate-limiting. It does not log into seller accounts, does not access buyer-side data, and does not bypass any technical access control.

For commercial redistribution of raw datasets, consult eBay's terms and your legal counsel. For internal pricing tools, repricing engines, AI training, and comparison-shopping research, the scraped data is treated like any other public web content.

Examples

Example 1: iPhone 15 Pro 256GB comps

{
"searchQueries": ["iphone 15 pro 256gb"],
"lookbackDays": 30,
"maxItemsPerQuery": 50
}

Example 2: Reseller bulk-SKU repricing feed

{
"searchQueries": [
"rolex submariner 116610",
"omega speedmaster 311",
"iphone 15 pro 256gb",
"macbook pro m3 14"
],
"lookbackDays": 60,
"maxItemsPerQuery": 50
}

Example 3: Pre-owned only (no parts/broken)

{
"searchQueries": ["airpods pro 2"],
"conditions": ["PRE_OWNED", "LIKE_NEW", "NEW"],
"lookbackDays": 30,
"maxItemsPerQuery": 100
}

Example 4: Insurance/appraisal claim

{
"searchQueries": ["lego star wars 75313 imperial star destroyer"],
"lookbackDays": 90,
"maxItemsPerQuery": 50
}

The comps_summary gives you medianUsd ± p10Usd/p90Usd ready for an insurance or estate claim.

Example 5: Velocity-based inventory buy filter

{
"searchQueries": ["pokemon charizard 4/102"],
"lookbackDays": 90,
"maxItemsPerQuery": 100
}

Filter velocityScorePerDay > 1 (sells more than once per day) before buying.

Example 6: Variant pricing for a multi-SKU product

{
"searchQueries": ["nintendo switch oled"],
"lookbackDays": 30,
"maxItemsPerQuery": 200
}

byVariant[] breaks comps by (color, condition) tuple so White-LIKE_NEW vs Neon-PRE_OWNED gets its own price band.

Example 7: Trend research over weeks

{
"searchQueries": ["air jordan 1 chicago"],
"lookbackDays": 90,
"maxItemsPerQuery": 200
}

Run weekly; chart medianUsd and velocityScorePerDay over time.

Example 8: AI arbitrage agent feed

{
"searchQueries": ["sony wh-1000xm5", "dyson v15 detect"],
"lookbackDays": 30,
"maxItemsPerQuery": 50,
"emitCompsSummary": true
}

The agent reads medianUsd - shippingCost - eBayFees and compares against local find prices.

Input parameters

FieldTypeDefaultDescription
searchQueriesstring[]requiredSearch terms
conditionsenum[][]NEW, LIKE_NEW, PRE_OWNED, GOOD, FOR_PARTS
lookbackDaysint30Sold-listing window (max 90)
maxItemsPerQueryint50Per-query cap
emitCompsSummarybooltrueAlso emit one comps_summary per query
useApifyProxybooltrueApify residential proxy. Recommended.

eBay Sold Comps output format

The dataset has two record types. Filter by recordType.

sold_listing

FieldTypeDescription
outputSchemaVersion, recordType, recordIdstringDiscriminated identity
itemId, urlstringeBay item ID + URL
titlestringListing title
soldPriceUsd, soldPriceRawfloat / stringNumeric mirror + raw
shippingCostUsdfloatShipping cost (0 if free)
totalPriceUsdfloatsoldPriceUsd + shippingCostUsd
currencystringCurrency code
conditionenumNEW, LIKE_NEW, PRE_OWNED, GOOD, FOR_PARTS, UNKNOWN
conditionRawstringOriginal eBay condition string
soldDateISO 8601When it sold
sellerName, sellerFeedbackPercent, sellerFeedbackCountstring / float / intSeller info
imageUrlsstring[]Listing photos
itemSpecificsobjectBrand, model, storage, color, etc.
searchQuerystringThe query that found this listing
fieldCompletenessScore, agentMarkdownint / stringQuality + LLM-ready summary

comps_summary

FieldTypeDescription
outputSchemaVersion, recordType, recordIdstringDiscriminated identity (ebay:comps:<query-slug>)
searchQuery, lookbackDaysstring / intQuery context
sampleSizeintNumber of sold listings used
confidenceenumhigh (≥30), medium (10-29), low (<10)
medianUsd, p10Usd, p90Usd, meanUsd, stdDevUsdfloatComps math
byConditionarray[{ condition, count, medianUsd, p10Usd, p90Usd }]
byVariantarray[{ variant: { brand, model, storage, color }, count, medianUsd, p10Usd, p90Usd }]
sellThroughRatefloatActive-listings-that-actually-sold proxy
velocityScorePerDayfloatSold per day in the lookback window
daysToSellMedianfloatMedian days from list to sold
agentMarkdownstringLLM-ready summary

eBay Sold Comps scraper output example (sold_listing)

{
"outputSchemaVersion": "2026-05-08",
"recordType": "sold_listing",
"recordId": "ebay:listing:325918765432",
"itemId": "325918765432",
"url": "https://www.ebay.com/itm/325918765432",
"title": "Apple iPhone 15 Pro 256GB Natural Titanium Unlocked",
"soldPriceUsd": 749,
"shippingCostUsd": 11.35,
"totalPriceUsd": 760.35,
"condition": "PRE_OWNED",
"soldDate": "2026-05-08T19:42:53.000Z",
"sellerName": "techreseller_88",
"sellerFeedbackPercent": 99.4,
"sellerFeedbackCount": 4123,
"itemSpecifics": {
"brand": "Apple",
"model": "iPhone 15 Pro",
"storage": "256 GB",
"color": "Natural Titanium"
},
"fieldCompletenessScore": 100,
"agentMarkdown": "**📦 Apple iPhone 15 Pro 256GB Natural Titanium Unlocked**\n- 💰 $749 + $11.35 ship = $760.35\n- 🏷 PRE_OWNED · sold 2026-05-08\n- 👤 techreseller_88 (99.4% / 4123 reviews)\n- 🔗 https://www.ebay.com/itm/325918765432"
}

eBay Sold Comps scraper output example (comps_summary)

{
"outputSchemaVersion": "2026-05-08",
"recordType": "comps_summary",
"recordId": "ebay:comps:iphone-15-pro-256gb",
"searchQuery": "iphone 15 pro 256gb",
"lookbackDays": 30,
"sampleSize": 47,
"confidence": "high",
"medianUsd": 749,
"p10Usd": 619,
"p90Usd": 879,
"meanUsd": 752.41,
"byCondition": [
{ "condition": "PRE_OWNED", "count": 31, "medianUsd": 729, "p10Usd": 619, "p90Usd": 849 },
{ "condition": "LIKE_NEW", "count": 12, "medianUsd": 829, "p10Usd": 779, "p90Usd": 879 }
],
"byVariant": [
{ "variant": { "storage": "256 GB", "color": "Natural Titanium" }, "count": 18, "medianUsd": 779 }
],
"sellThroughRate": 0.83,
"velocityScorePerDay": 1.6,
"daysToSellMedian": 4.2,
"agentMarkdown": "**🛒 iphone 15 pro 256gb · 30d comps**\n- 📊 n=47 (high confidence)\n- 💰 median $749 · P10 $619 · P90 $879\n- ⚡ 1.6 sold/day · 83% sell-through · median 4.2 days to sell"
}

During the Actor run

The actor uses Playwright with the Apify residential proxy to fetch each query's sold-results page (eBay's sold-listings filter requires a Playwright-style request). Each listing card is parsed for sold price, shipping, condition, sold date, seller info, and item specifics. After fetching all listings for a query, the actor computes the comps_summary record.

The actor writes:

  1. OUTPUT — run summary
  2. AGENT_BRIEFING — top queries by sample size + median price
  3. WATCHLIST_STATE — (when watchlistMode: true) seen item IDs

FAQ

How does eBay Sold Comps Scraper work?

The actor uses Playwright + Apify residential proxy + stealth fingerprinting to fetch eBay's sold-listings results pages. Each card is parsed for sold price, condition, shipping, sold date, seller info, and item specifics. The comps math runs after all listings for a query are fetched.

How fresh is the data?

eBay updates sold-listings within minutes. This actor reads the live sold-search, so data is at most 1-2 minutes stale.

Can I get older sold listings beyond 90 days?

No — eBay only retains sold-listings data in their public search for 90 days. Platform limit, not an actor gap.

Can I filter by condition?

Yes. conditions: ["PRE_OWNED", "LIKE_NEW"] to skip parts/broken units and brand-new units.

Can I get the byVariant breakdown?

Yes. Set emitCompsSummary: true (default). Each comps_summary record includes a byVariant array grouped by itemSpecifics tuple.

Can I use this with the Apify API?

Yes. POST to https://api.apify.com/v2/acts/skootle~ebay-sold-comps/runs.

Can I integrate with Make / Zapier / n8n / Slack?

Yes. Click Integrations on the actor page.

Why does this actor cost more than free eBay scrapers?

This actor ships normalized condition + variant tuples, computed medianUsd/p10Usd/p90Usd per query, sellThroughRate, velocityScorePerDay, byCondition+byVariant breakdowns, agent-ready markdown summaries. Free scrapers return only raw HTML — you'd write all the comps math yourself.

Your feedback

Hit a bug or want a feature? Open an issue on the Issues tab rather than the reviews page, and we'll fix it fast (typically within 48 hours).

Why choose eBay Sold Comps Scraper

  • Comps math built-inmedianUsd, p10Usd, p90Usd, meanUsd, stdDevUsd per query
  • byVariant block — comps grouped by itemSpecifics tuple (storage, color, condition)
  • byCondition block — separate price bands per condition tier
  • sellThroughRate + velocityScorePerDay — buy-vs-pass signals built in
  • Condition enumNEW, LIKE_NEW, PRE_OWNED, GOOD, FOR_PARTS, UNKNOWN
  • Numeric mirrorssoldPriceUsd, shippingCostUsd, totalPriceUsd ready for analytics
  • Discriminated unionsold_listing + comps_summary in one dataset
  • Versioned schemaoutputSchemaVersion: '2026-05-08'
  • Idempotent record IDsebay:listing:<id>, ebay:comps:<query-slug> stable across runs
  • Agent-grade outputagentMarkdown ready to paste into an LLM context

Other Skootle actors you might want to check

Support and contact

File issues on this actor's page — replies within 48 hours.