eBay Sold Listings Scraper avatar

eBay Sold Listings Scraper

Pricing

Pay per event

Go to Apify Store
eBay Sold Listings Scraper

eBay Sold Listings Scraper

Scrape eBay completed/sold listings for price research 📊 Actual sold prices, not asking prices. Get sold price, date, condition, bids, shipping, and seller. Filter by condition, price range, and listing type.

Pricing

Pay per event

Rating

0.0

(0)

Developer

Stas Persiianenko

Stas Persiianenko

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 hours ago

Last modified

Categories

Share

What does eBay Sold Listings Scraper do?

eBay Sold Listings Scraper extracts completed/sold listing data from eBay — the actual prices that items sold for, not just asking prices. It searches eBay's completed listings (using eBay's LH_Sold=1&LH_Complete=1 filter) and returns structured data including sold price, sold date, item condition, bid count, shipping cost, seller feedback, and direct item URLs.

Unlike the general eBay Scraper (which shows active listings with asking prices), this actor is built specifically for price research — finding what something actually sold for. Use it before buying or selling to understand true market value.

Pure HTTP scraping with Cheerio — no browser overhead, fast and cost-efficient.

Who is eBay Sold Listings Scraper for?

🛍️ eBay resellers and flippers

  • Research "comp sales" before purchasing inventory
  • Validate that your asking price matches what buyers actually paid
  • Track seasonal price trends for specific item categories
  • Build pricing spreadsheets for hundreds of items at once

📦 E-commerce sellers

  • Set competitive prices on eBay, Amazon, or Shopify listings
  • Analyze competitor sell-through rates by searching their item keywords
  • Monitor market prices for restocking decisions
  • Research which conditions (new vs. used) command price premiums

📊 Market researchers and analysts

  • Collect historical price data for vintage or collectible markets
  • Build datasets for pricing models and trend analysis
  • Track auction vs. Buy It Now price differentials
  • Export data to Excel/Google Sheets for reporting

🤖 Developers and data teams

  • Power price comparison tools and apps
  • Build automated alerts for price drops or market shifts
  • Integrate sold price data into inventory management systems
  • Use with the Apify API or schedule runs for regular data refreshes

Why use eBay Sold Listings Scraper?

  • Actual sold prices — not asking prices. Completed listings show what buyers paid
  • No API key required — eBay's official API doesn't expose completed listing data this easily
  • Fast HTTP-only scraping — no browser, lightweight, cheap per listing
  • Filters that matter — condition, price range, listing type (auction vs. Buy It Now)
  • Structured output — JSON/CSV/Excel with consistent field names
  • Multiple keywords at once — run 10+ search terms in a single actor run
  • Residential proxy included — automatic proxy rotation to avoid blocks
  • Apify platform benefits — API access, scheduling, 5,000+ integrations

What data can you extract?

FieldDescriptionExample
titleItem title"Canon AE-1 Program 35mm Film Camera"
soldPriceFinal sold price (USD)43.82
soldPriceStringSold price as shown"$43.82"
soldDateDate the item sold"Apr 2, 2026"
conditionItem condition label"Pre-Owned", "Brand New", "Parts Only"
listingTypeAuction or Buy It Now"Auction"
bidsCountNumber of bids (auctions)7
shippingCostShipping cost or "Free shipping""+$5.99 delivery"
sellerNameSeller username"vintage_finds_co"
sellerFeedbackPercentPositive feedback %"99.8%"
sellerFeedbackCountTotal feedback count"2.3K"
thumbnailItem image URL"https://i.ebayimg.com/..."
urlDirect eBay item URL"https://www.ebay.com/itm/..."
itemIdeBay item ID"123456789012"

How much does it cost to scrape eBay sold listings?

This actor uses Pay-Per-Event (PPE) pricing — you're charged per listing extracted, not per run time. Prices scale down as your usage grows.

EventFree planBronzeSilverGoldPlatinumDiamond
Actor start$0.001$0.001$0.001$0.001$0.001$0.001
Per sold listing$0.00345$0.003$0.00234$0.0018$0.0012$0.00084

Real-world cost examples (Free plan):

Use caseListingsEstimated cost
Quick comp check (1 keyword, 10 results)10~$0.036
Standard research (1 keyword, 100 results)100~$0.346
Deep analysis (5 keywords, 100 each)500~$1.726
Bulk research (10 keywords, 200 each)2,000~$6.901

Free plan: Apify gives every account $5 in free credits. That's approximately 1,440 sold listings you can scrape for free before spending anything.

How to scrape eBay sold listings

  1. Go to eBay Sold Listings Scraper on Apify Store
  2. Click Try for free (or open in Apify Console)
  3. Enter one or more search keywords in the Search keywords field
  4. Set Max listings per search (10 for a quick test, 100+ for research)
  5. Apply optional filters: condition, price range, listing type
  6. Click Save & Start
  7. Download your results in JSON, CSV, or Excel

Input example — vintage camera research:

{
"searchQueries": ["vintage camera", "film camera 35mm"],
"maxListingsPerSearch": 100,
"sort": "newly_listed",
"condition": ["used"],
"minPrice": 20,
"maxPrice": 500
}

Input example — auction-only electronics:

{
"searchQueries": ["iphone 14 pro 256gb"],
"maxListingsPerSearch": 50,
"sort": "newly_listed",
"listingType": "auction"
}

Input example — price range analysis:

{
"searchQueries": ["lego star wars set", "lego technic", "lego city"],
"maxListingsPerSearch": 200,
"maxSearchPages": 10,
"sort": "price_high"
}

Input parameters

ParameterTypeDefaultDescription
searchQueriesstring[]Required. Keywords to search eBay completed listings. Each runs a separate search.
maxListingsPerSearchinteger100Maximum listings to return per keyword.
maxSearchPagesinteger5Pages to scrape per keyword. Each page has up to 60 listings.
sortstringnewly_listedSort order: best_match, newly_listed, price_low, price_high.
conditionstring[][]Filter by condition: new, open_box, refurbished, used, for_parts. Leave empty for all.
listingTypestringallFilter by type: all, auction, buy_it_now.
minPriceintegerMinimum sold price in USD.
maxPriceintegerMaximum sold price in USD.
maxRequestRetriesinteger5Retry attempts for failed requests.

Output examples

Typical sold listing:

{
"itemId": "227266797887",
"title": "Canon AE-1 Program Vintage 35mm Film Camera w/ 50mm Lens Tested Working",
"soldPrice": 43.82,
"soldPriceString": "$43.82",
"soldDate": "Apr 2, 2026",
"condition": "Pre-Owned",
"listingType": "Buy It Now",
"bidsCount": null,
"shippingCost": "+$12.00 delivery",
"sellerName": "camera_warehouse_us",
"sellerFeedbackPercent": "99.5%",
"sellerFeedbackCount": "3.7K",
"thumbnail": "https://i.ebayimg.com/images/g/.../s-l500.webp",
"url": "https://www.ebay.com/itm/227266797887",
"scrapedAt": "2026-04-02T14:00:00.000Z"
}

Auction listing:

{
"itemId": "156789012345",
"title": "Apple iPhone 15 Pro Max 256GB Natural Titanium Unlocked",
"soldPrice": 550.00,
"soldPriceString": "$550.00",
"soldDate": "Apr 1, 2026",
"condition": "Pre-Owned · Apple iPhone 15 Pro Max · 256 GB · Unlocked",
"listingType": "Auction",
"bidsCount": 20,
"shippingCost": "Free international shipping",
"sellerName": "techdeals2024",
"sellerFeedbackPercent": "100%",
"sellerFeedbackCount": "892",
"thumbnail": "https://i.ebayimg.com/images/g/.../s-l500.webp",
"url": "https://www.ebay.com/itm/156789012345",
"scrapedAt": "2026-04-02T14:00:00.000Z"
}

Tips for best results

  • 🎯 Use specific keywords — "canon ae-1 program 35mm" returns more relevant comps than just "camera"
  • 📅 Use "Newly Listed" sort for the most recent sales data
  • 💰 Narrow price range filters help when searching high-variance categories (e.g., watches, jewelry)
  • 🔄 Run multiple keywords — brands, model numbers, and common aliases give fuller market pictures
  • 📊 Export to Excel and calculate average/median sold prices for robust pricing
  • 🗓️ Schedule weekly runs to track price trends over time
  • 🔢 Start with 10-20 results to preview the data quality before running large batches

Integrations

eBay Sold Listings Scraper → Google Sheets Export 100 comps per keyword directly to a Google Sheet using Apify's Google Sheets integration. Auto-refresh weekly to keep your price research current without manual work.

eBay Sold Listings Scraper → Make (formerly Integromat) Trigger a Make scenario whenever a run finishes: parse the dataset, filter by price range, and push bargains to a Slack channel for your buying team.

eBay Sold Listings Scraper → Airtable Build a live pricing database in Airtable. Run the actor on a schedule, push new sold listings, and use Airtable's rollup formulas to calculate average sold prices per category.

Scheduled monitoring Set up a daily run (via Apify's built-in scheduler) to track sold prices for high-value items. Combine with the Apify API to detect price trend reversals automatically.

eBay Sold Listings Scraper → Zapier → Email Send yourself a daily email digest of recent sales for a specific item, formatted as a price table. Useful for tracking collectibles, electronics, or seasonal inventory.

Using the Apify API

You can trigger this actor programmatically via the Apify API.

Node.js (apify-client):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('automation-lab/ebay-sold-scraper').call({
searchQueries: ['vintage camera', 'film camera'],
maxListingsPerSearch: 100,
sort: 'newly_listed',
condition: ['used'],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);

Python:

from apify_client import ApifyClient
client = ApifyClient("YOUR_APIFY_TOKEN")
run = client.actor("automation-lab/ebay-sold-scraper").call(run_input={
"searchQueries": ["vintage camera", "film camera"],
"maxListingsPerSearch": 100,
"sort": "newly_listed",
"condition": ["used"],
})
items = client.dataset(run["defaultDatasetId"]).list_items().items
print(items)

cURL:

curl -X POST \
"https://api.apify.com/v2/acts/automation-lab~ebay-sold-scraper/runs" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_APIFY_TOKEN" \
-d '{
"searchQueries": ["vintage camera"],
"maxListingsPerSearch": 100,
"sort": "newly_listed"
}'

Use with AI agents via MCP

eBay Sold Listings Scraper is available as a tool for AI assistants that support the Model Context Protocol (MCP).

Add the Apify MCP server to your AI client — this gives you access to all Apify actors, including this one:

Setup for Claude Code

$claude mcp add --transport http apify "https://mcp.apify.com?tools=automation-lab/ebay-sold-scraper"

Setup for Claude Desktop, Cursor, or VS Code

Add this to your MCP config file:

{
"mcpServers": {
"apify": {
"type": "http",
"url": "https://mcp.apify.com?tools=automation-lab/ebay-sold-scraper",
"headers": {
"Authorization": "Bearer YOUR_APIFY_TOKEN"
}
}
}
}

Example AI prompts

Once configured, you can ask your AI assistant:

  • "Search eBay sold listings for 'rolex submariner' and show me the last 20 sales with their prices and dates"
  • "Find what vintage Polaroid cameras actually sold for on eBay in the last month — only used condition, under $200"
  • "Compare eBay sold prices for 'iphone 15 pro 256gb' vs 'iphone 15 pro max 256gb' — 50 each, auction listings only"

eBay's completed/sold listing data is publicly visible to any website visitor without logging in. This actor accesses only publicly available data in the same way a human would browse eBay.

We recommend using this actor responsibly:

  • Respect eBay's Terms of Service
  • Do not use extracted data to spam sellers or buyers
  • Comply with applicable data protection laws (GDPR, CCPA) when storing personal data
  • Use the data for legitimate price research and market analysis purposes

For more context, see Apify's guide to ethical web scraping.

FAQ

How many results can I get? Each search page returns up to 60 sold listings. With maxSearchPages: 20, you can get up to 1,200 results per keyword. Run multiple keywords in a single run for broader coverage.

How fast does it scrape? Typically 60 listings per 5-10 seconds. A 100-listing run usually completes in under 30 seconds.

Why don't some items have a sold date? eBay's completed listings page doesn't always show the exact date in the same HTML location — some listings show relative dates (e.g., "2 days ago") that aren't extracted. The field will be empty for those items.

Why do some condition fields have extra text like "Pre-Owned · Apple iPhone 15"? eBay includes item specifics (brand, model, storage) in the condition field for certain categories. This is the raw text from eBay's listing. You can parse or clean this in post-processing.

Why are my results empty? If a search returns no results, the keyword likely has no completed listings in eBay's database. Try:

  • Broader keyword (e.g., "canon camera" instead of "canon ae-1 chrome body only")
  • Remove price range filters that are too narrow
  • Try without condition filters first

Is this different from the general eBay Scraper? Yes — the eBay Scraper shows active listings (asking prices). This actor shows completed/sold listings (actual transaction prices). Use this actor when you need to know what buyers actually paid, not what sellers are asking.

Can I scrape eBay sold listings for a specific category? Yes — use specific keywords that describe the category (e.g., "vintage denim jacket size L", "pokemon card lot 100"). eBay's search within completed listings is the primary filter mechanism.

Other e-commerce scrapers

Looking for more market research tools? Try these automation-lab actors: