🛒 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
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
6
Monthly active users
22 days 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 pulls every sold listing from eBay's last-90-days window for any search query and computes ready-to-use price comps. The dataset has 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's 90-day sold-listings view is the closest thing to a real comp engine for resellers, collectibles, used electronics, vintage tools, watches, sneakers, anything that resells. The problem: the eBay UI caps you at 50 results per page, the export-to-CSV flow is broken, and there is no public sold-listings API for non-commercial users. Pricing engines and repricing tools run 200+ comp queries a day. Doing that by hand is a non-starter.
This actor kills the manual workflow: opening eBay, filtering to "sold", flipping through pages, copying prices into a sheet, and eyeballing a median. You get a clean median, P10, P90, sell-through rate, and velocity per query, plus a per-variant breakdown so a 256GB Natural Titanium does not get averaged with a 128GB For-Parts unit.
- 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
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
Each query pulls eBay's sold-listings results, parses every card for sold price/shipping/condition/sold-date/seller/item-specifics, then computes the per-query comps_summary (median, P10/P90, byCondition, byVariant, sell-through, velocity). One pass, ready-to-use comps.
Three artifacts land in the run's key-value store: OUTPUT (run summary), AGENT_BRIEFING (top queries by sample size + median price), and WATCHLIST_STATE (when watchlistMode: true, the seen item IDs for diff-only runs).
FAQ
How reliable is this for daily production use?
Built for it. Monitored daily, maintenance updates ship within 24-48 hours when eBay changes anything that matters, and the comps math is computed in-actor so your downstream pipeline gets a clean record per query.
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
- Variant-aware comps grouped by
itemSpecificstuple, 256GB Natural Titanium gets its own band, separate from 128GB Black For Parts. This is the killer wedge - Buy-vs-pass signal for inventory acquisition,
sellThroughRate+velocityScorePerDayper query - Comps math built-in,
medianUsd,p10Usd,p90Usd,meanUsd,stdDevUsdper query, computed in-actor so you don't have to write it - Cross-condition normalization, separate price band per tier so PRE_OWNED comps don't get diluted by NEW
- Hand-tuned for eBay. Fixes ship within 24-48 hours when eBay changes anything that matters, your daily pipeline stays green
- Sort and filter without parsing,
soldPriceUsd,shippingCostUsd,totalPriceUsdas numbers on every row - Condition enum typed for downstream filtering,
NEW,LIKE_NEW,PRE_OWNED,GOOD,FOR_PARTS,UNKNOWN - Agent-ready,
agentMarkdownready to paste into an LLM context - One dataset, two record types,
sold_listing+comps_summarydiscriminated byrecordType - Schema doesn't break your pipeline,
outputSchemaVersionliteral on every record - Safe to dedupe across re-runs,
ebay:listing:<id>,ebay:comps:<query-slug>stable IDs
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.