eBay Store Scraper avatar

eBay Store Scraper

Pricing

from $3.99 / 1,000 results

Go to Apify Store
eBay Store Scraper

eBay Store Scraper

Extract public product listings and store details from eBay Stores.

Pricing

from $3.99 / 1,000 results

Rating

0.0

(0)

Developer

Coding Frontned

Coding Frontned

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 days ago

Last modified

Categories

Share

What does eBay Store Scraper do?

eBay Store Scraper reads public eBay Store, seller-listing, item, and search pages over ordinary direct HTTPS. It normalizes listing identity, pricing, condition, shipping, seller/store context, public ratings, and eBay-hosted media. It does not sign in, solve CAPTCHAs, bypass access controls, or collect private account data.

Why use eBay Store Scraper?

Use it for marketplace catalog monitoring, resale research, price comparisons, store inventory snapshots, and downstream product discovery. It accepts multiple source URLs, follows same-route next-page links within a bounded per-source page budget, deduplicates by listing ID/URL, applies text/price/condition filters, and can sort the bounded collected set. The Actor also writes an OUTPUT_SUMMARY key-value record for run-level counts; it does not mix operational counters into normal listing rows.

What data can eBay Store Scraper extract?

GroupFields
IdentityproductId, productTitle, productUrl, storeName, storeUrl, sellerUsername, sellerUrl
Commercialprice, priceFormatted, currency, originalPrice, shippingCost, shippingText, condition, availability, buyingFormat, itemLocation, soldCount
Media and qualityimageUrl, additionalImageUrls, rating, reviewCount, description, category
ProvenancesearchUrl, pageUrl, legacy sourceUrl, pageNumber/pageNum, position, scrapedAt
DiagnosticsWhen enabled, typed { "recordType", "diagnosticType", "url", "error", "errorCode", "scrapedAt" } rows for blocks, failures, empty pages, or invalid fixtures

How to scrape eBay Stores

  1. Open the Actor and paste one or more public eBay Store or search URLs into the eBay source URLs field.
  2. Set maxItems for the global normal-record limit and maxPages for the per-source page limit.
  3. Optionally choose keyword, minPrice, maxPrice, condition, and sortBy.
  4. Enable or disable media and diagnostics as needed, then start the run.
  5. Download the dataset from the Output tab and inspect OUTPUT_SUMMARY for coverage and access status.

Custom source URLs control where pages are collected. maxItems is global across all sources; maxPages is applied independently to each source. When sortBy is not source, all allowed pages are collected before sorting, so the run can cost more than a source-order run. Duplicate source URLs are removed before crawling.

How much will it cost to scrape eBay?

Cost depends on the number of source pages, response size, retries, and the number of normal rows. This implementation uses one sequential HTTP request at a time. Increasing maxPages, enabling retries, or fetching several sources increases compute and target traffic. It has no browser rendering or paid proxy requirement. Use a small maxItems/maxPages first and respect eBay rate limits and terms.

Input

See the input tab for the complete configuration. Supported fields include startUrls (array of { "url": "..." }, with legacy string entries accepted), maxItems (default 50, 1–500), maxProducts (legacy alias), maxPages (default 1, 1–20), startPage, keyword, minPrice, maxPrice, condition, sortBy (source, price_asc, price_desc, title), deduplicate (default true), includeMedia (default true), includeDiagnostics (default true), timeoutMs (default 20000, 3000–120000), requestTimeoutMs, requestTimeoutSecs, requestDelayMs (default 0, max 10000), maxRequestRetries (default 0, max 2), maxConcurrency (currently 1), userAgent, and the local-QA aliases fixturePath/fixtureFile.

All URLs must use an exact eBay marketplace hostname and HTTPS. Fixture paths must remain under the Actor directory. proxyConfiguration is intentionally not accepted because this Actor uses the native fetch transport and does not claim proxy routing.

Quick run

{"startUrls":[{"url":"https://www.ebay.com/str/example-tools"}],"maxItems":10,"maxPages":1}

Filters and sorting

{"startUrls":[{"url":"https://www.ebay.com/str/example-tools"}],"keyword":"drill","minPrice":20,"maxPrice":150,"condition":"New","sortBy":"price_asc","maxItems":10}

Multiple sources and pagination

{"startUrls":[{"url":"https://www.ebay.com/str/example-tools"},{"url":"https://www.ebay.com/str/example-parts"}],"maxPages":2,"maxItems":25,"deduplicate":true}

Developer options

{"startUrls":[{"url":"https://www.ebay.com/str/example-tools"}],"maxItems":5,"requestDelayMs":250,"maxRequestRetries":1,"timeoutMs":30000,"maxConcurrency":1}

Fixture-backed local QA

{"fixturePath":"test/fixtures/store-page.html","startUrls":[{"url":"https://www.ebay.com/str/example-tools"}],"maxItems":2,"includeDiagnostics":true}

Output

You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.

Normal listing example (shortened media):

{"productId":"123456789012","productTitle":"Example cordless drill kit","productUrl":"https://www.ebay.com/itm/123456789012","price":89.99,"priceFormatted":"$89.99","currency":"USD","condition":"New","shippingText":"Free shipping","imageUrl":"https://i.ebayimg.com/images/g/example.jpg","additionalImageUrls":["https://i.ebayimg.com/images/g/example-side.jpg"],"pageNumber":1,"searchUrl":"https://www.ebay.com/str/example-tools","sourceUrl":"https://www.ebay.com/str/example-tools","sourceDomain":"www.ebay.com","scrapedAt":"2026-01-01T00:00:00.000Z"}

Diagnostic example:

{"recordType":"diagnostic","diagnosticType":"access_blocked","url":"https://www.ebay.com/str/example-tools","error":"eBay returned a CAPTCHA or security challenge.","errorCode":"ACCESS_BLOCKED","scrapedAt":"2026-01-01T00:00:00.000Z"}

The OUTPUT_SUMMARY key-value record contains status, sources, pages, requests, retries, filtered and duplicate counts, normal/diagnostic counts, block counts, fixture mode, and completion time. A diagnostic row is not a successful listing and does not count toward maxItems. Missing source values are omitted rather than fabricated. Only eBay-hosted image hosts are retained.

Tips and advanced options

Start with one public URL and maxPages: 1. For price or title sorting, the Actor must collect the bounded page set first. A detail/item URL can yield one source-backed listing; a Store/search URL may yield many. If a page is blocked, lower request volume and use the target's normal public route; do not try to bypass the challenge. Native fetch is used, so no proxy is silently implied.

FAQ, support, and responsible use

HTTP errors, challenges, malformed fixtures, and empty pages produce bounded diagnostics when includeDiagnostics is enabled. If the run returns no normal rows, inspect OUTPUT_SUMMARY and the run log rather than treating diagnostics as data. Report reproducible issues in the Actor Issues tab with the run ID and summary.

Our Actors are ethical and do not extract private user data such as email addresses, gender, or location. They only extract what users have chosen to share publicly. Results could still contain personal data protected by GDPR and other laws; use a legitimate purpose and obtain legal advice when unsure. Follow eBay's terms, robots guidance, rate limits, and applicable law. This Actor is not affiliated with eBay.

Local validation

From the Actor directory:

npm install
npm test
npm run lint
npm run validate
npm run check
apify validate-schema
apify run --purge --input-file test/inputs/default.json