eBay Sold Listings Scraper avatar

eBay Sold Listings Scraper

Pricing

from $1.49 / 1,000 results

Go to Apify Store
eBay Sold Listings Scraper

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

Sait

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

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

  1. Click Try for free.
  2. Type one or more terms into Keywords (or a single term into Keyword).
  3. Optionally set Days to Scrape, Count, Category, Condition, Min/Max Price, eBay Site.
  4. 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

FieldTypeDescription
keywordsarraySearch terms; each runs a separate sold search.
keyword / searchstringSingle-term aliases (drop-in compatibility).
ebaySitestringebay.com · .co.uk · .de · .fr · .it · .es · .ca · .com.au
daysToScrapeintegerOnly listings ended within the last N days.
countintegerMax listings to return.
categoryId / subcategoryIdstringeBay category filter (0 = all).
sortOrderstringendedRecently · timeNewlyListed · pricePlusPostageLowest/Highest · distanceNearest
minPrice / maxPricenumberSold price range filter.
itemLocationstringdefault · domestic · worldwide
itemConditionstringany · new · used
includeCompletedListingsbooleanInclude 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: true marks listings sold via an accepted offer.
  • soldPrice is 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.