eBay Sold Listings Scraper - Sold Prices & Dates avatar

eBay Sold Listings Scraper - Sold Prices & Dates

Pricing

from $2.25 / 1,000 sold listing saveds

Go to Apify Store
eBay Sold Listings Scraper - Sold Prices & Dates

eBay Sold Listings Scraper - Sold Prices & Dates

Get eBay sold and completed listings by keyword: sold price, sale date, shipping, condition, bids, listing type and photo. Use your own eBay session or your own key from a sold-data API. 8 eBay sites.

Pricing

from $2.25 / 1,000 sold listing saveds

Rating

0.0

(0)

Developer

Cliqto Media

Cliqto Media

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

18 hours ago

Last modified

Categories

Share

Get eBay sold and completed listings by keyword: the real sold price, sale date, shipping, condition, bids, listing type, photo and item link, from 8 eBay sites. eBay shows sold results only to signed-in users, so you choose the access: your own eBay session (cookies from your browser) or your own key from a sold-data API.

A first run with the prefilled search iphone 13 and your eBay session saves 20 sold listings in about 10 seconds and costs about $0.10. Without your cookies or an API key the run stops at once with a message about what to paste (you pay only the $0.005 start).

eBay Sold Listings Scraper: search eBay sold listings by keyword and get sold price, sale date, condition, bids and listing type, using your eBay session or your own API key

Table of contents

What it does

You give one or more search words, like you type them on eBay. The Actor opens the eBay Sold items search for each word and saves one row for every sold listing: price, sale date, shipping, condition, number of bids, listing type, photo and link. You can filter by price, condition, buying format and sale date.

eBay shows sold listings only to signed-in visitors. The Actor does not create accounts and does not sign in for you. It reads the data in one of two ways:

Data sourceHow it worksWho pays the dataeBay sites
My eBay session (default)You paste the cookies and User-Agent of your own browser where you are signed in to eBay. The Actor reads the eBay sold search pages with your session.Free (only this Actor's price)all 8
Your API keyYou paste your own key from one of 5 sold-data services. The Actor calls that service and turns its answer into the same rows.You pay the service directlysee the table

Good fit

  • Resellers and flippers: check what an item really sold for before you buy or list it.
  • Price research and appraisal: collect recent sold prices for a model, with condition and date.
  • Market analysts: compare auction and Buy It Now prices, or watch how prices change week by week with a schedule.

Not a fit / limits

  • Only sold and completed listings. For active listings use eBay search or another Actor.
  • eBay shows mostly the last 90 days of sales; a few older sales can appear. You cannot ask for older periods.
  • With your eBay session, the seller name is not shown on eBay's sold result cards, so seller is null. Paid shipping is often not shown either; then shipping is null (it is 0 for free shipping). Some API sources return them.
  • We tested your eBay session live on ebay.com, and API keys live on ebay.com, ebay.co.uk and ebay.de. The other sites use the same page format but were not tested live with a session.
  • For an accepted best offer, eBay hides the real amount. The row shows the listed price and priceType = best_offer_listed.
  • The field names are this Actor's own. They are not the same as other eBay sold Actors, so check your integration after you switch.

Quick start

  1. Open the Input tab. The search iphone 13, the site ebay.com (US) and Max sold listings per query = 20 are already filled in.
  2. Keep Data source = My eBay session. Paste your eBay cookies and your browser User-Agent (see the guide). Or pick an API service and paste your API key.
  3. Click Start.
  4. Open the Output tab. You see the Sold listings table with title, sold price, date, condition and type.

Expected result: 20 rows of sold iPhone listings from ebay.com, mostly newest sales first.

How to get your eBay cookies and User-Agent

How to get eBay cookies and User-Agent: sign in to eBay, export cookies as JSON with Cookie-Editor, copy the User-Agent from chrome://version, paste both into the Actor

Use the browser where you are already signed in to the eBay site that you want to search (for example ebay.com). The cookies and the User-Agent must come from the same browser.

Cookies

  1. Install the free Cookie-Editor extension: Chrome, Firefox, Edge.
  2. Open the eBay site (for example https://www.ebay.com) and check that you see your name at the top: you are signed in.
  3. Click the Cookie-Editor icon in the toolbar.
  4. Click Export at the bottom, then JSON. The cookies are now copied.
  5. In the Actor input, paste them into eBay cookies (ebayCookies).

User-Agent

  1. In the same Chrome, open chrome://version in the address bar.
  2. Copy the full User agent line, for example Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/….
  3. In Firefox or Safari, open a "what is my user agent" page and copy the text.
  4. Paste it into Browser User-Agent (userAgent).

Keep your session safe

  • Both fields are secret: Apify stores them encrypted. The Actor deletes its copy of the input when the run starts and never writes cookies to the log or the results.
  • The Actor only reads search pages. It never buys, bids, sends messages or changes your account.
  • It reads one page at a time with 2.5–5 seconds between pages and 6–12 seconds before each new search, from one residential IP in the site's country.
  • Automated reading can still make eBay show a security check (captcha) or sign you out. Use a modest number of searches per run (we tested up to 20). If eBay shows a check, the run stops at once to protect the account. Use it at your own risk.
  • Cookies expire. When eBay signs you out, export them again.
  • eBay's User Agreement limits automated access to its site. You decide whether to use your account this way and you are responsible for it.

Sold-data API services (bring your own key)

Pick one service, create an account on its site, copy your API key from its dashboard and paste it into API key (apiKey). You pay the service directly; this Actor only adds its own small fee per page (see Pricing). The Actor reads your remaining quota first (where the service shows it) and never asks for more than is left.

Service (dataSource)Free planCheapest paid planRows per requestAbout $ per 1000 rowseBay sitesSign up
CompSniper (compsniper)100 requests / month$9 / month for 2,000 requestsup to 240$0.02–0.08all 8pricing, sign up
trawl (trawl)250 credits / month$20 / month for 3,000 creditsup to 100 per creditabout $0.07com, co.ukpricing, sign up
OpenWebNinja (openwebninja)100 requests / month$25 / month for 10,000 requests, or $0.005 per requestup to 60about $0.04–0.08all 8pricing
eBay Sold Listings API (esl)50 requests / month$9.99 / month for 3,000 requestsup to 240 (we saw 24–60)$0.01–0.14all 8pricing, sign in
SoldComps (soldcomps)100 requests / month$9 / month for 2,000 requests, or $3 per 1,000 requestsup to 240$0.01–0.02all 8pricing, sign up

Prices as of October 15, 2026, when this Actor was prepared. Check the current prices on the provider's site. Each service has its own terms of use, and some (for example SoldComps and OpenWebNinja) limit reselling or bulk export of their data. Read them before you use the data in your product.

How to get a key (same idea for every service): sign up on the service's site → open its dashboard or API keys page → create or copy the key → paste it into apiKey and choose the same service in Data source.

Use cases

Buyer jobInputOutputKey fieldsNext step
Price check before buying or listingqueries: one model, maxItems: 50sold listingssoldPrice, condition, soldAtmedian price in a spreadsheet
Auction vs fixed pricebuyingFormat: auction or buy_it_nowsold listingslistingType, bids, soldPricecompare two runs
Weekly price trackingsoldWithinDays: 7, a schedulesold listings of the last weeksoldAt, soldPrice, itemIdGoogle Sheets or a webhook
Clean list for one exact modelstrictTitleMatch: true, minPriceonly matching titlestitle, soldPrice, epidyour pricing tool via API

Input

Input fields

FieldPlain nameTypeRequiredDefault / prefillAllowed valuesWhat it changesRecommendation
queriesSearch queriesarray of stringsyesprefill ["iphone 13"]1–20 searchesone eBay sold search per line; repeated lines are removedshort, specific words, like on eBay
siteeBay sitestringnocomcom, co.uk, de, fr, it, es, ca, com.aumarketplace and currencythe site whose cookies you pasted
maxItemsMax sold listings per queryintegernodefault 100, prefill 201–2000stops each search after this many saved rowsstart small; each row is paid
soldWithinDaysSold within the last N daysintegernoempty = all eBay shows1–90keeps only recent sales; stops paging when sales get older7 or 30 for fresh prices
conditionConditionstringnoanyany, new, usedeBay condition filterused for resale prices
minPriceMin pricenumbernoempty≥ 0, site currencyeBay price filter (without shipping)removes accessories and parts
maxPriceMax pricenumbernoempty≥ 0, site currencyeBay price filter (without shipping)removes bundles
buyingFormatBuying formatstringnoallall, auction, buy_it_nowonly auctions or only fixed priceauction for market value
strictTitleMatchEvery query word must be in the titlebooleannofalsetrue / falsedrops titles that miss any query wordturn on for exact models
dataSourceData sourcestringnoebayCookiesebayCookies, compsniper, trawl, openwebninja, esl, soldcompswhere the data comes fromsee the table above
ebayCookieseBay cookiessecret stringfor ebayCookiesemptyCookie-Editor JSON exportyour eBay sessionexport again when expired
userAgentBrowser User-Agentsecret stringfor ebayCookiesemptyfull User-Agent textmust match the browser of the cookiescopy from chrome://version
apiKeyAPI keysecret stringfor an API sourceemptyyour key from that servicethe service you paycheck your plan's quota first

Empty input: the run stops with a clear message if queries is empty, or if the cookies, User-Agent or API key for the chosen source is missing.

Interacting settings

WhenSettingsWhat happensCost effect
Filters drop rowsminPrice, maxPrice, condition, buyingFormateBay (or the API) filters before sending the pagefewer rows; each page read is still charged
Date windowsoldWithinDays + maxItemsstops at whichever comes firstold pages are not read
Exact titlesstrictTitleMatchrows are dropped after the page is readfewer paid rows, same pages
Cookies and siteebayCookies + sitethe cookies must be from the same eBay sitewrong site → the run stops at once, before any page
API site supportdataSource + sitetrawl covers only com and co.ukother sites → the run stops at once

Input examples

First run (prefill)

{
"queries": ["iphone 13"],
"site": "com",
"maxItems": 20,
"dataSource": "ebayCookies",
"ebayCookies": "[{\"name\":\"...\",\"value\":\"...\",\"domain\":\".ebay.com\"}]",
"userAgent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/… Safari/537.36"
}

Expected: 20 sold iPhone listings from ebay.com. Cost: about $0.097 on the Free plan (1 start + 1 page + 20 rows).

Used auctions of the last week, with your API key

{
"queries": ["nintendo switch oled"],
"site": "com",
"condition": "used",
"buyingFormat": "auction",
"soldWithinDays": 7,
"maxItems": 100,
"dataSource": "compsniper",
"apiKey": "your-own-key"
}

Expected: up to 100 used auction sales from the last 7 days with bids. The service uses your own quota; the Actor checks it first.

Output

Results are in the run's Dataset, view Sold listings. Download as JSON, CSV, Excel or HTML, or read them by API.

Output example

{
"itemId": "920040007475",
"title": "Apple iPhone 13 - 128 GB - Blue (Unlocked)",
"url": "https://www.ebay.com/itm/920040007475",
"soldPrice": 230,
"soldPriceMax": null,
"priceType": "sold",
"currency": "USD",
"shipping": 0,
"totalPrice": 230,
"soldAt": "2026-10-14",
"condition": "Pre-Owned",
"bids": null,
"listingType": "buy_it_now",
"bestOfferAccepted": false,
"seller": null,
"sellerFeedbackScore": null,
"sellerPositivePercent": null,
"location": "United States",
"image": "https://i.ebayimg.com/images/g/cokAAeSwholqz9qG/s-l1600.webp",
"epid": "22049282568",
"site": "com",
"query": "iphone 13",
"source": "ebayCookies",
"fetchedAt": "2026-10-15T01:11:41.395Z"
}

One full row from the prefill run with your eBay session. null means eBay or the API did not show that value; it is never a guess.

Output fields

FieldMeaningTypeCan be null?Example
itemIdeBay item numberstringno920040007475
titlelisting titlestringrarelyApple iPhone 13 - 128 GB - Blue (Unlocked)
urlitem page on the chosen sitestringnohttps://www.ebay.com/itm/920040007475
soldPricesale price without shippingnumberwhen not shown230
soldPriceMaxhighest price of a price range (variation listing)numberyes, if not a rangenull
priceTypesold = price paid; range = variations from soldPrice to soldPriceMax; best_offer_listed = a best offer was accepted below this listed pricestringnosold
currencyISO currency codestringwhen no priceUSD
shippingshipping cost; 0 = free shippingnumberyes, when not shown (often for paid shipping with your eBay session)0
totalPricesoldPrice + shipping when both are knownnumberyes230
soldAtsale (end) date, YYYY-MM-DD; eBay shows no timestringrarely2026-10-14
conditioncondition as on eBaystringyesPre-Owned
bidsnumber of bids for auctionsintegeryes, if not an auction14
listingTypeauction, buy_it_now or best_offerstringyesbuy_it_now
bestOfferAcceptedtrue when eBay marks "Best offer accepted"booleanyes, if unknownfalse
sellerpublic seller usernamestringyes (always null with your eBay session)null
sellerFeedbackScoreseller feedback countintegeryesnull
sellerPositivePercentseller positive feedback %numberyesnull
locationitem locationstringyesUnited States
imagemain photo URLstringyeshttps://i.ebayimg.com/…/s-l1600.webp
epideBay catalog product idstringyes22049282568
siteeBay site searchedstringnocom
querysearch that found the rowstringnoiphone 13
sourcedata source usedstringnoebayCookies
fetchedAtwhen the row was saved (ISO 8601)stringno2026-10-15T01:11:41.395Z

Run summary

Every run also writes a RUN_SUMMARY record in the Key-value store. It shows the status of each search (complete, no_results, error), how many rows were saved or skipped (duplicates, older than soldWithinDays, title mismatch), why the run stopped, the pages read and, for an API source, your quota before and after.

SituationWhat you getWhat to do
Normalrows in the Dataset, status COMPLETEopen the Dataset
No sold listings for the search and filters0 rows, status NO_RESULTS, run Succeededwiden the filters or check the words
Stopped early (your max cost per run, run time limit, API quota)saved rows, status PARTIAL with the reason, run Succeededraise the limit or lower maxItems
Session expired, captcha, wrong key, source downsaved rows (if any), clear error, run Failedsee Troubleshooting

Pricing and limits

This Actor uses pay per event. You pay for what the Actor did; Apify platform usage is included.

EventWhen it is chargedFreeBronzeSilverGold+
Actor startonce per run (per GB of memory; default 1 GB)$0.005$0.005$0.005$0.005
Sold listingeach row saved to the Dataset$0.0036$0.0032$0.0027$0.00225
eBay results pageeach eBay sold search page read with your eBay session (up to 240 listings), even if your filters keep none$0.02$0.02$0.02$0.02
API results pageeach results page read from your API service$0.005$0.005$0.005$0.005

Why a page fee: one eBay page is about 2–4 MB through a residential IP in the site's country. That cost is the same when your filters keep 0 rows. Blocked or failed requests are not charged.

The API services charge you separately with your own key (see their prices above).

Cost examples (Free plan, your eBay session)

RunPagesRowsPrice
Prefill: 1 search, 20 rows120$0.005 + $0.02 + $0.072 = $0.097
1 search, 100 rows1100$0.005 + $0.02 + $0.36 = $0.385
1 search, 1000 rows51000$0.005 + $0.10 + $3.60 = $3.705
5 searches, no sold listings match50$0.005 + $0.10 = $0.105
  • Max cost per run: set it in the run options. The Actor stops before a page or row it cannot pay for, keeps what it saved and ends Succeeded with status PARTIAL.
  • Failed run: you pay only the start and the pages that were really read before the stop.
  • Limits we tested: up to 4000 rows in one run (about 7 minutes) and 20 searches in one run. eBay usually gives about 2000 sold rows per search (9 pages). A run stops reading at 30 minutes and saves a summary.
  • Speed: about 240 rows in 5 seconds; 1000 rows in about 30 seconds (1 GB memory). Each new search waits 6–12 seconds.

API, export and integrations

  • API: start a run with POST https://api.apify.com/v2/acts/cliqtomedia~ebay-sold-listings/runs and the input JSON; read rows from the run's Dataset.
  • Export: JSON, CSV, Excel, XML or HTML from the Output tab.
  • Scheduling: create a Task with your input and add a schedule (for example weekly with soldWithinDays: 7).
  • Webhooks / no-code: send the Dataset to Google Sheets, Make, Zapier or n8n with Apify integrations.

Use with AI agents (MCP)

  • MCP server with only this Actor: https://mcp.apify.com?tools=cliqtomedia/ebay-sold-listings
  • Smallest useful input (the agent also needs the user's secret access fields):
{ "queries": ["iphone 13"], "site": "com", "maxItems": 20, "dataSource": "ebayCookies" }
  • Key output fields: soldPrice (sale price without shipping), currency, soldAt (sale date), condition, listingType (auction, buy_it_now, best_offer).
  • A 20-row run takes about 10 seconds and costs about $0.10 on the Free plan. Keep maxItems small; each row is paid. The run needs the user's own eBay session or API key; without them it stops with a clear message.

Troubleshooting

"eBay asked to sign in: the cookies are expired or signed out"

Symptom: the run fails at the first page. Reason: eBay ended the session, or you exported the cookies while signed out. Action: sign in to the eBay site in your browser, export the cookies again and paste them.

"eBay refused the request or showed a security check (captcha)"

Symptom: the run stops after some pages; saved rows stay in the Dataset. Reason: eBay wants to check that a person is using the account. Action: open the eBay site in the same browser, pass the check, export fresh cookies and keep the same User-Agent. Use fewer searches per run.

"eBay showed active listings instead of sold ones"

Reason: the session is not signed in, so eBay ignored the Sold filter. Action: export the cookies again while signed in.

The cookies are for another site

Symptom: the run fails in 1 second with a message about the site. Action: pick the same site as the eBay site of your cookies, or export cookies from the site you want.

"did not accept your API key" or "has no requests left"

Action: copy the key again from the service dashboard, or top up your plan on the service's pricing page. The Actor checks the quota before it starts and never asks for more than is left.

0 rows with status NO_RESULTS

This is a normal result: eBay has no sold listings for these words and filters in the last 90 days. Remove a filter or use shorter words. You pay the start and the pages read.

FAQ

Do I need an eBay account?

Yes, for the default My eBay session source: eBay shows sold listings only to signed-in users. If you do not want to use your account, use an API service with your own key.

Is it safe for my eBay account?

The Actor only reads search pages, slowly, from one IP in your site's country, and stops at the first security check. It never buys or changes anything. But any automated use can draw eBay's attention, so use it at a modest volume and at your own risk.

Why is shipping or seller empty?

With your eBay session, eBay's sold result cards do not show the seller and often do not show the paid shipping amount. The Actor writes null instead of guessing. Some API sources return them.

How fresh and complete is the data?

Rows come live from eBay (or the API) at run time, mostly newest sales first (eBay's own sort). eBay keeps mostly 90 days of sales and shows at most about 2000 results per search; use narrower words or filters for more.

Why do I see other models (for example iPhone 12) for "iphone 13"?

eBay's own search also returns related items. Turn on strictTitleMatch to keep only titles with every word.

Support

For a bug or a question, open an issue on the Issues tab. Add the run ID, the data source and the error text. Never post cookies, your User-Agent together with cookies, or API keys.