eBay Sold Listings Scraper
Pricing
Pay per event
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
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?
| Field | Description | Example |
|---|---|---|
title | Item title | "Canon AE-1 Program 35mm Film Camera" |
soldPrice | Final sold price (USD) | 43.82 |
soldPriceString | Sold price as shown | "$43.82" |
soldDate | Date the item sold | "Apr 2, 2026" |
condition | Item condition label | "Pre-Owned", "Brand New", "Parts Only" |
listingType | Auction or Buy It Now | "Auction" |
bidsCount | Number of bids (auctions) | 7 |
shippingCost | Shipping cost or "Free shipping" | "+$5.99 delivery" |
sellerName | Seller username | "vintage_finds_co" |
sellerFeedbackPercent | Positive feedback % | "99.8%" |
sellerFeedbackCount | Total feedback count | "2.3K" |
thumbnail | Item image URL | "https://i.ebayimg.com/..." |
url | Direct eBay item URL | "https://www.ebay.com/itm/..." |
itemId | eBay 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.
| Event | Free plan | Bronze | Silver | Gold | Platinum | Diamond |
|---|---|---|---|---|---|---|
| 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 case | Listings | Estimated 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
- Go to eBay Sold Listings Scraper on Apify Store
- Click Try for free (or open in Apify Console)
- Enter one or more search keywords in the Search keywords field
- Set Max listings per search (10 for a quick test, 100+ for research)
- Apply optional filters: condition, price range, listing type
- Click Save & Start
- 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
| Parameter | Type | Default | Description |
|---|---|---|---|
searchQueries | string[] | — | Required. Keywords to search eBay completed listings. Each runs a separate search. |
maxListingsPerSearch | integer | 100 | Maximum listings to return per keyword. |
maxSearchPages | integer | 5 | Pages to scrape per keyword. Each page has up to 60 listings. |
sort | string | newly_listed | Sort order: best_match, newly_listed, price_low, price_high. |
condition | string[] | [] | Filter by condition: new, open_box, refurbished, used, for_parts. Leave empty for all. |
listingType | string | all | Filter by type: all, auction, buy_it_now. |
minPrice | integer | — | Minimum sold price in USD. |
maxPrice | integer | — | Maximum sold price in USD. |
maxRequestRetries | integer | 5 | Retry 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 ApifyClientclient = 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().itemsprint(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"
Is it legal to scrape eBay sold listings?
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:
- eBay Scraper — Active listings with asking prices, bids, and filters
- Amazon Product Scraper — Product listings, prices, and BSR rankings
- Amazon Reviews Scraper — Customer review data for sentiment analysis