eBay Sold Scraper · Price Analytics
Pricing
from $3.00 / 1,000 results
eBay Sold Scraper · Price Analytics
Scrape eBay sold listings for real transaction prices. Filter by date range and condition. Returns avg, median, and recommended price analytics per query. Supports 8 eBay marketplaces.
Pricing
from $3.00 / 1,000 results
Rating
0.0
(0)
Developer
Ale
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Categories
Share
eBay Sold Listings Scraper
Scrape completed eBay sales for real transaction prices. For every query, the actor produces a summary record with avg price, median price, P10/P90 bands, and a recommended sell price. No post-processing needed.
Built for sellers, resellers, and pricing teams who need to answer one question quickly: what does this item actually sell for?
What It Does
- Scrapes sold and completed listings from any eBay marketplace
- Outputs a per-query analytics record: avg, median, P10, P90, and recommended price
- Filters to items sold within a configurable window (up to 90 days)
- Accepts keyword queries and direct eBay sold-search URLs
- Captures condition, shipping cost, best-offer flag, and sale date per listing
- Runs multiple queries in one actor invocation
Sample Output
[{"recordType": "listing","itemId": "325871204933","title": "Vintage Rolex Oyster Perpetual Date Ref 1500 Steel 34mm Automatic Watch","url": "https://www.ebay.com/itm/325871204933","marketplace": "ebay.com","soldPrice": 3850.00,"currency": "USD","condition": "Pre-Owned","soldDate": "2026-06-01T14:22:00.000Z","shippingCost": 0.00,"freeShipping": true,"isBestOfferAccepted": false,"imageUrl": "https://i.ebayimg.com/images/g/abc123/s-l500.jpg","searchQuery": "vintage rolex","scrapedAt": "2026-06-13T09:15:00.000Z"},{"recordType": "analytics","searchQuery": "vintage rolex","marketplace": "ebay.com","totalSalesFound": 94,"avgSoldPrice": 4812.50,"medianSoldPrice": 4650.00,"recommendedPrice": 4417.50,"priceLow": 1200.00,"priceHigh": 9800.00,"p10Price": 2100.00,"p90Price": 7400.00,"currency": "USD","daysAnalyzed": 30,"scrapedAt": "2026-06-13T09:15:44.000Z"}]
The dataset mixes recordType: "listing" rows with one recordType: "analytics" row per query at the end.
Pricing
$0.001 per actor start + $0.003 per listing record. About $3 per 1,000 listings.
Analytics summary records aren't charged. You only pay for the listing rows.
New to Apify? Every account gets a $5 free monthly platform credit, enough for around 1,600 listing results on this actor before you commit to paying anything. Test extensively first.
Input
| Field | Type | Default | Description |
|---|---|---|---|
searchQueries | array of strings | — | Search terms. Each term produces its own result set and analytics record. |
startUrls | array of {url} | — | Direct eBay sold-search URLs. Useful with pre-filtered category or condition constraints. |
marketplace | string | "ebay.com" | eBay domain to scrape. See Supported Marketplaces below. |
maxResults | integer | 100 | Maximum listing records per query. |
soldWithinDays | integer | 30 | Only include items sold within this many days. Maximum is 90 (eBay's historical limit). |
condition | array of strings | — | Filter by condition: "new", "used", "refurbished", "open_box", "for_parts". |
sortBy | string | "best_match" | Sort order for results. |
minPrice | float | — | Minimum sold price filter. |
maxPrice | float | — | Maximum sold price filter. |
categoryId | string | — | eBay category ID to narrow results (e.g. "9355" for Cell Phones). |
includeAnalytics | boolean | true | Appends one recordType: "analytics" record per query after its listings. |
concurrency | integer | 5 | Parallel workers. Advanced: lower this for more conservative throughput. |
At least one of searchQueries or startUrls is required.
Example Input
{"searchQueries": ["vintage rolex", "rolex submariner 16610"],"marketplace": "ebay.com","maxResults": 100,"soldWithinDays": 30,"includeAnalytics": true}
Output Fields
Listing record fields
| Field | Type | Description |
|---|---|---|
recordType | string | Always "listing". |
itemId | string | eBay item ID. |
title | string | Full listing title. |
url | string | Canonical eBay listing URL. |
marketplace | string | eBay domain the listing was found on. |
soldPrice | number | Final sold price. |
currency | string | ISO 4217 currency code (e.g. USD, GBP, EUR). |
condition | string | Condition label as listed (e.g. Pre-Owned, New). |
soldDate | string | ISO 8601 timestamp of when the item sold. |
shippingCost | number | Stated shipping cost. 0 when free. |
freeShipping | boolean | true if the seller offered free shipping. |
isBestOfferAccepted | boolean | true if the final price was the result of a Best Offer. |
imageUrl | string | Primary listing image URL. |
searchQuery | string | The query or URL that produced this result. |
scrapedAt | string | ISO 8601 timestamp of when this record was collected. |
Analytics record fields
| Field | Type | Description |
|---|---|---|
recordType | string | Always "analytics". |
searchQuery | string | The query this summary covers. |
marketplace | string | eBay domain. |
totalSalesFound | integer | Number of sold listings analysed. |
avgSoldPrice | number | Arithmetic mean of all sold prices. |
medianSoldPrice | number | Median sold price (50th percentile). |
recommendedPrice | number | Suggested list price: 95% of median, giving a competitive edge over recent comps. |
priceLow | number | Lowest sold price in the result set. |
priceHigh | number | Highest sold price in the result set. |
p10Price | number | 10th percentile price (bottom 10% of sales). |
p90Price | number | 90th percentile price (top 10% of sales). |
currency | string | ISO 4217 currency code. |
daysAnalyzed | integer | The soldWithinDays window used for this run. |
scrapedAt | string | ISO 8601 timestamp. |
Use with AI Agents (MCP)
Connect this actor to any MCP-compatible AI client: Claude Desktop, Claude.ai, Cursor, VS Code, LangChain, LlamaIndex, or custom agents.
Apify MCP server URL:
https://mcp.apify.com?tools=santamaria-automations/ebay-sold-scraper
Example prompt once connected:
"Use
ebay-sold-scraperto analyse the last 30 days of 'vintage rolex' sales on ebay.com. Show me the median price, recommended selling price, and P10/P90 range."
Clients that support dynamic tool discovery (Claude.ai, VS Code) will receive the full input schema automatically.
Why This Scraper
Built-in price analytics means you don't need to export to a spreadsheet to get avg and median. The recommendedPrice field (95% of median) gives you a competitive anchor price in the response. HTTP-only, 128MB RAM, no browser overhead.
Common Use Cases
- Reseller pricing: Anchor your list price on real sold comps, not wishful asking prices
- Inventory valuation: Bulk-query a catalogue of SKUs and pull the median sold price for each
- Trend analysis: Schedule recurring runs and store the analytics records to track how median price shifts week over week
- Arbitrage research: Cross-reference
recommendedPriceagainst supplier costs to surface margin-positive opportunities
Supported Marketplaces
| Value | Marketplace |
|---|---|
ebay.com | United States (default) |
ebay.co.uk | United Kingdom |
ebay.de | Germany |
ebay.fr | France |
ebay.it | Italy |
ebay.es | Spain |
ebay.com.au | Australia |
ebay.ca | Canada |
ebay.at | Austria |
ebay.nl | Netherlands |
Related Actors
- eBay Product Scraper: Scrapes active (unsold) eBay listings. Use it alongside this actor to compare asking prices against what items actually sell for.
Support
For bugs, feature requests, or marketplaces not yet supported, open a ticket on the Issues tab. We typically respond within 24 hours.
Contact: contact@nanoscrape.com