eBay Sold Listings Scraper — Completed Sales & Sold Prices avatar

eBay Sold Listings Scraper — Completed Sales & Sold Prices

Pricing

$3.50 / 1,000 sold listings

Go to Apify Store
eBay Sold Listings Scraper — Completed Sales & Sold Prices

eBay Sold Listings Scraper — Completed Sales & Sold Prices

Scrape eBay sold listings and completed sale prices by keyword. Export sold date, condition, shipping, seller feedback across 20+ regional sites. Fast curl_cffi scraper — no browser, residential proxy ready.

Pricing

$3.50 / 1,000 sold listings

Rating

0.0

(0)

Developer

Andrej Kiva

Andrej Kiva

Maintained by Community

Actor stats

0

Bookmarked

17

Total users

10

Monthly active users

14 hours ago

Last modified

Share

Disclaimer: Unofficial integration for publicly accessible eBay completed (sold) listings. eBay and related names are trademarks of eBay Inc. Not affiliated with, sponsored by, or endorsed by eBay Inc. Provided for informational and research purposes only.

Scrape eBay sold listings and completed sale prices by keyword across 20+ regional marketplaces. Export sold price, sold date, shipping, condition, listing type, and seller feedback as clean JSON — ideal for resale arbitrage, sold comps, market pricing, and inventory valuation.

Best for: developers and data teams who want raw sold listing rows for Google Sheets, Airtable, databases, webhooks, and custom analytics pipelines.

Crawloop eBay E-commerce & Resale Suite — live active listings, completed sold comps, and pricing intelligence.

Active listingsSold listingsPricing intelligence
eBay Active Listings ScrapereBay Sold Listings Scraper ◄── you are hereeBay Sold Price Intelligence
Live listings, BIN/auction, watchers, competitionCompleted sales, raw sold rows, sold datesRecommended price, demand score, CSV/report

When to use this Actor

  • eBay sold price lookup — real completed sales from the last 1–90 days
  • Resale & arbitrage research — sneakers, GPUs, collectibles, vintage, electronics comps
  • Competitive pricing datasets — sold prices per keyword, category, and marketplace
  • Seller intelligence — filter sellers, track feedback, focus on organic sales
  • Multi-market analysis — same keyword on ebay.com, ebay.de, or ebay.co.uk in parallel

When not to use this Actor

Key Features

  • Completed sales only — every row includes a sold/end date; sponsored active cards filtered out
  • 20+ eBay sites — US, UK, DE, FR, IT, ES, CA, AU, PL, NL, SG, MY, PH, HK with correct currency parsing
  • Triple layout fallback.s-item, .s-item-card, and .s-card search layouts
  • Lightweight & fastcurl_cffi Chrome TLS impersonation, no browser automation
  • Rich sold data — price (string + numeric), shipping, total, bids count, condition ID, auction/BIN/best offer, seller type
  • Paste sold search URLsstartUrls reads keyword and filters from a browser Sold+Completed link
  • Advanced filters — date window, price range, condition, listing type, free shipping, seller blocklist
  • Deduped batch runs — optional itemId dedupe across keywords/URLs to avoid double PPE charges
  • Proxy-ready — Apify Residential Proxies recommended for US/UK; sticky session per search job
  • Sold-search fallback — when eBay gates Sold/Completed SRP behind sign-in, the Actor discovers candidate item IDs via public search engines and scrapes sold item pages (source: "pdp_fallback"). Volume depends on SERP coverage; use broader keywords / higher daysToScrape for larger pulls.

Input Parameters

ParameterTypeDefaultDescription
keywordsArraySearch queries; each runs in parallel (required if no startUrls)
startUrlsArrayPasted eBay Sold/Completed search URLs (filters + site parsed from each URL)
daysToScrapeInteger30Completed sales lookback (1–90 days)
countInteger100Max sold listings per keyword/URL
dedupeItemIdsBooleantrueSkip duplicate itemId across jobs in the same run
ebaySiteString"ebay.com"Regional eBay domain (for keyword jobs)
itemConditionString"any"any, new, used, refurbished
listingTypeString"any"any, auction, buy_it_now
freeShippingOnlyBooleanfalseFree shipping filter (LH_FS on eBay)
excludeSellersArray[]Seller usernames to skip
categoryIdString"0"eBay category (0 = all)
minPrice / maxPriceNumberSold price range
sortOrderString"endedRecently"Sort sold results
proxyConfigurationObjectResidentialApify Proxy settings

Input Example

{
"keywords": ["nike air max", "rtx 4080"],
"daysToScrape": 14,
"count": 100,
"ebaySite": "ebay.de",
"itemCondition": "used",
"listingType": "auction",
"dedupeItemIds": true,
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "DE"
}
}

Input from a sold search URL

{
"startUrls": [
"https://www.ebay.com/sch/i.html?_nkw=rtx+4080&LH_Sold=1&LH_Complete=1&_udlo=500"
],
"daysToScrape": 30,
"count": 50
}

Output Format

Each dataset row = one completed eBay sale.

FieldDescription
itemIdeBay listing ID
titleListing title
soldPrice / soldPriceValueFinal sold price (string + numeric)
soldCurrencyCurrency code
totalPrice / totalPriceValueSold price + shipping
endedAtSale end time (UTC ISO 8601)
condition / conditionIdLocalized label + normalized code
listingTypebuy_it_now, auction, best_offer_accepted
bidsCountAuction bid count when available
shippingPrice / shippingPriceValue / shippingTypeShipping cost and type
sellerUsername / sellerFeedbackScoreSeller profile
keywordSearch query that found this sale
urlClean item URL

Output Example

{
"itemId": "377309614758",
"title": "ASUS TUF Gaming GeForce RTX 3080 OC 10GB GDDR6 - FAULTY",
"soldPrice": "163.34",
"soldPriceValue": 163.34,
"soldCurrency": "EUR",
"endedAt": "2026-07-02T12:00:00.000Z",
"listingType": "auction",
"bidsCount": 15,
"totalPrice": "179.33",
"totalPriceValue": 179.33,
"keyword": "rtx 3080"
}

Supported eBay marketplaces

ebay.com · ebay.co.uk · ebay.de · ebay.fr · ebay.it · ebay.es · ebay.ca · ebay.com.au · ebay.at · ebay.ch · ebay.ie · ebay.pl · ebay.nl · ebay.be · ebay.com.sg · ebay.com.my · ebay.ph · ebay.com.hk

Use Cases

Use CaseWhat you get
Sold comps for resaleHistorical sold prices for flips and liquidation buys
Market pricing data30/60/90-day sold price bands per keyword
Category researchSold data by categoryId and condition
Cross-border pricingSame keyword on .com vs .de with local currency
Custom analyticsFeed raw JSON into your own pricing models
AI / MCP workflowsRun via Apify API, clients, or MCP and summarize sold comps

Integration examples

Node.js

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: process.env.APIFY_TOKEN });
const run = await client.actor('crawloop/ebay-sold-listings-scraper').call({
keywords: ['rtx 4080'],
daysToScrape: 30,
count: 100,
ebaySite: 'ebay.com',
proxyConfiguration: {
useApifyProxy: true,
apifyProxyGroups: ['RESIDENTIAL'],
apifyProxyCountry: 'US',
},
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items.slice(0, 5));

Python

from apify_client import ApifyClient
client = ApifyClient(token)
run = client.actor("crawloop/ebay-sold-listings-scraper").call(
run_input={
"keywords": ["nike air max", "rtx 4080"],
"daysToScrape": 14,
"count": 100,
"ebaySite": "ebay.de",
"itemCondition": "used",
"dedupeItemIds": True,
"proxyConfiguration": {
"useApifyProxy": True,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "DE",
},
}
)
items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
print(len(items), items[:3])

cURL

curl "https://api.apify.com/v2/acts/crawloop~ebay-sold-listings-scraper/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"keywords": ["rtx 4080"],
"daysToScrape": 30,
"count": 50,
"ebaySite": "ebay.com",
"proxyConfiguration": {
"useApifyProxy": true,
"apifyProxyGroups": ["RESIDENTIAL"],
"apifyProxyCountry": "US"
}
}'

MCP and AI assistants

Use this Actor from AI tools via Apify MCP. Connect your Apify account, then call crawloop/ebay-sold-listings-scraper.

Example prompts:

  • "Run eBay Sold Listings Scraper for rtx 4080 on ebay.com, last 30 days, max 100 rows, and return soldPrice, endedAt, and condition as JSON"
  • "Scrape eBay sold listings for nike air max on ebay.de and summarize the median sold price"
  • "Chain eBay Sold Listings Scraper then eBay Sold Price Intelligence for iPhone 13 Pro and return the recommended listing price"

Suite next step

For recommended list price, demand level, and CSV/Markdown reports, run eBay Sold Price Intelligence on the same keyword. For live competition, use eBay Active Listings Scraper.

FAQ

How is this different from Sold Price Intelligence?

This Actor returns raw sold listing rows. eBay Sold Price Intelligence adds recommended price, demand scoring, confidence, and ready-made CSV/Markdown reports.

How is this different from the Active Listings Scraper?

eBay Active Listings Scraper returns live listings with current ask prices. This Actor uses eBay's Sold + Completed filter — every row is a finished transaction.

Do I need proxies?

Residential proxies are recommended for US and UK. European domains often work with datacenter proxies. Defaults to geo-targeted Apify Residential Proxy per marketplace.

Can I scrape multiple keywords at once?

Yes — pass an array in keywords; each query runs in parallel with the same filters. Duplicate itemIds across keywords are skipped by default (dedupeItemIds).

Can I paste an eBay search URL?

Yes — use startUrls with a Sold/Completed search link. The Actor reads the keyword, site, and filters from the URL.

How far back can I scrape?

daysToScrape from 1 to 90. Pagination stops after consecutive out-of-range items when sorted by ended recently.

Best Offer accepted prices

For Best Offer Accepted rows, eBay often shows the asking price on the search card — not the private accepted offer amount. listingType / isBestOfferAccepted still mark those sales.

ActorUse for
eBay Active Listings ScraperLive ask prices, watchers, competition
eBay Sold Listings Scraper ◄── you are hereRaw completed sales / sold comps
eBay Sold Price IntelligenceRecommended price, demand, CSV/report