eBay Sold Listings Scraper — Price Comps & Analytics avatar

eBay Sold Listings Scraper — Price Comps & Analytics

Pricing

from $5.00 / 1,000 sold item scrapeds

Go to Apify Store
eBay Sold Listings Scraper — Price Comps & Analytics

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

Khadin Akbar

Maintained by Community

Actor stats

0

Bookmarked

25

Total users

4

Monthly active users

9 days ago

Last modified

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 startUrls when 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

FieldTypeDefaultPurpose
searchQuerystringairpods pro 2Keyword for eBay sold/completed listings. The Actor adds the sold and completed filters automatically.
startUrlsarray-eBay search-results URLs to scrape instead of a keyword. Each URL is forced into sold and completed mode.
marketplacestringebay.comeBay marketplace domain to query and proxy-country target.
maxItemsinteger50Maximum number of sold listings to scrape, from 1 to 1000.
conditionstringanyCondition filter: any, new, used, refurbished, or open_box.
daysBackinteger-Keep sold items from the last N days, up to 90.
minPriceinteger-Minimum sold price filter in the marketplace's local currency.
maxPriceinteger-Maximum sold price filter in the marketplace's local currency.
sortBystringnewestSort order for returned sold results.
includeReportbooleantrueAdds one analytics-report record for the sold sample.
proxyConfigurationobjectbuilt-in residential proxyProxy 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.

FieldTypeDescription
titlestringListing title.
soldPricenumberFinal sold price in the marketplace's local currency.
currencystringISO currency code.
conditionstringCondition label shown on eBay.
soldDatestringSold date in YYYY-MM-DD format when available.
listingTypestringListing type such as auction or buy-it-now.
bidsCountnumberNumber of bids for auction-style listings when available.
shippingCostnumberShipping cost when available.
itemUrlstringCanonical 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 oled on ebay.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: false returns 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 marketplace aligned with the region you are pricing in so currency and demand context stay consistent.
  • Use condition to separate new, used, refurbished, and open-box pricing.
  • Keep sortBy: newest when you want the most recent sold comps to fill the sample first.
  • Use daysBack when you want a recent pricing window rather than the full sold history.

Continue the workflow

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.