eBay Sold Listings Scraper — Completed Sales & Sold Prices
Pricing
$3.50 / 1,000 sold listings
eBay Sold Listings Scraper — Completed Sales & Sold Prices
Scrape eBay sold listings and completed sale prices by keyword. Export sold date, condition, shipping, seller feedback across 20+ regional sites. Fast curl_cffi scraper — no browser, residential proxy ready.
Pricing
$3.50 / 1,000 sold listings
Rating
0.0
(0)
Developer
Andrej Kiva
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
5 hours ago
Last modified
Categories
Share
Disclaimer: This is an unofficial integration developed independently. It is not affiliated with, sponsored by, or endorsed by eBay Inc. or any of its subsidiaries.
eBay and related names are trademarks of eBay Inc. Data is read from publicly accessible search results for completed (sold) listings only. No eBay account login or private seller APIs are used.
This Actor is provided for informational and research purposes only (e.g. market pricing, resale valuation, competitor analysis). You are solely responsible for complying with applicable laws, eBay's terms of use, and your organization's policies.
Extract real completed eBay transactions — not active listings. Search by keyword across 20+ regional marketplaces (ebay.com, ebay.co.uk, ebay.de, ebay.fr, and more), filter by sold date range, condition, listing type, and price, then export sold price, end date, shipping, and seller feedback as clean JSON. Built for resale arbitrage, dynamic pricing, inventory valuation, and competitor monitoring.
Best for: eBay sold price research, completed sales history, sneaker/card/tech comps, and bulk export to Google Sheets, Airtable, or your own database via Apify integrations.
When to use this Actor
- eBay sold price lookup — See what items actually sold for in the last 1–90 days, not asking prices.
- Resale & arbitrage research — Compare completed sales for sneakers, GPUs, collectibles, vintage goods, and consumer electronics.
- Competitive pricing — Build sold-price datasets per keyword, category, and marketplace to set your own list prices.
- Seller intelligence — Filter out high-volume business sellers, track feedback scores, and focus on organic C2C sales.
- Multi-market analysis — Run the same keyword on
ebay.com,ebay.de, orebay.co.ukin parallel with localized currency parsing.
When not to use this Actor
- Active / live listings — This Actor targets Sold + Completed search results only, not current Buy It Now inventory.
- Single product PDP deep scrape — Use a dedicated eBay item scraper if you need full description HTML, item specifics, or all gallery images from one URL.
- Official eBay API replacement — We parse public search pages; for licensed API access, use eBay's developer program directly.
Key Features
- Completed sales only — Filters sponsored cards and active listings; every row includes a sold/end date.
- 20+ eBay sites — US, UK, DE, FR, IT, ES, CA, AU, PL, NL, and more with correct currency handling.
- Triple layout fallback — Supports
.s-item,.s-item-card, and.s-cardsearch result layouts automatically. - Lightweight & fast —
curl_cffiChrome TLS impersonation, 128–256 MB RAM, no Puppeteer or Playwright. - Rich sold listing data — Price, shipping, total, condition ID, listing type (auction / BIN / best offer), seller type.
- Advanced filters — Date window, min/max price, condition, auction vs Buy It Now, free shipping, seller blocklist.
- Proxy-ready — Works with Apify Residential Proxies (recommended) and datacenter proxies on EU domains.
Input Parameters
| Parameter | Type | Default | Description |
|---|---|---|---|
keywords | Array | (Required) | Search queries (e.g. ["iphone 15", "rtx 4080"]). Each keyword runs in parallel. |
daysToScrape | Integer | 30 | How many days back to include completed sales (1–90). |
count | Integer | 100 | Max sold listings to collect per keyword. |
ebaySite | String | "ebay.com" | Regional eBay domain (ebay.de, ebay.co.uk, ebay.fr, …). |
itemCondition | String | "any" | any, new, used, or refurbished. |
listingType | String | "any" | any, auction, or buy_it_now. |
freeShippingOnly | Boolean | false | Keep only listings with free shipping. |
excludeSellers | Array | [] | Seller usernames to skip (case-insensitive). |
categoryId | String | "0" | eBay category ID (0 = all categories). |
subcategoryId | String | "" | Optional subcategory; overrides categoryId when set. |
minPrice / maxPrice | Number | — | Sold price range in the marketplace currency. |
itemLocation | String | "default" | default, domestic, or worldwide seller location. |
sortOrder | String | "endedRecently" | Sort sold results (ended recently, price low/high, etc.). |
proxyConfiguration | Object | Residential | Apify Proxy settings; residential recommended for US/UK. |
Input Example
{"keywords": ["nike air max", "rtx 4080"],"daysToScrape": 14,"count": 100,"ebaySite": "ebay.de","itemCondition": "used","listingType": "auction","freeShippingOnly": false,"excludeSellers": ["mega_shop_de"],"proxyConfiguration": {"useApifyProxy": true,"apifyProxyGroups": ["RESIDENTIAL"],"apifyProxyCountry": "DE"}}
Output Format
Each dataset row = one completed eBay sale that passed your filters.
| Field | Type | Description |
|---|---|---|
itemId | String | eBay listing ID. |
url | String | Clean item URL (no tracking params). |
title | String | Listing title. |
condition | String | Localized condition (e.g. Pre-owned, Gebraucht). |
conditionId | Integer | Normalized code (1000 New, 3000 Used, 7000 For parts). |
endedAt | String | Sale end time (UTC ISO 8601). |
soldPrice | String | Final sold price. |
soldCurrency | String | USD, EUR, GBP, PLN, etc. |
listingType | String | buy_it_now, auction, or best_offer_accepted. |
isBestOfferAccepted | Boolean | Best Offer accepted flag. |
shippingPrice | String | Shipping cost (0.00 = free). |
shippingType | String | free, paid, pickup, or unknown. |
totalPrice | String | Sold price + shipping (same currency). |
sellerUsername | String | Seller account name. |
sellerPositivePercent | Number | Positive feedback %. |
sellerFeedbackScore | Integer | Total feedback count. |
sellerType | String | business or private when shown. |
keyword | String | Keyword that found this sale. |
scrapedAt | String | Extraction timestamp (UTC). |
Output Example
{"itemId": "377309614758","url": "https://www.ebay.de/itm/377309614758","title": "ASUS TUF Gaming GeForce RTX 3080 OC 10GB GDDR6 - FAULTY","condition": "Nur Ersatzteile / defekt","conditionId": 7000,"endedAt": "2026-07-02T12:00:00.000Z","soldPrice": "163.34","soldCurrency": "EUR","listingType": "auction","isBestOfferAccepted": false,"shippingPrice": "15.99","shippingType": "paid","totalPrice": "179.33","sellerUsername": "basspares","sellerPositivePercent": 100,"sellerFeedbackScore": 907,"sellerType": "business","keyword": "rtx 3080","scrapedAt": "2026-07-02T12:52:34.598Z"}
Note: When Best Offer is accepted, eBay often hides the negotiated price — the Actor flags isBestOfferAccepted: true and records the displayed asking price.
Use Cases
| Use Case | What you get |
|---|---|
| Sold comps for resale | Historical sold prices for flips, thrift finds, and liquidation buys |
| Market pricing | 30/60/90-day sold price bands per SKU or keyword |
| Category research | Sold data narrowed by categoryId and condition filters |
| Cross-border pricing | Same keyword on .com vs .de with local currency |
| Seller filtering | Exclude dropshippers and bulk dealers via excludeSellers |
FAQ
How is this different from a regular eBay scraper?
Regular eBay scrapers return active listings with current ask prices. This Actor searches eBay's Sold + Completed filter, so every row reflects a transaction that already ended — ideal for true market value and sold comps.
Which eBay sites are supported?
ebay.com, ebay.co.uk, ebay.de, ebay.fr, ebay.it, ebay.es, ebay.ca, ebay.com.au, ebay.at, ebay.ch, ebay.ie, ebay.pl, ebay.nl, ebay.be, ebay.com.sg, ebay.com.my, ebay.ph, and ebay.com.hk.
Do I need proxies?
Residential proxies are recommended for US and UK marketplaces to reduce bot challenges. European domains often work with datacenter proxies. The Actor defaults to geo-targeted Apify Residential Proxy per marketplace.
Can I scrape multiple keywords at once?
Yes. Pass an array in keywords — each query runs in parallel with the same filters and its own count limit.
How far back can I scrape sold history?
Set daysToScrape from 1 to 90. Results older than your window are skipped; with endedRecently sort, pagination stops after five consecutive out-of-range items.
Does it export to JSON / CSV / API?
Yes. Results land in the Apify dataset. Download JSON, CSV, or Excel from the run, or connect webhooks and integrations (Google Sheets, BigQuery, etc.).