eBay Scraper - Listings, Sold Prices & Sellers (8 markets)
Pricing
from $2.99 / 1,000 listings, sold items & seller records
eBay Scraper - Listings, Sold Prices & Sellers (8 markets)
Scrape eBay active and sold listings, products, and seller info across 8 marketplaces (US/UK/DE/FR/IT/ES/CA/AU). Search by keyword or paste eBay URLs. Returns flat JSON with 28 fields per item — built for resellers, dropshippers, and AI agents. MCP/API-ready.
Pricing
from $2.99 / 1,000 listings, sold items & seller records
Rating
0.0
(0)
Developer
w3crawler
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
a day ago
Last modified
Categories
Share
eBay Scraper - Listings, Sold Prices & Sellers
This Actor collects useful, flat listing data from public eBay search and item pages. It supports the eight marketplaces described by the source Actor: the United States, United Kingdom, Germany, France, Italy, Spain, Canada, and Australia. It can be used for resale research, price comparisons, catalog enrichment, and seller discovery. The Actor reads product JSON-LD when it is available and falls back to the stable listing-card markup used by eBay search pages. It does not require an eBay account or API key. Before the first marketplace request, it visits that marketplace's public help page to establish the anonymous cookies eBay requires for public browsing; it never logs in or bypasses a challenge.
Input
Use startUrls for public eBay search, category, or item URLs. URLs are checked before a request is made and non-eBay hosts are ignored. If no URLs are provided, set query and market; the Actor creates an eBay search URL for you. mode controls generated searches: active (the credential-free default) returns current listings, sold requests completed sold listings, and both requests one of each. Explicit URLs are respected, so a URL containing eBay's completed-listing filters can be used for a more specific search. maxItems limits unique records globally and maxPages bounds pagination per search URL. requestDelayMs, requestTimeoutMs, and maxBytes control pacing and resource bounds. Sold searches use public HTML first and can make one bounded anonymous Chromium fallback with a persistent marketplace-matched context. proxyConfiguration accepts the standard Apify Proxy object and defaults to direct access. Unknown fields fail early.
The included HTML fixture is used only by the focused parser test and cannot be selected through Actor input, so production datasets always represent requested live pages.
Output
Each successful dataset item represents one listing and contains domain data: eBay item ID, title, listing type, condition, price, currency, shipping cost, bid count, seller name and feedback metrics, sold state and ISO timestamp when available, item URL, image URLs, location, category, description, and marketplace hostname. Records also contain stable provenance (recordType, source, sourceUrl, scrapedAt) and whether proxy routing was used. Numeric values are numbers, isSold is a boolean, URLs are absolute, and missing values are omitted. Placeholder values such as N/A and unknown are discarded. Duplicate listings are removed by item ID or canonical item URL across pages. Empty or repeated pages stop pagination. When a public page is blocked, unavailable, or returns no parseable listings, the Actor emits an explicit pageType: "run_diagnostic" record with access/error evidence instead of leaving an empty dataset.
price is the listing price shown by the page, while shippingCost is zero when the page explicitly says shipping is free. Currency comes from the page and otherwise falls back to the selected marketplace. A seller rating is kept as the percentage shown by eBay; it is not confused with a product review score. Sold timestamps are included only when they can be parsed into ISO 8601.
Local validation
Install dependencies with npm install, run npm test, and validate the Actor schemas with apify validate-schema. A bounded fixture run is:
apify run --purge --input {"query":"vintage camera","mode":"active","maxItems":3,"maxPages":1}
The runtime writes records to the default local dataset. Inspect that dataset to confirm that every emitted field is declared by .actor/dataset_schema.json, then run npm run validate:dataset for branch-aware listing/diagnostic checks. The live mode uses modest retries and timeouts and logs a warning for an individual page that cannot be fetched, allowing other requested pages to finish while preserving a diagnostic row.
Operational notes and limitations
The Actor has no eBay developer credential fields and no official-API runtime path. It intentionally uses anonymous public HTML and structured data. Active search listings are the verified core contract. Completed-search pages are more access-sensitive; the Actor attempts public HTML and then one consistent-locale browser render, while explicit public ended-item URLs can expose a browser-visible sold subset. The Actor never fabricates API-only fields or claims diagnostic rows as listings. eBay can change markup or vary fields by country, device, and experiment, so a page may yield fewer fields or no records. Respect eBay's terms, robots guidance, rate limits, and applicable laws.