🛒 eBay Sold Comps Scraper
Pricing
from $3.50 / 1,000 sold listing or comps summary records
🛒 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
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 hours ago
Last modified
Categories
Share

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:
-
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). -
comps_summary— one record per query withmedianUsd,p10Usd,p90Usd,sampleSize,confidenceenum (high/medium/low),byCondition[]block,byVariant[]block,sellThroughRate, andvelocityScorePerDay.
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
sellThroughRateandvelocityScore - 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
sellThroughRateto 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
- Open the Input tab on the actor page
- Add search queries to
searchQueries(one per line) - Optionally filter
conditionsor setlookbackDays(default 30, max 90) - Set
maxItemsPerQuery(default 50) - Optionally enable
emitCompsSummary(defaulttrue) - 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.
Is it legal to scrape eBay sold listings?
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
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | required | Search terms |
conditions | enum[] | [] | NEW, LIKE_NEW, PRE_OWNED, GOOD, FOR_PARTS |
lookbackDays | int | 30 | Sold-listing window (max 90) |
maxItemsPerQuery | int | 50 | Per-query cap |
emitCompsSummary | bool | true | Also emit one comps_summary per query |
useApifyProxy | bool | true | Apify residential proxy. Recommended. |
eBay Sold Comps output format
The dataset has two record types. Filter by recordType.
sold_listing
| Field | Type | Description |
|---|---|---|
outputSchemaVersion, recordType, recordId | string | Discriminated identity |
itemId, url | string | eBay item ID + URL |
title | string | Listing title |
soldPriceUsd, soldPriceRaw | float / string | Numeric mirror + raw |
shippingCostUsd | float | Shipping cost (0 if free) |
totalPriceUsd | float | soldPriceUsd + shippingCostUsd |
currency | string | Currency code |
condition | enum | NEW, LIKE_NEW, PRE_OWNED, GOOD, FOR_PARTS, UNKNOWN |
conditionRaw | string | Original eBay condition string |
soldDate | ISO 8601 | When it sold |
sellerName, sellerFeedbackPercent, sellerFeedbackCount | string / float / int | Seller info |
imageUrls | string[] | Listing photos |
itemSpecifics | object | Brand, model, storage, color, etc. |
searchQuery | string | The query that found this listing |
fieldCompletenessScore, agentMarkdown | int / string | Quality + LLM-ready summary |
comps_summary
| Field | Type | Description |
|---|---|---|
outputSchemaVersion, recordType, recordId | string | Discriminated identity (ebay:comps:<query-slug>) |
searchQuery, lookbackDays | string / int | Query context |
sampleSize | int | Number of sold listings used |
confidence | enum | high (≥30), medium (10-29), low (<10) |
medianUsd, p10Usd, p90Usd, meanUsd, stdDevUsd | float | Comps math |
byCondition | array | [{ condition, count, medianUsd, p10Usd, p90Usd }] |
byVariant | array | [{ variant: { brand, model, storage, color }, count, medianUsd, p10Usd, p90Usd }] |
sellThroughRate | float | Active-listings-that-actually-sold proxy |
velocityScorePerDay | float | Sold per day in the lookback window |
daysToSellMedian | float | Median days from list to sold |
agentMarkdown | string | LLM-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:
OUTPUT— run summaryAGENT_BRIEFING— top queries by sample size + median priceWATCHLIST_STATE— (whenwatchlistMode: 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-in —
medianUsd,p10Usd,p90Usd,meanUsd,stdDevUsdper query byVariantblock — comps grouped byitemSpecificstuple (storage, color, condition)byConditionblock — separate price bands per condition tiersellThroughRate+velocityScorePerDay— buy-vs-pass signals built in- Condition enum —
NEW,LIKE_NEW,PRE_OWNED,GOOD,FOR_PARTS,UNKNOWN - Numeric mirrors —
soldPriceUsd,shippingCostUsd,totalPriceUsdready for analytics - Discriminated union —
sold_listing+comps_summaryin one dataset - Versioned schema —
outputSchemaVersion: '2026-05-08' - Idempotent record IDs —
ebay:listing:<id>,ebay:comps:<query-slug>stable across runs - Agent-grade output —
agentMarkdownready to paste into an LLM context
Other Skootle actors you might want to check
- Vinted Comps · Variant Pricing — same comps pattern for fashion resale
- Reddit Subreddit Scraper — sentiment + trend signals on r/Flipping, r/PowerSellersUnite
- Shopify App Store Scraper — Shopify app intelligence
- Apple App Store Reviews Monitor — App Store reviews + metadata
- Hacker News Watchlist — tech discourse stream
Support and contact
File issues on this actor's page — replies within 48 hours.