Request a tool
All toolsAutomationsGuidesMCP serverRequest a toolPlatformsCategories
eBay Sold Listings Scraper icon

eBay Sold Listings Scraper

Get sold and completed eBay listings: sale price, shipping, sold date, condition, bids, on 9 marketplaces. Bring your own eBay login. $0.70 per 1,000.

212 runs on Apify $0.0007 per sold listing ($0.7 / 1,000)
Run this in the cloudRun on Apify →

E-commerce & Price Tools

How it works

  1. 1
    Open it on Apify

    Hit Run on Apify — it opens the tool in the cloud, no install.

  2. 2
    Set the inputs

    Adjust query, site, condition (sensible defaults are pre-filled).

  3. 3
    Click Run

    The tool runs on Apify’s cloud and collects the data for you.

  4. 4
    Export the results

    Download as JSON, CSV or Excel, or pipe straight into your app, Google Sheets, or an AI agent.

Pricing

$0.0007 per sold listing = $0.7 per 1,000

You are charged forWhenPrice
Sold listing returnedCharged once per unique real sold eBay listing row returned. Sample and diagnostic rows are never charged.$0.0007

Pay-per-event pricing: you are billed per result, not per subscription. Billing is handled by Apify on your own account. These are the live Apify store prices, in effect since 2026-08-10, and they are what you are actually charged.

Inputs

FieldWhat it doesType
queryKeywords to search sold and completed listings for, for example vintage camera. Leave empty to get one labeled, uncharged sample row.string
siteWhich eBay site to search. Prices and sold dates come back in that marketplace's currency and date format.string
conditionOptional condition filter, applied by eBay itself through LH_ItemCondition.string
soldFromKeep only listings whose sold date is on or after this date. Applied after parsing.string
soldToKeep only listings whose sold date is on or before this date. Applied after parsing.string
categoryIdOptional eBay category ID to restrict the search, for example 625 for cameras and photo.string
minPriceApplied by eBay through _udlo and re-checked on the parsed price.number
currencyKeep only listings priced in this currency, for example USD or GBP. Useful on marketplaces that mix currencies.string
maxPriceApplied by eBay through _udhi and re-checked on the parsed price.number
maxItemsMaximum unique sold listings to return and charge for.integer
maxPagesResult pages to walk. Each page carries about 200 sold listings.integer
requestTimeoutSecsMaximum duration of each request.integer
sessionCookieeBay shows sold and completed listings only to a signed-in account, so this Actor needs yours. Sign in to eBay in your browser, open the developer tools, go to the Network tab, reload the page, click the first request in the list and copy the whole Cookie request header. Paste all of it here, every cookie, not a chosen few. It is stored encrypted, sent only to eBay, and never written to the log or the dataset.string
maxSessionseBay burns sessions. Each attempt warms a brand new session on a new proxy address before requesting the page.integer

What you get

A structured dataset — each result includes fields like:

itemIdtitlesalePricecurrencyshippingCostconditionsoldDatebuyingFormatitemLocationlistingUrl

Export every run as JSON, CSV or Excel, or send it to your app, a database, Google Sheets, or an AI agent.

Related tools in E-commerce & Price Tools

Other ready-to-run tools in the same category — all pay-per-use on the Apify cloud.

1688 Wholesale Scraper iconE-commerce & Price Tools

1688 Wholesale Scraper

Scrape 1688.com wholesale listings. Get unit price, quantity price tiers, MOQ, supplier, sales count and rating. $0.35 per 1,000 products.

1 use cases

Alibaba 1688 Supplier Ratings Scraper iconE-commerce & Price Tools

Alibaba 1688 Supplier Ratings Scraper

1688.com supplier ratings: score, five sub-scores, repeat-buyer rate, years on platform, factory or trader, audits. No account. $0.40 per 1,000.

1 use cases

Alibaba.com Scraper iconE-commerce & Price Tools

Alibaba.com Scraper

Get Alibaba.com products with no account: price ranges, MOQ, supplier name, country, verified status and images. $0.85 per 1,000.

Ready to run — no setup

AliExpress Products Scraper iconE-commerce & Price Tools

AliExpress Products Scraper

Scrape AliExpress products by search term: product ID, title, price, discount, rating, order count and image. All prices in one currency. $0.12 per 1,000.

Ready to run — no setup

Taobao Category Products Scraper iconE-commerce & Price Tools

Taobao Category Products Scraper

Scrape Taobao products by category. Get the title, price in CNY, image, product URL, seller and shop ids. No account, no cookies. $1.95 per 1,000 products.

Ready to run — no setup

Amazon Product & Reviews Scraper iconE-commerce & Price Tools

Amazon Product & Reviews Scraper

Scrape Amazon by keyword or ASIN: title, price, rating, review count, brand and availability. 7 marketplaces, no API key. $0.75 per 1,000.

20 use cases

See all E-commerce & Price Tools →

eBay Sold Listings Scraper: what things actually sold for, and on what date

Search eBay's sold and completed results and get one row per sale: the price it went for, the currency, what delivery cost, the date it sold, the condition, the buying format, the bid count and where the seller was.

Bring your own eBay sign-in. eBay only shows sold and completed results to a signed-in account, so this takes a session cookie copied out of your own browser. Supply yours and the run works against your account's own limits.

InputA search phrase, plus your own eBay session cookie
OutputOne row per sold listing
Ceiling2,000 listings per run
Account neededYes, your own eBay account, signed in
Price$0.70 per 1,000 sold listings, flat on every plan

Use the English-language marketplaces. On ebay.de, ebay.fr, ebay.it and ebay.es a price written with a decimal comma is read as a whole number, so 12,50 comes back as 1250. The sold date is also only recognised where eBay writes that caption in English. The ones to trust today are ebay.com, ebay.co.uk, ebay.ca, ebay.com.au and ebay.ie.

🔍 What eBay Sold Listings Scraper does

It runs your keywords against eBay's sold and completed search on the marketplace you choose, walks the result pages, and turns each card into a row. Roughly 200 sold listings fit on a page, so three pages is about 600 before your caps bite.

Condition, category, minimum and maximum price go into eBay's own URL, so eBay does that narrowing. The sold-date window and the currency filter are applied here after each card is read, because eBay does not offer them as search parameters.

Pricing is the point of the whole thing. An asking price tells you what somebody hoped for; a sold price tells you what a buyer actually paid, and the sold date tells you when.

📥 What you give it

{
  "query": "nintendo switch oled",
  "site": "ebay.com",
  "condition": "used",
  "soldFrom": "2026-08-01",
  "minPrice": 100,
  "maxItems": 500,
  "maxPages": 5
}
FieldDefaultWhat it is
querybox starts at nintendo switchKeywords to search sold listings for. Leave it empty and you get one labelled sample row instead of a real run.
sessionCookienoneYour own eBay session, stored encrypted. See below.
siteebay.comWhich marketplace. Prices and dates come back in that site's currency and format.
conditionanynew, open box, refurbished, used or parts.
categoryIdnoneAn eBay category id to search inside, for example 625 for cameras.
minPrice, maxPricenonePrice bounds. Sent to eBay and re-checked on each parsed price.
currencyanyKeep only listings priced in this currency, such as USD. Useful where a marketplace mixes them.
soldFrom, soldTononeA sold-date window, applied after each card is read.
maxItems120Unique listings to return, up to 2,000.
maxPages3Result pages to walk, up to 20.
requestTimeoutSecs30Limit on each request, 5 to 60 seconds.
maxSessions8How many attempts a single page gets before the run reports it as blocked.
proxyConfigurationnoneOptional. Supply proxyUrls to send the run out through your own servers.

Getting your session cookie. Sign in to the same marketplace you are going to search. Open your browser's developer tools, go to the Network tab, reload the page, click the first request in the list, and copy the whole Cookie request header. Paste all of it, not the few cookies that look important. It is stored encrypted, sent only to eBay, and never written to the log or into a row.

A session goes stale after a while, so a saved task will eventually start reporting EBAY_SESSION_REJECTED and needs a fresh paste. Use a cookie from the same marketplace you are searching: a ebay.com session will not open ebay.co.uk sold results.

📤 What you get back

A real row from a recent run:

{
  "ok": true,
  "_sample": false,
  "itemId": "167400197636",
  "title": "ANODYNE 2: RETURN TO DUST( Nintendo Switch) (Brand New/Sealed) LRG Ships Now!",
  "listingUrl": "https://www.ebay.com/itm/167400197636",
  "salePrice": 28.98,
  "currency": "USD",
  "shippingCost": 8.62,
  "shippingText": "+$8.62 delivery in 2-4 days",
  "soldDate": "2026-09-13T00:00:00.000Z",
  "soldDateText": "Sep 13, 2026",
  "condition": "Nintendo Switch",
  "buyingFormat": "Buy It Now",
  "bids": null,
  "itemLocation": "United States",
  "imageUrl": "https://i.ebayimg.com/images/g/~qQAAeSwEWVn4dUS/s-l300.jpg",
  "page": 1,
  "source": "ebay.com",
  "scrapedAt": "2026-09-14T05:42:55.861Z"
}
FieldWhat it is
salePriceWhat it sold for, as a number, with currency beside it. Delivery is separate.
shippingCostA number, and 0 where the card said free. shippingText keeps eBay's own wording.
soldDateAn ISO date. soldDateText keeps the card's original label.
conditionThe first subtitle line on the card. eBay sellers use that line loosely, as the row above shows, so it is not always a condition.
bidsThe bid count on auction listings, null on Buy It Now.
buyingFormatBuy It Now, Auction and so on. Worth splitting on before you average anything.
itemIdeBay's listing id. Use it to dedupe across runs.

🧾 Reading the output

Three kinds of row can land in your dataset.

RowHow to spot itCharged
A sold listing_sample: false and an itemIdyes
The sample row_sample: trueno
A diagnostic_diagnostic: true and an errorCodeno

Filter on _sample and _diagnostic, not on ok. The sample row carries ok: true too.

CodeWhat it means
EBAY_LOGIN_REQUIREDNo session was supplied, or the paste could not be read as cookies.
EBAY_SESSION_REJECTEDA session was supplied and eBay would not accept it. Usually expired, or from a different marketplace.
EBAY_BLOCKEDeBay would not serve that page after repeated attempts. Try again later, or ask for fewer pages.
NO_LISTINGSThat page held no sold listings. Normal once you page past the end of the results.
NO_MATCHESeBay returned sold listings and none of them passed your price, date, currency or condition filters.

A run that hits the sign-in wall and gets no listings ends as failed, on purpose. A green run with an empty dataset would read as "nothing matched", which would be the wrong thing to believe.

▶️ How to run it

1. Sign in to the eBay marketplace you want, in your own browser. 2. Open eBay Sold Listings Scraper and click Try for free. 3. Type your keywords into Search query and pick the matching eBay marketplace. 4. Paste your Cookie header into Your eBay session cookie. 5. Set Maximum listings, click Start, then download the dataset as JSON, CSV or Excel.

💰 How much does it cost?

$0.70 per 1,000 sold listings. Flat on every Apify plan, no volume tiers.

You pay per sold listing delivered. The sample row, diagnostic rows, listings already seen in the same run and listings dropped by your price, date, currency or condition filters are all free.

💡 What people use it for

  • Pricing something before listing it, using what the same thing actually went for last month.
  • Tracking a collectible or a used model over time, with soldFrom moved forward on each run.
  • Comparing auction results against Buy It Now on the same item, by splitting on buyingFormat.
  • Checking whether a supplier's cost leaves room, once delivery and the real sold price are in front

of you.

  • Feeding a model real transaction prices instead of asking prices.

🚧 What it does not do

  • It cannot read sold results signed out. That is eBay's rule and it applies to everybody.
  • Roughly 90 days of history. That is how far back eBay's sold search goes, not a cap here.
  • No seller name and no feedback score. Those are not on the sold search cards.
  • No item specifics. No size, no model number, no condition description beyond the one subtitle.
  • The decimal-comma marketplaces misread prices, as described at the top.
  • condition is whatever the seller put in the subtitle, which is often not a condition at all.
  • Nothing is delivered until the last page is read. A run stopped partway through writes no

listing rows.

  • Sold does not always mean paid. eBay counts a completed sale, and a buyer can still fail to pay.
  • No bidding, buying or messaging. It reads results, nothing more.

🧭 Which marketplace scraper do you need?

If you wantUse
eBay sold prices and sold datesThis one
Live Amazon product listings and pricesAmazon Scraper
What is selling on Amazon right nowAmazon Bestsellers Scraper
Second-hand listings on Facebook MarketplaceFacebook Marketplace Scraper
A price and stock watch on specific product pagesProduct Price & Stock Monitor

❓ Questions people ask

Why does it want a cookie? eBay closed sold and completed search to signed-out visitors. Supplying your own session means the run works against your account's limits.

Is my cookie safe? It is an encrypted input field. It goes to eBay and nowhere else, and it never lands in the log or in a row. Do not put it in a task you intend to publish, since a published task's input is readable by anyone.

How often do I need a new one? Whenever you start seeing EBAY_SESSION_REJECTED. eBay decides that, not the actor.

Can I search a specific seller's sold items? Not as a field. Put the seller's name in the query and check the rows, or use a category id to narrow it.

Why did I get fewer rows than I asked for? Either eBay ran out of sold results, or your date, currency or price filters dropped them after they were read. Those drops are free.

Is this legal? These are public search results, read with your own account exactly as your browser would. Your eBay account is still subject to eBay's own terms, so keep the volume sane. Apify's write-up on scraping and the law is a good starting point, and we are not lawyers.

🆘 If something breaks

Open the Issues tab on the actor page. Send the run ID, the marketplace and the query. Never send your cookie. The errorCode on the diagnostic row usually names the problem on its own.