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

Search eBay sold and completed listings: sale price, currency, shipping, sold date, condition, buying format, bids and location as rows. Nine marketplaces, no eBay API key, no browser. $0.70 per 1,000 - the lowest per-listing price of any eBay scraper on Apify with an active user base.

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

2

Total users

1

Monthly active users

3 days ago

Last modified

Share

eBay Sold Listings Scraper — sold comps API, no eBay key

Search eBay's sold and completed listings and get them back as rows: item id, title, sale price, currency, shipping cost, sold date, condition, buying format, seller location and image.

This is what you use to price something. What did this actually sell for, how many times, at what spread, in the last N days.

No eBay developer account, no OAuth, no browser.

Output

FieldNotes
itemId, title, listingUrlthe listing
salePrice, currencythe price it sold for, parsed to a number, plus the marketplace currency
shippingCost, shippingTextshipping parsed to a number; Free delivery becomes 0. shippingText keeps eBay's raw string
soldDate, soldDateTextISO timestamp and eBay's own label ("Aug 9, 2026" / "10 Aug 2026")
condition"Pre-Owned", "Brand New", "Open Box", "Parts Only", "Very Good - Refurbished" …
buyingFormat"Buy It Now", "or Best Offer", "Best offer accepted", "4 bids"
bidsnumber of bids, when the listing was an auction
itemLocationwhere the seller shipped from
imageUrlthe gallery thumbnail URL (the image is not downloaded)
page, source, scrapedAtprovenance

Measured field coverage

Measured on a real 300-row platform run on 2026-08-10: query nintendo switch, 2 pages, ebay.com. 300/300 rows real, 0 diagnostics, 54 s.

FieldFilled
itemId, title, listingUrl, salePrice, currency, soldDate, soldDateText, condition, buyingFormat, itemLocation, imageUrl100%
shippingCost, shippingText99.7%
bids19.0%

bids is only present on auction listings — 19% of that sample. No column was empty on every row. Median sale price in the sample: $126.75.

Input

  • query — keywords. Leave it empty and you get one labelled, uncharged sample row.
  • siteebay.com, .ca, .co.uk, .de, .com.au, .fr, .it, .es, .ie.
  • categoryId — eBay category ID (e.g. 625 for cameras). Verified to change results.
  • conditionnew, open box, refurbished, used, parts. eBay applies it server-side.
  • minPrice / maxPrice — applied by eBay and re-checked on the parsed price.
  • soldFrom / soldTo — date window, applied after parsing.
  • currency — keep only listings in one currency.
  • maxItems (default 120), maxPages (default 3, ~200 listings per page), maxSessions (default 8), requestTimeoutSecs.
  • proxyConfiguration — optional; leave it empty for the tuned default.

Every filter above was run live before being documented. Rows a filter drops are neither returned nor charged.

How it gets past eBay's block, and what it cost to find out

Two independent things were wrong with the previous build, and both are measured, not guessed.

1. The fingerprint. Through Apify datacenter exits, impit's Chrome profile 403s on every session and Firefox does too. ios18 is the profile eBay accepts. firefox144 is the worst of both worlds — HTTP 200 with a 14 KB interstitial and zero listings.

2. The cookie warm-up. Even on ios18, hitting the search URL cold gave 2 clean pages out of 12. Fetching https://www.ebay.com/ first, keeping its ~14 cookies, then requesting the search page with a same-origin referer gave 6 out of 6, and the same warmed session then paginated three deep without a single refusal. impit has no cookie jar by default, so this is not optional.

A session that starts refusing is thrown away and a new one warmed on a new address — a burned eBay session stays burned. Interstitials arrive as HTTP 200 with a small body, so the actor judges the body content, never the status code.

The old parser also looked for .s-item__title. eBay now emits .s-card__title, so even an unblocked page would have parsed to zero rows. Both are handled.

Billing

$0.70 per 1,000 sold listings ($0.0007 each), plus $0.001 each time a run starts — the lowest per-listing price of any eBay scraper on the Apify Store with an active user base; the next cheapest, automation-lab/ebay-scraper (147 monthly users), is $0.84 per 1,000 even on its cheapest volume tier.

Pay per event, event name listing. One event per unique real listing. Duplicates across pages are charged once. Never charged: the empty-input sample, filtered-out rows, EBAY_BLOCKED, NO_LISTINGS and NO_MATCHES diagnostics.

Verified on 2026-08-10 against the Apify Store API. Among sold-listing scrapers specifically, caffein.dev/ebay-sold-listings (455 monthly users) is $2.50 per 1,000 on its cheapest tier and sync-network/ebay-sold-listings-scraper is $2.00. This actor is below all of them. Every rival figure quoted here is that actor's lowest volume tier, not the headline price a free account sees.

What this does not do

  • No seller username or feedback score. eBay removed those from the search-result card; this actor will not fabricate them. Use a seller-profile scraper if you need them.
  • No per-item detail pages, so no item specifics, description HTML, or full photo set.
  • No live/active listings — this is the sold and completed view only.
  • No eBay API, no OAuth, no application key.
  • No residential proxy.
  • eBay caps a search at roughly 200 listings per page; very deep pagination eventually stops returning new items and the actor writes an uncharged NO_LISTINGS row rather than looping.

FAQ

How do I find what something sold for on eBay? Put the product name in query, set soldFrom to the start of the window you care about, and read salePrice and soldDate from each row.

How many sold listings per run? About 200 per page. maxPages up to 20, maxItems up to 2,000. A 300-row run took 54 seconds.

Do I need an eBay API key? No. Nothing to register, nothing to authorise.

Can I search a non-US eBay site? Yes — set site. Prices come back in that marketplace's currency and soldDateText in its date format; soldDate is normalised to ISO either way. Note that non-US sites publish fewer attributes, so condition is much sparser there than the 100% measured on ebay.com.

Does it include shipping in the price? No. salePrice is the item price and shippingCost is separate, so you can add them yourself or compare item-only prices.

What happens if eBay blocks it? Each page gets up to maxSessions freshly warmed sessions on new addresses. If all of them are refused you get one uncharged EBAY_BLOCKED row saying so, and zero listing charges.

Is the sample row charged? No. Empty input returns one _sample: true row and zero billable events.