eBay Product & Sold Scraper
Pricing
Pay per usage
eBay Product & Sold Scraper
Scrape eBay search results, listing details, and SOLD/completed listing history. Built-in price-band partitioning to break past the 10-page (600-result) cap. Confirmed sold prices, not asking prices.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Crikit
Maintained by CommunityActor stats
0
Bookmarked
65
Total users
21
Monthly active users
7 hours ago
Last modified
Categories
Share
Scrape eBay listings and sold prices. This eBay scraper covers active search results, full listing detail, and — most importantly — SOLD and completed listing history with confirmed sale prices rather than asking prices. Built-in price-band partitioning breaks past eBay's 10-page, 600-result ceiling.
No eBay API key, no login, and no headless browser. Results land in a structured dataset you can export to JSON, CSV, Excel, or XML, or pull straight from the Apify API.
What is eBay Product & Sold Scraper?
eBay Product & Sold Scraper is an Apify Actor that extracts search results, listing details, and sold history from eBay and returns them as clean, structured records. Sold data is what makes eBay valuable for pricing. An asking price tells you what a seller hopes for; a sold price tells you what the market actually paid, and that is the number resale and arbitrage decisions need.
What data can this eBay scraper extract?
Every run writes one row per listing. The full schema carries 28 fields; the most-used ones are below.
| Field | Type | Description |
|---|---|---|
listingId | string | eBay's numeric listing identifier (data-listingid). 12 digits for single listings; 15 digits for variation groups. |
title | string | Listing title as displayed in search results or detail. |
itemUrl | string | Canonical eBay item URL (https://www.ebay.com/itm/ |
imageUrl | string | Full-resolution primary image (i.ebayimg.com s-l1600.webp variant). |
epid | string | Canonical product taxonomy ID. Listings of the same SKU share an EPID. |
price | number | Numeric USD price. For variations: the lower bound. For 'Best offer accepted' sold listings: null (eBay hides this). |
priceText | string | Raw price string as shown on eBay, including range / approximation / 'Best offer accepted' / foreign-currency markers. |
priceCurrency | string | ISO 4217 code of the native listing currency. |
priceUsdApprox | number | eBay's USD approximation for foreign-currency listings. |
finalPriceHidden | boolean | True for sold listings where eBay shows 'Best offer accepted' instead of the numeric sold price. |
shippingText | string | Shipping cost or 'Free shipping' as displayed. |
soldDate | string | ISO date the listing sold (sold listings only). |
soldDateText | string | Raw 'Sold MMM DD, YYYY' string from the SRP card. |
isSold | boolean | True if this listing is sold/completed. |
isNewListing | boolean | True if eBay tagged this 'New Listing' (posted in the last 24 hrs). |
condition | string | Item condition (New, Pre-Owned, Refurbished, etc.). |
subtitle | string | Card subtitle line (typically combines condition and a carrier/variant note). |
bidCount | integer | Number of bids (auctions only). |
listingType | string | AUCTION / FIXED_PRICE / BEST_OFFER inferred from the card or detail page. |
seller | object | Seller summary parsed from the SRP card. |
searchQuery | string | The input query that produced this result. |
searchUrl | string | The eBay SRP URL where this listing was found. |
See the Output tab in Apify Console for all 28 fields.
How to scrape eBay listings and sold prices
- Open eBay Product & Sold Scraper and click Try for free.
- Add
searchQueries, or paste specificitemUrls. - Set
modeto choose active listings or sold and completed history. - Filter with
condition,listingType,priceMin,priceMax, andsortBy. - Turn on
scrapeItemDetailsfor the full per-listing record, and setmaxResultsPerQuery. - Click Start and watch rows appear live in the Output tab.
- Export the dataset as JSON, CSV, Excel, or XML — or fetch it from the Apify API once the run finishes.
eBay Product & Sold Scraper input options
| Input | Type | What it does | Default |
|---|---|---|---|
searchQueries | array | Keyword searches to run. Each query runs independently. Quotes and minus signs work the same as in the eBay search box. | ["iphone 15 pro"] |
itemUrls | array | Direct eBay item URLs (https://www.ebay.com/itm/) to scrape detail-only, skipping search. Works for active or ended... | |
mode | string | What kind of listings to return. eBay now requires a signed-in account to view sold and completed listings, so... | "active" |
maxResultsPerQuery | integer | Hard cap per query. The eBay SRP itself caps at 600 results per query (10 pages × 60); to exceed, the actor... | 60 |
scrapeItemDetails | boolean | If true, fetch each search hit's detail page for extra fields (condition description, item specifics, shipping,... | false |
condition | string | Filter by item condition. | "any" |
listingType | string | Filter by auction or Buy It Now. | "any" |
priceMin | integer | Lower price bound. | |
priceMax | integer | Upper price bound. | |
sortBy | string | Sort order applied to the eBay search results page. | "recently_ended" |
Proxy is configured through the standard proxyConfiguration object; the defaults shipped with this Actor are already tuned for the target site.
Example output
{"listingId": "a1b2c3d4","title": "Example title","itemUrl": "https://example.com/item/12345","imageUrl": "https://example.com/item/12345","epid": "a1b2c3d4","price": 129.99,"priceText": "Example text ...","priceCurrency": "USD","priceUsdApprox": 129.99,"finalPriceHidden": true,"shippingText": "Example text ...","soldDate": "2026-08-30T12:00:00.000Z","soldDateText": "2026-08-30T12:00:00.000Z","isSold": false,"isNewListing": true,"condition": "...","subtitle": "Example title","bidCount": 1483}
How much does it cost to scrape eBay?
This Actor bills through Apify platform usage (compute units and proxy traffic) rather than a per-result fee. Runs are HTTP-based and lightweight, which keeps compute low. Every Apify account includes free monthly usage credit to trial it.
What can you build with eBay data?
Price resale inventory from real sold comps
Sold prices with dates are the ground truth for what an item is worth today, which is exactly what asking-price data cannot tell you.
Run retail-arbitrage sourcing
Compare eBay sold prices against retail prices from the Walmart, Target, or Best Buy Actors to find items with a genuine spread.
Track sell-through rate for a product category
Active listing counts against sold counts over the same window gives the sell-through ratio that drives inventory decisions.
Build a price guide for collectibles
Condition, sold date, and final price across many sales produce a defensible price guide for graded or collectible goods.
Monitor competitor sellers
Seller fields let you follow what specific sellers list, at what price, and what actually clears.
eBay scraping tips and limits
- eBay caps a single search at roughly 600 results across 10 pages. This Actor partitions by price band to get past that — leave the partitioning in place on broad queries.
isSoldandsoldDateare the fields that matter for comps. Filter on them rather than assuming a sold-mode run contains only sold rows.finalPriceHiddenmarks best-offer sales where eBay withholds the accepted amount. Exclude those rows from price averages or they will drag the mean down.- Narrow queries beat broad ones. 'iPhone 15 Pro 256GB unlocked' produces far more usable comps than 'iPhone'.
Integrations and automation
Run eBay Product & Sold Scraper on a schedule to keep a eBay dataset fresh, or trigger it from your own stack through the Apify API and the official JavaScript and Python clients. Native integrations push results into Google Sheets, Slack, Airtable, Zapier, Make, GitHub, or any webhook endpoint. The Actor also works as an MCP tool, so an AI agent can call it directly.
Related scrapers
| Actor | What it does |
|---|---|
| Poshmark Listings & Sold Comps Scraper | Fashion resale comps with sold prices and dates. |
| Amazon Product Scraper | Amazon retail pricing to compare against eBay resale. |
| Walmart Product Scraper | Walmart retail prices for arbitrage sourcing. |
| Etsy Scraper - Listings, Shops & Search Results | Handmade and vintage listings and shop data. |
Frequently asked questions
Can I scrape eBay sold listings?
Yes, and it is the main reason to use this Actor. Set mode to sold or completed and rows come back with the confirmed final price and the sold date.
How do I get more than 600 results?
Price-band partitioning splits a broad query into narrower price ranges, each of which gets its own result budget. That is how the Actor exceeds eBay's per-search ceiling.
Do I need a eBay API key?
No. eBay Product & Sold Scraper reads publicly available eBay pages and endpoints directly, so there is no key to obtain, no OAuth app to register, and no account to connect.
Can I export eBay data to CSV, Excel, or Google Sheets?
Yes. Every run stores results in an Apify dataset that exports to JSON, JSONL, CSV, Excel, XML, or HTML with one click, and the Google Sheets integration writes rows straight into a spreadsheet.
Can I run eBay Product & Sold Scraper on a schedule?
Yes. Apify schedules run the Actor hourly, daily, weekly, or on any cron expression, and webhooks can notify your systems the moment a run finishes.
Is it legal to scrape eBay?
Scraping publicly available data is broadly lawful in the US and EU, but the answer depends on what you collect and how you use it. This Actor is built to gather public listing and completed-sale information eBay publishes publicly, including seller usernames. Personal data carries extra obligations under GDPR and CCPA. Read Apify's guide on whether web scraping is legal and take your own legal advice for your use case.
Support and feedback
Found a bug, a missing field, or a eBay page shape this Actor does not handle yet? Open an issue from the Issues tab on the Actor page. Feature requests and custom-scraper enquiries are welcome there too.