eBay Sold Listings Scraper — Price Comps & Analytics
Pricing
from $5.00 / 1,000 sold item scrapeds
eBay Sold Listings Scraper — Price Comps & Analytics
Scrape eBay sold and completed listings and get a price-analytics report: min, max, average, median, percentiles, sell-through velocity, weekly price trend and condition breakdown across 8 marketplaces.
Pricing
from $5.00 / 1,000 sold item scrapeds
Rating
0.0
(0)
Developer
Khadin Akbar
Maintained by CommunityActor stats
0
Bookmarked
25
Total users
4
Monthly active users
9 days ago
Last modified
Categories
Share
What is eBay Sold Listings Scraper — Price Comps & Analytics?
This Apify Actor is built for resellers, analysts, and AI agents that start with a product keyword or an eBay search-results URL and want one sold-listings record at a time, plus an optional analytics report for the same sample. Accepted input includes searchQuery, startUrls, marketplace, condition, date and price filters, sort order, and includeReport. Each sold-item record represents one completed eBay sale, and the analytics record summarizes the sample with fields such as min, max, average, median, percentiles, sell-through velocity, weekly price trend, and condition breakdown. The outcome is a structured dataset you can use for pricing, sourcing, and automated comparison workflows.
Best fit and connected workflows
This Actor fits workflows that begin with sold-price evidence and move into a pricing decision.
Common routing patterns include:
- Keyword-driven price research for a model name, SKU, part number, or brand phrase.
- Browser-built eBay search filters routed through
startUrlswhen you already have a saved search-results page. - Regional sold-comps checks across the supported marketplaces: ebay.com, ebay.co.uk, ebay.de, ebay.fr, ebay.it, ebay.es, ebay.ca, and ebay.com.au.
- AI-agent workflows through Apify MCP when the agent needs row-level sold listings and one compact analytics summary.
- Repricing, sourcing, and market-review workflows centered on sold and completed listings.
focused workflow
eBay Sold Listings Scraper — Price Comps & Analytics is designed as a focused workflow.
Practical scenario
Lena is pricing a used camera lens for resale. She starts with searchQuery: "sigma 24-70", sets marketplace: "ebay.com", keeps condition: "used", and uses daysBack: 30 to focus on recent sold history. The dataset returns sold-item rows with title, sold price, currency, condition, sold date, listing type, bids count, shipping cost, and item URL. The analytics record adds the median price and weekly trend, which helps Lena choose a listing price band and decide whether to list near the median or aim for a faster sale.
Input fields
| Field | Type | Default | Purpose |
|---|---|---|---|
searchQuery | string | airpods pro 2 | Keyword for eBay sold/completed listings. The Actor adds the sold and completed filters automatically. |
startUrls | array | - | eBay search-results URLs to scrape instead of a keyword. Each URL is forced into sold and completed mode. |
marketplace | string | ebay.com | eBay marketplace domain to query and proxy-country target. |
maxItems | integer | 50 | Maximum number of sold listings to scrape, from 1 to 1000. |
condition | string | any | Condition filter: any, new, used, refurbished, or open_box. |
daysBack | integer | - | Keep sold items from the last N days, up to 90. |
minPrice | integer | - | Minimum sold price filter in the marketplace's local currency. |
maxPrice | integer | - | Maximum sold price filter in the marketplace's local currency. |
sortBy | string | newest | Sort order for returned sold results. |
includeReport | boolean | true | Adds one analytics-report record for the sold sample. |
proxyConfiguration | object | built-in residential proxy | Proxy settings. The Actor uses a residential proxy by default. |
Focused JSON input example
{"searchQuery": "rolex submariner","marketplace": "ebay.com","maxItems": 100,"condition": "used","daysBack": 30,"minPrice": 5000,"maxPrice": 12000,"sortBy": "newest","includeReport": true}
Output fields
The dataset contains one row per sold item, plus one analytics-report record when includeReport is enabled.
| Field | Type | Description |
|---|---|---|
title | string | Listing title. |
soldPrice | number | Final sold price in the marketplace's local currency. |
currency | string | ISO currency code. |
condition | string | Condition label shown on eBay. |
soldDate | string | Sold date in YYYY-MM-DD format when available. |
listingType | string | Listing type such as auction or buy-it-now. |
bidsCount | number | Number of bids for auction-style listings when available. |
shippingCost | number | Shipping cost when available. |
itemUrl | string | Canonical eBay item URL. |
Illustrative JSON record
{"title": "Apple AirPods Pro 2 Wireless Earbuds","soldPrice": 169.99,"currency": "USD","condition": "used","soldDate": "2026-07-01","listingType": "buy_it_now","bidsCount": null,"shippingCost": 0,"itemUrl": "https://www.ebay.com/itm/1234567890"}
How it works
The Actor opens eBay sold and completed search results in a browser-based crawler, applies the sold and completed filter automatically, and collects completed listings from the selected marketplace or supplied search URL. The live contract shows support for eight marketplaces and a country-pinned residential proxy setup that matches the marketplace domain. The implementation includes PlaywrightCrawler, a warmup step against robots.txt, and a circuit-breaker approach that keeps the run concise when repeated blocks return no results. The report, when enabled, is computed from the sold sample in the same run.
Pricing
This Actor uses Apify Pay per event pricing, and Apify platform usage is part of the total run cost. Billing is event-based, so the final amount depends on how many sold items are scraped and whether the analytics report is included. Use the live Pricing tab on the Actor page for current rates and the latest pricing details.
For a simple event-count example: a run with fifty sold items and one analytics report includes fifty sold-item events, one analytics-report event, and one actor-start event. If you set includeReport: false, the execution includes the sold-item events plus the start event. maxItems is a hard cap, so billing stays within that limit.
Use with AI agents (MCP)
This Actor is usable through Apify MCP as a tool for retrieving eBay sold comps and a compact analytics summary from structured dataset records.
Actor identity: khadinakbar/ebay-sold-comps-analytics-scraper
Tool description: send a keyword search or a saved eBay search-results URL, then read back sold-item rows and, when enabled, one analytics-report record for downstream reasoning.
Search eBay sold listings for
nintendo switch oledonebay.com, keep the last 30 days, return up to 100 sold items, and summarize the sold sample so I can compare median price, weekly trend, and condition mix.
Output interpretation:
- Sold-item rows provide item-level evidence with title, sold price, condition, sold date, listing type, bids count, shipping cost, and item URL.
- The analytics report summarizes the sample with min, max, average, median, percentiles, sell-through velocity, weekly price trend, and condition and listing-type breakdowns.
- The dataset is the primary source for downstream reasoning and review.
- Pagination is controlled by
maxItems, which sets the collection cap for the run. - Cost grows with the number of sold-item events, and
includeReport: falsereturns only the raw sold-item rows.
Apify API example
import { ApifyClient } from 'apify-client';const client = new ApifyClient({token: process.env.APIFY_TOKEN,});const input = {searchQuery: 'rolex submariner',marketplace: 'ebay.com',maxItems: 20,condition: 'used',daysBack: 30,includeReport: true,};const run = await client.actor('khadinakbar/ebay-sold-comps-analytics-scraper').call(input);const { items } = await client.dataset(run.defaultDatasetId).listItems();console.log(items);
Best results and outcome guidance
- Use a specific keyword or a focused eBay search URL when you want a tighter sold sample.
- Keep
marketplacealigned with the region you are pricing in so currency and demand context stay consistent. - Use
conditionto separate new, used, refurbished, and open-box pricing. - Keep
sortBy: newestwhen you want the most recent sold comps to fill the sample first. - Use
daysBackwhen you want a recent pricing window rather than the full sold history.
Continue the workflow
- Then use eBay Scraper - Sold Prices, Listings & Sellers (8 Markets) to extend eBay Sold Listings Scraper — Price Comps & Analytics research with a complementary content contract.
- Then use Ecommerce Scraper — Shopify, WooCommerce, Generic (MCP) to extend eBay Sold Listings Scraper — Price Comps & Analytics with a neighboring commerce research source when the brief calls for Ecommerce data.
Design note
I found that includeReport defaults to true, which means the dataset normally contains both sold-item rows and one analytics-report record in the same run.
FAQ
When should I use searchQuery instead of startUrls?
Use searchQuery for quick keyword-based sold-comps searches. Use startUrls when you already built an eBay search-results page with browser-side filters.
Which marketplaces are supported?
The Actor supports ebay.com, ebay.co.uk, ebay.de, ebay.fr, ebay.it, ebay.es, ebay.ca, and ebay.com.au.
What does one dataset record represent?
The main dataset view represents one sold eBay listing per row. If analytics are enabled, the run also appends one summary record for the full sold sample.
How do I keep the sample focused on one pricing tier?
Set condition to new, used, refurbished, or open_box to keep the sample centered on one tier.
How do I control the number of sold items collected?
Use maxItems as the hard cap. The Actor stops at that number of sold listings.
Responsible use
Use sold-price data for legitimate pricing, research, and automation workflows. Respect eBay's terms, marketplace rules, and applicable laws in your jurisdiction. The Actor is designed for publicly available sold and completed search results and structured downstream analysis.