eBay Sold Listings Scraper - Real Sold Prices & Comps
Pricing
from $12.00 / 1,000 results
eBay Sold Listings Scraper - Real Sold Prices & Comps
Scrape eBay SOLD listings (sold comps) — real transaction prices, sold dates, condition, shipping, seller and images for any keyword. Auto-parses PSA/BGS/CGC/SGC card grades from titles. Uses residential proxies to beat Akamai anti-bot. Filter by sold date, price range, category and condition.
Pricing
from $12.00 / 1,000 results
Rating
0.0
(0)
Developer
lulz bot
Maintained by CommunityActor stats
0
Bookmarked
11
Total users
4
Monthly active users
7 days ago
Last modified
Categories
Share
eBay Price Scraper — SOLD Comps & ACTIVE Listings
Scrape eBay market data for any keyword. This actor returns real value for every user:
- With your eBay cookies → true SOLD comps: real transaction prices, sold dates, condition, shipping, seller — the data resellers, card flippers, and collectibles dealers need for accurate comps.
- Without cookies (default) → current ACTIVE listings: live asking prices,
"X sold"demand counts, and best-offer / auction signals for the same query — still valuable market data, and it always returns rows.
Every row is flagged with a saleType field ("sold" or "active") so you always know which kind of price you got.
How the two modes work
eBay gates all SOLD/COMPLETED listing searches (LH_Sold=1 / LH_Complete=1) behind a login — anonymous sold searches are redirected to signin.ebay.com and return nothing. This affects every eBay sold-comp scraper. To handle that:
| You provide | Mode | What you get | saleType |
|---|---|---|---|
Valid ebayCookies | SOLD | Real sold comps with soldDate | "sold" |
| No cookies | ACTIVE | Current live listings (asking prices) | "active" |
| Expired/invalid cookies | SOLD → auto-fallback to ACTIVE | Current live listings | "active" |
The actor never returns 0 rows for a valid query on a working eBay category — if the sold path is gated, it automatically falls back to active listings.
What you get per item
| Field | Description |
|---|---|
saleType | "sold" (real transaction) or "active" (current live listing) |
itemId | eBay item id |
listingUrl | Direct link to the listing |
title | Listing title |
price | Row price — sold price (sold mode) or current asking price (active mode) |
soldPrice | Kept for back-compat; equals price. On active rows this is the current asking price — check saleType before treating it as a comp |
currency | Currency code (USD, GBP, EUR, CAD, AUD) |
soldDate | ISO date the item sold — populated on sold rows only (null for active) |
soldCount | "X sold" quantity for the listing (active listings; a demand signal) |
condition | Item condition caption |
shippingPrice | Shipping cost (0 if free) |
totalPrice | Price + shipping |
listingType | auction / buy-it-now / best-offer (when detectable) |
bestOffer | Whether the listing shows a Best Offer option |
imageUrl | Thumbnail image |
seller | Seller username (when present) |
gradingCompany | PSA / BGS / CGC / SGC parsed from the title |
grade | Numeric grade (e.g. 10, 9.5) parsed from the title |
certNumber | Grading cert number parsed from the title (when present) |
searchQuery | The keyword that produced this row |
scrapedAt | ISO timestamp of the scrape |
The PSA/BGS/CGC/SGC parsing makes graded-card data directly joinable with population reports and arbitrage tools.
Getting SOLD data (optional — supply cookies)
To get real sold comps instead of active listings:
- Log in to eBay in your browser.
- Export your
.ebay.comcookies — either copy the rawCookie:request header from DevTools (Network tab), or export a JSON cookie array with an extension like EditThisCookie. - Paste it into the
ebayCookiesinput.
Accepted formats:
- Raw header string:
"nonsession=...; ebay=...; s=...; ..." - JSON array:
[{"name":"s","value":"...","domain":".ebay.com"}, ...]
Cookies expire. If they stop authenticating, the actor auto-falls back to active listings (so you still get data) and — if even the fallback returns nothing — emits a COOKIES_INVALID diagnostic. Re-export fresh cookies to restore the sold path.
Input
{"searchQueries": ["charizard psa 10 base set", "iphone 14 pro"],"ebayCookies": "","daysToScrape": 30,"maxResults": 60,"itemsPerPage": 240,"proxyConfiguration": { "useApifyProxy": true, "apifyProxyGroups": ["RESIDENTIAL"] }}
- searchQueries — keywords to search.
- ebayCookies — optional. Empty → active listings. Supplied → sold comps. (See above.)
- daysToScrape — sold mode only: keep items sold in the last N days (1–90; eBay keeps ~90 days of sold data). Ignored for active listings.
- maxResults — cap per keyword.
- category — optional eBay category id (
_sacat). - condition — optional condition filter (
LH_ItemCondition). - minPrice / maxPrice — optional price range (
_udlo/_udhi). - itemsPerPage — 60, 120, or 240 (larger = fewer page loads = fewer proxy hits).
Diagnostics
If a run returns 0 rows it still succeeds (you are never charged for an error) and writes a DIAGNOSTIC key-value record explaining why:
NO_RESULTS— eBay returned nothing for the query (and, where applicable, the active fallback). Try a broader keyword or relax filters.BOT_BLOCKED— eBay served captcha/anti-bot on every attempt. Retry later or with a different residential proxy region.COOKIES_INVALID— supplied cookies didn't authenticate and the active fallback also found nothing. Re-export fresh cookies.
Anti-bot
eBay protects search with Akamai Bot Manager (TLS/JA3 + HTTP/2 fingerprinting + IP reputation) and a sign-in wall on sold listings. Datacenter IPs get HTTP 403 after roughly one request. This actor uses real Chromium (Playwright) + Apify RESIDENTIAL proxies with rotating sessions, fingerprint injection, a homepage warm-up, sequential pagination, and throttling, and injects your ebayCookies (when provided) to authenticate the sold path. Residential proxies are required — run it on the Apify platform.
Notes
- Prices and sold dates come straight from eBay's server-rendered HTML, so there are no extra page loads per item.
- Sold results are sorted recently-ended, so the actor stops paginating a query once it passes your
daysToScrapecutoff. Active results are sorted by best match. - Promotional "Shop on eBay" placeholder cards are filtered out automatically.