eBay Scraper: Sold Prices, Listings, Details & Seller Reviews avatar

eBay Scraper: Sold Prices, Listings, Details & Seller Reviews

Pricing

from $4.70 / 1,000 listing details

Go to Apify Store
eBay Scraper: Sold Prices, Listings, Details & Seller Reviews

eBay Scraper: Sold Prices, Listings, Details & Seller Reviews

Scrape eBay sold prices, active listings, item details and seller reviews from 17 eBay sites. Search by keyword or paste any eBay URL. Get price, shipping, item specifics, GTIN/UPC, sold-price summaries and new-listing alerts. No eBay account, API key or code needed. Export to CSV, Excel or JSON

Pricing

from $4.70 / 1,000 listing details

Rating

0.0

(0)

Developer

Reviewly

Reviewly

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 hours ago

Last modified

Categories

Share

Get clean eBay data from 17 marketplaces in minutes: active listings, sold prices, item specifics and seller reviews. You don't need an eBay account, an API key or any coding.

  • 🔎 Search any way you like. Type keywords, upload a list of up to 500, or paste eBay URLs. Every filter you set on eBay is kept.
  • 💰 Sold and completed listings for price research, with a summary row per search (median, average, sell-through rate).
  • ⚡ Fast or detailed. Get up to 240 listings per request from the search results, or full item pages with item specifics, GTIN/UPC/EAN, variations and seller details.
  • 🔔 Monitoring. Each run returns only new listings, and listings whose price changed are flagged.
  • 🌍 17 eBay sites: US, UK, Germany, France, Italy, Spain, Canada, Australia and nine more.

📌 What does this eBay Scraper do?

This Apify actor scrapes eBay search results, item pages and seller feedback. It turns them into structured rows that you can download as JSON, CSV or Excel, or send to Google Sheets, a database or your own app through the Apify API.

Who it's for:

  • eBay sellers and resellers checking what an item actually sells for before they list or buy.
  • E-commerce and pricing teams tracking competitors' prices, stock and discounts.
  • Market researchers and analysts measuring demand, sell-through and price trends for a product category.
  • Arbitrage and sourcing buyers watching for new underpriced listings.
  • Developers who need eBay data in a pipeline without maintaining their own scraper.

Real-world examples:

  • "What did a used Rolex Submariner sell for on eBay in the last 30 days?"
  • "Alert me to every new Lego 42115 listing under $300."
  • "Export every listing from this eBay store, with brand, MPN and UPC."
  • "Pull all negative reviews of this seller from the past year."

✨ Key features

  • Keyword search with eBay's filters: condition, price range, sort order, auction / Buy It Now / Accepts offers, free shipping, returns accepted, seller and category.
  • Paste any eBay URL: search results, sellers (/usr/), stores (/str/), category pages (/b/), single items (/itm/) and feedback profiles. Filters in the URL, such as item location or Brand=Nike, are kept.
  • Bulk keywords: up to 500 searches in one run. Every row is tagged with the keyword that found it.
  • Sold and completed listings with sold date and an accepted Best Offer flag, plus a sold-price summary per search.
  • Full item details: item specifics, all images, brand / MPN / UPC / EAN / GTIN, variations, exact watchers and units sold, quantity available, shipping and returns, category path, start and end dates.
  • Deal and demand signals: original price, discount, coupons, multi-buy offers, recent price drops, units sold, watchers.
  • Seller feedback: one row per review, with sentiment, comment, buyer score, verified purchase and the item it was left on.
  • eBay Motors: vehicle category presets, a model-year range, and a structured vehicle object (year, make, model, trim, mileage, VIN, transmission, fuel, title status).
  • Monitoring of new listings and price changes between scheduled runs.
  • Ready-made table views in the Apify Console: Overview, Vehicles, and Deals & demand.

🧠 Why choose this eBay scraper?

  • Sold data included. eBay shows sold listings only to signed-in users. The actor handles that for you, so you never share your own eBay login.
  • Two speeds, two price points. Fast mode reads 240 listings per request and suits price tracking at scale. Detailed mode reads every item page for complete product data. You pick per run.
  • Honest data. A field eBay doesn't show is left out. A missing field means "not shown", never a made-up zero. Approximate counts such as "35.1K" are flagged as approximate.
  • You only pay for what you keep. Rows removed by your title, date, year or feedback filters are dropped before they are charged. "No results" marker rows are free.
  • Built for eBay's bot checks. It uses residential proxies in the marketplace's own country and handles eBay's browser check without running a browser. That keeps runs fast and cheap.
  • Clear run status. If a search stops early, an item doesn't exist, or eBay returns nothing, the run's status message says so in plain words.

⚙️ Input configuration

Fill in one of these: Search query, Search queries, Start URLs or Seller feedback profiles. Every other field is optional.

What to scrape

FieldWhat it does
searchQueryOne keyword search, e.g. iphone 16 pro 256gb. eBay syntax works: quotes for an exact phrase, a minus sign to exclude a word.
searchQueriesA list of keywords (up to 500). Each one runs as its own search with the same settings.
startUrlseBay URLs from any supported site. Set your filters on eBay and copy the address bar.
feedbackProfilesSeller usernames or feedback-profile URLs, for review scraping.
marketplaceWhich eBay site to use (default ebay.com). It also sets the proxy country, so match it to your URLs.
modeactive (default), sold for sold and completed listings, or both.

Data depth

FieldDefaultWhat it does
detailedItemstrueReads each listing's item page for full details. Set it to false for fast rows from the search results.
includeDescriptionfalseAdds the seller's description as plain text (one extra request per item).
includeLegacyFieldstrueKeeps eBay's raw page modules (buy_box, semantic_data, …) and basic_info. Set it to false for lean rows.
includeSummarytrueAdds a sold-price summary row to each sold search.
categoryPageModeexactFor brand or curated /b/ pages: exact reads the page itself, keyword searches the category plus the page title, category reads the whole category.

Filters for keyword searches

FieldValues
conditionany, new, used, refurbished, open_box, certified_pre_owned, for_parts
minPrice / maxPriceWhole numbers in the marketplace currency
sortBybest_match, ending_soon, newest, price_asc, price_desc
listingTypeall, auction, bin (Buy It Now), best_offer
freeShipping, returnsAcceptedtrue / false
sellerOne seller's username. With no keyword, returns everything they list.
categoryeBay category ID, e.g. 9355 for Cell Phones & Smartphones
motorsCategoryeBay Motors preset, e.g. 6001 for Cars & Trucks
minYear / maxYearModel-year range for vehicles, read from the start of the title
FieldWhat it does
titleMustMatchQueryKeeps only titles that contain every word of the keyword. Near matches are dropped and not charged.
titleMustIncludeKeeps only titles that contain these words. Case, accents and punctuation are ignored, so 18V-55 matches 18v55.
soldWithinDaysSold mode: keeps only sales from the last N days (1–730).
maxItemsMaximum rows per search (default 1000). Each keyword and each URL counts as its own search.

Monitoring

FieldWhat it does
monitoringModeReturns only listings not seen in earlier runs of the same search.
enablePriceMonitoringAlso returns seen listings whose price changed, with previousPrice.

Seller feedback options

feedbackSort (most_recent, most_relevant), feedbackReceivedAs (seller, buyer, both), feedbackRating (all, positive, neutral, negative), feedbackImagesOnly, feedbackExcludeAutomated.

Performance

maxConcurrency (default 5), maxRequestRetries (default 20) and proxy (keep RESIDENTIAL).

Example inputs

Fast, low-cost active listings:

{ "searchQuery": "mechanical keyboard", "detailedItems": false, "includeLegacyFields": false, "maxItems": 2000 }

Keyword search with filters:

{ "searchQuery": "vintage rolex submariner", "condition": "used", "minPrice": 2000, "sortBy": "price_asc" }

Sold prices from the last 30 days:

{ "searchQuery": "nintendo switch oled", "mode": "sold", "soldWithinDays": 30, "titleMustMatchQuery": true }

Filters copied from eBay (Nike running shoes located in Germany):

{ "startUrls": [{ "url": "https://www.ebay.de/sch/i.html?_nkw=laufschuhe&Marke=Nike&LH_LocatedIn=1&_salic=77" }], "marketplace": "ebay.de", "detailedItems": false }

A keyword list with strict titles:

{ "searchQueries": ["lego 42115", "lego 42143"], "titleMustMatchQuery": true, "maxItems": 200 }

Negative seller feedback:

{ "feedbackProfiles": ["<seller>"], "feedbackRating": "negative", "maxItems": 500 }

eBay Motors:

{ "searchQuery": "honda civic", "motorsCategory": "6001", "minYear": 2018, "maxYear": 2022, "condition": "used" }

💡 Tips for best results

  • Use fast mode (detailedItems: false) for price tracking and large keyword lists. It is much faster and cheaper.
  • Use titleMustMatchQuery to stop eBay's "Results matching fewer words" from padding your data.
  • Set the marketplace to match your URLs so you see local listings and shipping quotes.
  • Turn off includeLegacyFields if you export to CSV or Excel and want fewer columns.

📤 Output format

You get one flat row per listing. Download it as JSON, CSV, Excel, XML or HTML, or read it through the Apify API.

Sample listing row (detailed mode)

{
"itemId": "276582090868",
"url": "https://www.ebay.com/itm/276582090868",
"title": "Dyson V15 Detect Total Clean Extra | Yellow/Nickel | Refurbished",
"price": "$369.99",
"priceValue": 369.99,
"currency": "USD",
"condition": "Certified - Refurbished",
"conditionId": "2000",
"shipping": "Free delivery",
"shippingType": "free",
"shippingCost": 0,
"totalPrice": 369.99,
"itemLocation": "Located in United States",
"sellerUsername": "dysonofficial",
"sellerFeedbackScore": 179322,
"sellerFeedbackPercentage": 99.2,
"sellerHasStore": true,
"sellerAccountType": "business",
"originalPrice": "$749.99",
"originalPriceValue": 749.99,
"recentPriceDrop": true,
"certifiedRefurbished": true,
"quantitySold": 13797,
"watchers": 9885,
"itemSpecifics": { "Brand": "Dyson", "Model": "V15", "MPN": "448182-02", "…": "…" },
"brand": "Dyson",
"mpn": "448182-02",
"upc": "885609036021",
"images": ["https://i.ebayimg.com/images/g/…/s-l1600.jpg"],
"categoryId": "20614",
"categoryPath": "Home & Garden > Household Supplies & Cleaning > Vacuum Cleaners",
"listingStatus": "ACTIVE",
"startDate": "2024-08-05T15:59:44.000Z",
"endDate": "2026-11-05T16:59:44.000Z",
"searchQuery": "dyson v15",
"searchUrl": "https://www.ebay.com/sch/i.html?_nkw=dyson+v15",
"detailed": true,
"scrapedAt": "2026-10-21T12:22:39.078Z"
}

Main fields

FieldMeaning
itemId, url, titleeBay item number, link and title
price, priceValue, currencyPrice as shown, as a number, and its currency
shipping, shippingCost, totalPriceShipping text, cost, and price plus shipping
condition, conditionIdeBay condition label and code
sellerUsername, sellerFeedbackScore, sellerFeedbackPercentageSeller and their reputation
sellerAccountType, sellerHasStoreBusiness or private seller, and whether they have an eBay store
originalPrice, discount, recentPriceDropDeal signals
quantitySold, watchersDemand signals
itemSpecifics, brand, mpn, upc, ean, gtinProduct identifiers for matching to your catalog
bidCount, timeLeft, hasReservePriceAuctions only
sold, soldDate, bestOfferAcceptedSold mode only
vehicleeBay Motors listings: year, make, model, trim, mileage, VIN, and more
searchQuery, searchUrlThe search that found the row

Good to know:

  • Fast vs detailed rows. Fast rows have price, condition, shipping, location, image, seller name and feedback, auction data and deal signals. Detailed rows add item specifics, identifiers, all images, seller store and member-since date, exact watchers and units sold, variations, dates, category, shipping and returns details.
  • Cross-border listings keep the seller's own price in nativePriceValue and nativeCurrency. priceValue holds eBay's conversion into the site's currency.
  • Near matches that eBay adds under "Results matching fewer words" have nearMatch: true.
  • Price changes in monitoring mode have priceChanged: true and previousPrice.

Sold-price summary row

Illustrative values:

{
"_analytics": true,
"type": "sold-price-summary",
"query": "nintendo switch oled",
"marketplace": "ebay.com",
"currency": "USD",
"count": 187,
"minPrice": 140,
"maxPrice": 349.99,
"averagePrice": 226.4,
"medianPrice": 225,
"recommendedPrice": 225,
"totalSold": 2410,
"totalActive": 1830,
"sellThroughRate": 0.5684,
"soldPerDay": 26.78
}

Seller feedback row

Fields: seller, feedbackId, sentiment, comment, buyer (masked by eBay), buyerScore, automated, verifiedPurchase, imageCount, relativeTime, itemTitle, itemId, itemUrl, itemPrice.

Marker rows (free)

A search with no results writes { "_searchMeta": true, "totalResults": 0, … }, so you can tell "nothing found" from "not run". Skip rows that have _searchMeta or _analytics when you count listings.

▶️ How to use the eBay Scraper

  1. Open the actor in the Apify Store and click Try for free.
  2. Choose what to scrape. Type a keyword in Search query, or paste eBay URLs into Start URLs.
  3. Pick a marketplace and a listing mode: Active, Sold / completed, or Both.
  4. Choose fast or detailed. Leave Fetch full item details on for complete product data, or turn it off for speed.
  5. Set Max number of items and click Start.
  6. Download your data from the Output tab as CSV, Excel or JSON, or use the Overview, Vehicles and Deals & demand views.

Common workflows

  • Daily new-listing alerts. Turn on monitoringMode, save the task, add a Schedule (for example every morning), and connect a Slack, email or webhook integration.
  • Weekly price comps. Use mode: "sold" with soldWithinDays: 7 and a keyword list, scheduled weekly, and export it to Google Sheets.
  • Competitor store export. Paste the store URL (https://www.ebay.com/str/<store>) with detailed mode on.
  • API access. Call the actor from Python, Node.js or any HTTP client with the Apify API, and read the dataset when the run finishes.

📈 Use cases

  1. Price research before you list. Sold mode gives you the median sale price and sell-through rate, so you price to sell rather than guess.
  2. Competitor and MAP monitoring. Track competitors' prices, discounts and stock every day, and catch resellers breaking your minimum advertised price.
  3. Arbitrage and sourcing. Watch searches for new listings below a target price, and act before other buyers do.
  4. Market and product research. Measure demand with units sold, watchers and sold-per-day across a category, a brand or a list of SKUs.
  5. Seller due diligence and lead lists. Scrape seller feedback to check a supplier's reputation, or build a list of business sellers in a niche to contact.

🛠️ Advanced tips

  • Cost and speed. Fast mode makes one request per 240 listings, while detailed mode makes one per listing. For thousands of keywords, use fast mode and run a detailed run only on the items you care about.
  • Proxy. Keep the RESIDENTIAL group. If no country is set, the actor connects from the marketplace's country (US for ebay.com, GB for ebay.co.uk, DE for ebay.de, …). A connection from another country sees fewer listings and different shipping quotes.
  • Rate limits. If the log shows HTTP 429, lower maxConcurrency to 3. Failed requests retry from a fresh IP.
  • Scaling. Split very large keyword lists over several runs or tasks, and set a maximum cost per run in the run options to cap spend. The actor delivers the rows that fit, then stops cleanly.
  • Monitoring history is stored per exact search URL in the key-value store ebay-scraper-monitoring. Changing the URL, even by adding a filter, starts a new history. Don't run two monitoring runs of the same search at once.
  • Category-only searches (a category ID with no keyword, or a plain /b/ page) are read from eBay's browse page, which returns detailed rows.

💵 Pricing

This actor uses pay-per-event pricing. You pay per result row, and the rates are shown on the actor's Pricing tab.

EventCharged for
fast-itemeach fast listing row
detailed-itemeach detailed listing row
sold-itemeach sold / completed listing row
sold-summaryeach sold-price summary row
feedback-revieweach seller-feedback review row

Free Apify plan: up to 700 results per calendar month (UTC), counted over all your runs. When you reach the limit, the run stops with a message that says when the allowance resets, and results already delivered are kept. Paid Apify plans have no monthly limit.

You are never charged for rows dropped by your filters, for "not found" items, for marker rows, or for sold searches that eBay refuses.

❓ FAQ and troubleshooting

Do I need an eBay account or API key? No. Active listings, item pages and feedback are read from eBay's public pages. For sold listings, the actor uses its own signed-in session.

Is scraping eBay legal? This actor collects publicly visible data. You are responsible for how you use it, including eBay's terms and data-protection laws such as GDPR. If you're unsure, ask a lawyer.

My sold search returned no rows. eBay refused the signed-in session. The run's status message says so, and you were not charged for those searches. Active searches in the same run are not affected. Try again later or contact support.

I got fewer results than eBay shows. eBay often reports an estimated total that is higher than the number of listings it actually serves. Also check that marketplace matches your URL's site, and that titleMustMatchQuery or your other filters aren't removing rows.

Some fields are missing from a row. eBay doesn't show that information on that listing, or you're in fast mode. Turn on detailedItems for item specifics, identifiers and seller details.

The feedback count looks rounded, e.g. 35.1K. In fast mode, eBay shows abbreviated counts on search cards, and those rows have sellerFeedbackScoreIsApproximate: true. Detailed rows have the exact number.

The run says "Partial result". A search page kept failing after all retries, so that search stopped early. The message names the search and the page. Run it again, or lower maxConcurrency.

My free run stopped at 700 results. That's the free plan's monthly allowance. It resets on the 1st of the month (UTC). Upgrading to a paid Apify plan removes the limit.

Can I scrape a whole category without a keyword? Yes. Set category, or paste a /b/ category URL. These are read from eBay's browse page as detailed rows.

Which eBay sites are supported? ebay.com, ebay.co.uk, ebay.de, ebay.fr, ebay.it, ebay.es, ebay.ca, ebay.com.au, ebay.nl, ebay.at, ebay.ch, ebay.ie, ebay.pl, ebay.com.hk, ebay.com.my, ebay.ph and ebay.com.sg.

📞 Support

  • Questions or feature requests: open an issue on the actor's Issues tab in the Apify Console.
  • Email: me@ahmedhrid.com
  • Reporting a bug: include the run ID (or a link to the run), the input you used, and what you expected. That's usually enough to reproduce it quickly.

Custom fields, another marketplace or a tailored data feed? Get in touch.

Disclaimer

This actor is not affiliated with, endorsed by or sponsored by eBay Inc. It reads publicly available listing, search and feedback pages. Only sold searches use a signed-in eBay session. You are responsible for complying with eBay's terms and applicable data-protection law.