eBay Sold Listings Scraper
Pricing
from $1.49 / 1,000 results
eBay Sold Listings Scraper
Pay Per Result eBay sold & completed listings scraper real sold prices, seller feedback, condition, shipping. And the price you see is your entire bill.
Pricing
from $1.49 / 1,000 results
Rating
0.0
(0)
Developer
Sait
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
Pay Per Result eBay sold & completed listings scraper — real sold prices, straight from eBay. And the price you see is your entire bill. Search any keyword, filter by category, condition, price range, and date, and get every sold comp in one dataset. No API key, no login. Platform usage included, retries and IP rotation on us, empty runs cost nothing — and the Actor is monitored around the clock, so breakage never reaches you silently.
What it's for
Sold listings are the ground truth for pricing. This scraper gives resellers, flippers, and market researchers the actual sold prices — not asking prices:
- 💰 Real sold comps — price, shipping, total, and sold date for every completed listing
- 📊 Price research & repricing — know what an item actually sells for before you buy or list
- 🔎 Seller intelligence — seller username, feedback score, positive %
- 📦 Full detail — condition, buy-it-now vs auction, bid count, best-offer-accepted, thumbnails
Why this scraper?
- 💸 All-inclusive pricing — no platform usage charges, no subscription. The per-result price is the whole bill.
- ⚡ Fast — direct HTML, results in seconds even for large searches.
- 🔁 Built-in IP rotation — every retry gets a fresh US residential IP. Blocks are our cost, not yours.
- 🩺 Monitored around the clock — scheduled health checks catch eBay-side changes before your pipeline does.
Output
One dataset item per sold listing:
{"title": "Nintendo Switch Lite 32GB Handheld System - Gray","soldPrice": "114.99","soldCurrency": "USD","shippingPrice": null,"totalPrice": "114.99","shippingType": "free","endedAt": "2026-07-23T00:00:00.000Z","itemId": "158110766373","url": "https://www.ebay.com/itm/158110766373","keyword": "nintendo switch","condition": "Pre-Owned","conditionId": 3000,"sellerUsername": "itsabeau_81","sellerFeedbackScore": 1700,"sellerPositivePercent": 99.6,"listingType": "buy_it_now","buyingFormat": "buyItNow","isBestOfferAccepted": false,"bidCount": null,"thumbnailUrl": "https://i.ebayimg.com/images/g/.../s-l500.jpg","scrapedAt": "2026-07-23T09:27:41.831Z"}
Download as JSON, CSV, Excel, XML, or JSONL — or pull it via API. Prices are strings (e.g. "114.99"), matching the format your existing pipeline expects.
How to use it
- Click Try for free.
- Type one or more terms into Keywords (or a single term into Keyword).
- Optionally set Days to Scrape, Count, Category, Condition, Min/Max Price, eBay Site.
- Run — sold comps land in the dataset in seconds.
Track sold prices on a schedule
Put the Actor on an Apify schedule with your keywords and a short Days to Scrape (e.g. 1–3): each run appends the latest sold comps — a live price history for repricing tools, dashboards, or arbitrage alerts. You pay per result, so a small watchlist costs almost nothing.
Input parameters
| Field | Type | Description |
|---|---|---|
keywords | array | Search terms; each runs a separate sold search. |
keyword / search | string | Single-term aliases (drop-in compatibility). |
ebaySite | string | ebay.com · .co.uk · .de · .fr · .it · .es · .ca · .com.au |
daysToScrape | integer | Only listings ended within the last N days. |
count | integer | Max listings to return. |
categoryId / subcategoryId | string | eBay category filter (0 = all). |
sortOrder | string | endedRecently · timeNewlyListed · pricePlusPostageLowest/Highest · distanceNearest |
minPrice / maxPrice | number | Sold price range filter. |
itemLocation | string | default · domestic · worldwide |
itemCondition | string | any · new · used |
includeCompletedListings | boolean | Include completed (not just sold); needed for Best-Offer detection. |
Supported eBay sites
ebay.com (US) · ebay.co.uk · ebay.de · ebay.fr · ebay.it · ebay.es · ebay.ca · ebay.com.au. Prices and the currency field follow the chosen site.
Completed listings & Best Offer Accepted
eBay's sold-search page shows a sold price for every completed listing, but for Best Offer listings the price displayed is the original asking price — the accepted-offer amount isn't in the public HTML. Turning on includeCompletedListings (default: on) tells the scraper to read the full completed-listings view, where each Best-Offer item is flagged. In the output:
isBestOfferAccepted: truemarks listings sold via an accepted offer.soldPriceis the listed price; treat Best-Offer sales as "sold at or below this price".
Leave the flag on unless you specifically want only fixed-price and auction sales.
Finding category IDs
Leave categoryId as 0 to search all categories (the usual choice). To narrow a search, open the category on eBay and copy the number from its URL — e.g. .../b/Video-Games/1249/... → categoryId: "1249". subcategoryId works the same way for a sub-level within that category.
Migrating from another eBay sold scraper?
Input keys and output fields mirror the most-used eBay sold listings actor exactly — same keywords, same item shape, prices as strings. Change the actor ID, keep everything else. Your downstream parsing keeps working, minus the extra platform-usage bill.
FAQ
Is scraping eBay legal? The Actor reads the same publicly available sold-listing data eBay shows any visitor, without login. Use it in line with eBay's terms and your local regulations.
Why are prices strings? To match the incumbent's output format exactly, so a drop-in switch needs zero code changes.