eBay Listings & Prices avatar

eBay Listings & Prices

Pricing

from $1.40 / 1,000 listing scrapeds

Go to Apify Store
eBay Listings & Prices

eBay Listings & Prices

Search eBay and get one flat row per listing: price, currency, shipping, sold date for completed listings, condition, seller feedback, bids, Buy It Now and image.

Pricing

from $1.40 / 1,000 listing scrapeds

Rating

0.0

(0)

Developer

Superslow Sloth

Superslow Sloth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

One search in, one flat table out. Give it keywords - or paste an eBay search URL straight from your browser - and it returns the listings eBay would show you, each with its price and currency, shipping, condition, seller and feedback, bid count, Buy It Now flag, image, and, for completed searches, the date it sold on.

Built to be called by an agent or a script: small input, one row per listing, no nested objects, no HTML.

What it is for

soldOnly: false returns the live listings on sale right now. This is the path that works today, and it is verified on every run of the test suite.

soldOnly: true asks for eBay's completed-listing view - the closest thing to a public record of what things actually sell for, as opposed to what sellers ask. Read the next section before relying on it.

The sold view is currently behind eBay's sign-in wall

Measured 2026-08-25, from a Japanese consumer address, from Apify residential exit addresses in the US, and from a datacenter address, with a warmed session and a real browser TLS fingerprint in every case:

requestanswer
active search, any addressHTTP 200, full results
LH_Sold=1&LH_Complete=1, cold sessionHTTP 200, "Security Measure" / "Pardon Our Interruption"
LH_Sold=1&LH_Complete=1, warmed sessionHTTP 200, "Sign in or Register"

The same wall appears for LH_Sold=1 alone, for LH_Complete=1 alone, on m.ebay.com, and on ebay.de. It is uniform across addresses and it is not a bot check: eBay has put completed listings behind a login.

So soldOnly: true will report a refusal rather than results, and it says which one in the run log. It does not silently return zero listings and charge you for the run's start as if the market were empty - and no row is ever charged for. If eBay reopens the view, this actor reads it with no change: the parser handles the sold caption, and the contract test fails loudly on the day the wall comes down.

Input

fieldmeaning
keywordsWhat you would type into eBay's search box
searchUrlA full eBay search URL instead. Filters already on it - seller, price band, sort - are kept; only paging is driven by the actor. Overrides keywords, site, condition and category
soldOnlytrue for sold and completed listings, false (default) for live ones
siteebay.com, ebay.co.uk or ebay.de
conditionnew, opened_never_used, refurbished, used, for_parts, or an eBay numeric condition code
categoryeBay numeric category id, the _sacat value from a search URL
maxResultsStop after this many listings. eBay serves 240 per page, so anything up to 240 is a single request
proxyConfigurationResidential is required. See below

Output

One item per listing:

fieldmeaning
item_ideBay's listing id
titleListing title, with eBay's "New Listing" badge and screen-reader tail removed
urlCanonical ebay.com/itm/<id> link, query string stripped
priceThe listing price in currency. For an auction, the current bid; for a completed listing, what it ended at
currencyISO 4217
price_textWhat eBay printed, verbatim - useful when a listing is a price range
shipping_costShipping in the same currency. 0.0 only when eBay said the shipping is free
free_shippingWhether eBay said so in as many words
shipping_textThe shipping caption, verbatim
sold_dateISO date the listing sold, completed searches only
sold_date_textThe caption eBay printed for it, verbatim
conditionNew, Pre-Owned, Parts Only, and so on, as eBay labels it
seller_nameeBay user id of the seller
seller_feedback_percentPositive feedback, 0-100
seller_feedback_countFeedback score. eBay abbreviates large ones on the search page ("40.5K"), so this is expanded and approximate above 1,000
bidsBid count. Auctions only
buy_it_nowWhether the listing can be bought outright
image_urlGallery image
query, site, sold_onlyThe search this row came from, echoed onto every row

null is not zero

Almost every field above is nullable, and that is deliberate. eBay's search page is one template rendering several kinds of listing: an auction has bids and no Buy It Now, a fixed-price listing has the reverse, a completed listing carries a sold date and a live one never does, and a seller who ships free prints no shipping figure. A 0 in any of those places would read as a measurement - "free shipping", "no bids" - when the truth is that eBay did not say. So:

  • bids is null on a fixed-price listing, never 0.
  • shipping_cost is null when eBay printed no shipping line, and 0.0 only when it printed "Free shipping".
  • sold_date is null on every row of an active search, and null on a completed one whose caption could not be read as a date - in which case sold_date_text still holds the words eBay printed.

Currency follows the exit address, not the seller

eBay converts prices for whoever is looking. A residential proxy exiting in Japan sees JPY 21,154 on a US listing priced in dollars. Every row therefore carries the currency it was quoted in; do not assume the site's home currency. To pin the currency, pin the proxy country in proxyConfiguration.

The proxy is not optional

Measured 2026-08-25:

  • plain HTTP clients get 403 from eBay's search page regardless of headers. This actor uses a client that presents a real browser's TLS fingerprint, which gets 200.
  • the sold and completed view is guarded harder than the active one. From a datacenter address, a sold search returns eBay's bot check ("Pardon Our Interruption") or a sign-in wall, while the identical active search returns full results.

So the actor defaults to RESIDENTIAL and rotates to a new exit address on each retry rather than re-asking from a refused one. Running it with no proxy, or on datacenter addresses, will produce a refusal rather than a wrong answer - the run log names which one.

Billing

Pay per event: one small actor-start charge once the input has parsed, then one listing-scraped charge per row written. A search that legitimately matches nothing costs the start event and nothing else, and an item repeated across eBay's page boundaries is charged once.