eBay Sold Listings Scraper avatar

eBay Sold Listings Scraper

Pricing

from $0.70 / 1,000 sold listing returneds

Go to Apify Store
eBay Sold Listings Scraper

eBay Sold Listings Scraper

Get sold and completed eBay listings on nine marketplaces. Each row has the sale price, currency, shipping and sold date. Plus condition, buying format, bids and location. eBay only shows sold results to signed-in accounts. So you paste in your own eBay cookie.

Pricing

from $0.70 / 1,000 sold listing returneds

Rating

0.0

(0)

Developer

Dami's Studio

Dami's Studio

Maintained by Community

Actor stats

0

Bookmarked

4

Total users

2

Monthly active users

2 days ago

Last modified

Share

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.