eBay Scraper - Prices, Sold Intelligence & Trend
Pricing
Pay per usage
eBay Scraper - Prices, Sold Intelligence & Trend
Scrape eBay listings across 13 global markets with AI-powered pricing intelligence. Get sold listings data, price trends, and market velocity — perfect for resellers and price analysts. Supports auctions, Buy It Now, and cross-run trend tracking.
Pricing
Pay per usage
Rating
0.0
(0)
Developer
Nick
Actor stats
0
Bookmarked
2
Total users
1
Monthly active users
19 hours ago
Last modified
Categories
Share
eBay Scraper - Products, Prices & Sold Intelligence
Scrape eBay product listings with prices, shipping, seller ratings, condition, and bid counts. Search any eBay domain (US, UK, DE, AU, FR, IT, and 7 more). v1.9: sold-listings intelligence mode — flip soldOnly=true and get a reseller-grade pricing summary with recommended list price, p10-p90 price band, median days-to-sell, market velocity, and confidence score. NEW v2.0: cross-run sold-listings trend — the summary now carries a sold_listings_trend block with 7d/30d price deltas, velocity / volume deltas, and direction from persisted history. Auction + Buy It Now + optional AI market analysis.
What's new in v2.0 — Sold-Listings Trend (Cross-Run Surveillance)
Turn the one-shot reseller scrape into a market-watch service. Run the same soldOnly=true search on a schedule (daily, weekly) and every summary item now carries a sold_listings_trend block populated from prior runs:
| Trend field | What it tells you |
|---|---|
has_history | Bool — false on the first run (seeds the store), true thereafter. |
price_delta_7d_pct / price_delta_30d_pct | Median-price % change vs the snapshot closest to 7 / 30 days ago. |
recommended_delta_7d_pct / recommended_delta_30d_pct | Same, but over recommended_list_price — the headline reseller number. |
volume_delta_pct | % change in n_sold_listings vs the previous snapshot (demand-side signal). |
velocity_delta | e.g. "steady -> hot" — categorical market-velocity transition. |
velocity_rank_delta | Signed int over cold < slow < steady < hot (+1 = one bucket hotter). |
direction | up / down / flat / new — short-horizon tick relative to the last snapshot. |
sample_count_history | How many prior snapshots informed the trend (capped at 90 = ~3 months of daily runs). |
first_seen_at / previous_snapshot_at | Audit trail — earliest stored run + most recent. |
previous_recommended_list_price / previous_median_price | Prior-run anchor values so consumers can recompute custom deltas. |
How it works: each run persists the summary into a named Apify key-value store (ebay-sold-history) keyed by (searchQuery, domain) slug. The store is FIFO-capped at 90 snapshots per slot so it stays bounded. Trend fields are computed against the stored history — no extra HTTP, no extra AI call. Pattern matches booking-scraper/_rate_history.py (rate-trend) and amazon-scraper (BSR-trend).
Billing: trend detection bills sold-trend-detected @ $0.03 once per run — only when prior history exists. First runs seed the store and are free. A daily watch on 10 SKUs at ~$0.03/trend-snapshot = ~$9/month vs Terapeak's $20/mo flat, and you own the raw time-series.
What's new in v1.9 — Sold-Listings Intelligence Mode
Set soldOnly: true and the scraper flips to eBay's LH_Sold=1&LH_Complete=1 filter (completed sales, ~90 day window). In addition to the individual sold-listing records, the run emits a single sold_listings_summary item with everything a reseller or arbitrage operator needs to price a SKU:
| Summary field | What it tells you |
|---|---|
recommended_list_price | p60 of sold prices when n>=20, else median. The "asking price that still sells reliably". |
p10_p90_range | p10 / p25 / p75 / p90 price band — the realistic spread across the market. |
median_price, mean_price | Classic central-tendency anchors. |
median_days_to_sell / p90_days_to_sell | How fresh / how slow the market signal is. |
market_velocity | hot (1+/day), steady (~2-7/week), slow (~1-2/week), cold (<1/week). |
confidence_score | 0-1 score blending sample size (50%), price dispersion (30%), sold-date parse coverage (20%). |
n_sold_listings, currency, lookback_days, methodology | Transparent metadata so downstream consumers can audit / override. |
Pricing: sold-listings bill at $0.005/listing (vs. $0.003 for live listings) and the summary bills once at $0.10. A 100-sold run costs $0.50 + $0.10 = $0.60 end-to-end — roughly 5x cheaper than competitor premium sold-intelligence offerings at ~$25/1000 results.
Features
- Sold-listings intelligence mode (v1.9) — completed-sale aggregation with recommended list price, p10-p90 band, velocity, and confidence score
- Search any eBay marketplace by keyword (13 supported country domains)
- Extract 25+ data points per listing: title, price, strikethrough MSRP (
list_price), currency, shipping, condition, seller + feedback, bids, time-left, sold count (integer), sold date (ISO-8601 when in sold mode), sponsored flag, best-offer flag, images, location - Filter by listing type (auction, Buy It Now, or all)
- Filter by item condition (new, used, refurbished, open box)
- Sort by best match, price, newest listed, or ending soonest
- Set minimum and maximum price filters
- Paginate through search results automatically (up to 200 products)
- Scrape direct eBay product URLs for detail pages
- AI-powered market analysis with pricing insights, value picks, and buying recommendations
- Supports 5 LLM providers: OpenRouter (recommended — 300+ models), Anthropic (Claude), Google AI (Gemini), OpenAI (GPT), and Ollama (self-hosted)
- Pay-per-event pricing: only pay for what you scrape
Use Cases
- Resellers & Arbitrage: Compare eBay prices to other platforms for profitable flips
- Price Monitoring: Track prices for specific products over time
- Market Research: Analyze pricing trends, demand, and competition for product categories
- Competitive Analysis: Monitor competitor pricing and seller strategies
- Auction Intelligence: Track active auctions, bid counts, and time remaining
- E-commerce Sourcing: Find wholesale or bulk deals on eBay
- Vintage & Collectibles: Monitor rare item prices and auction activity
Data Extracted
Search Results
| Field | Description |
|---|---|
title | Product listing title |
url | Direct link to the eBay listing |
price | Current numeric price value |
price_text | Current price as displayed (e.g., "$29.99") |
currency | ISO 4217 currency code (e.g. USD, GBP, EUR) — resolved from price symbol when unambiguous, else from domain (Cycle 50). |
list_price | Strikethrough / MSRP numeric price if the listing shows a discount, else null. Useful for discount-% and margin analysis. (v1.8 / Cycle 73) |
list_price_text | Strikethrough price as displayed (e.g. "$299.99") — only populated when the listing is discounted. (v1.8) |
shipping_cost | Shipping cost (0.0 for free shipping, null if unknown) |
shipping_text | Shipping info as displayed |
free_shipping | Bool convenience flag derived from shipping_cost == 0 or localized "free shipping" markers. |
condition | Item condition (New, Used, Pre-Owned, Refurbished, etc.) |
seller | Combined human-readable seller string, e.g. "logitech 99.6% positive (20.7K)". Populated for Buy It Now listings in search results, OR for any listing when fetchDetails=true is enabled (eBay does not render seller info in auction search cards). |
seller_username | Bare seller username, e.g. "logitech", "jdw.55" — populated whenever seller is populated. |
seller_feedback_percentage | Seller feedback percentage as float, e.g. 99.6. |
seller_feedback_count | Seller feedback count as int, e.g. 20700 (parsed from "(20.7K)"). |
bids | Number of bids (auction items only) |
time_left | Time remaining for auctions |
listing_type | auction, buy_it_now, or buy_it_now_or_best_offer |
best_offer | Bool convenience flag — true when seller accepts offers (equivalent to listing_type == "buy_it_now_or_best_offer"). (v1.8) |
is_sponsored | Bool — true when the card is a promoted/sponsored listing. Filter these out for organic price-distribution analysis. (v1.8) |
image_url | Product image URL |
sold_info | Raw sold/watching text as displayed (e.g., "184+ sold", "5 watching"). |
sold_count | Integer sold count parsed from sold_info. null when the card shows watchers only or no sold-badge. Handles K/M suffixes ("2.1K+ sold" → 2100). (v1.8) |
sold_date | ISO-8601 date (YYYY-MM-DD) when the listing sold — populated only in soldOnly mode. (v1.9) |
sold_date_text | Raw sold-date caption as displayed ("Sold Mar 15, 2026" / "Verkauft am 15. Mär 2026"). (v1.9) |
is_sold | Bool — true when the listing came from soldOnly mode (completed sale). (v1.9) |
location | Seller location |
domain | eBay domain used for scraping |
search_query | Original search term |
scraped_at | ISO 8601 timestamp of extraction |
Sample Output
{"title": "Pokemon TCG Scarlet & Violet Booster Box - 36 Packs - Sealed","url": "https://www.ebay.com/itm/295854732101","price": 129.99,"price_text": "$129.99","currency": "USD","list_price": 159.99,"list_price_text": "$159.99","shipping_cost": 0.0,"shipping_text": "Free shipping","free_shipping": true,"condition": "New","seller": "pokemon_central 99.8% positive (14.2K)","seller_username": "pokemon_central","seller_feedback_percentage": 99.8,"seller_feedback_count": 14200,"bids": null,"time_left": null,"listing_type": "buy_it_now","best_offer": false,"is_sponsored": false,"image_url": "https://i.ebayimg.com/images/g/abc123/s-l1600.webp","sold_info": "184+ sold","sold_count": 184,"location": "Los Angeles, CA","domain": "ebay.com","search_query": "pokemon cards","scraped_at": "2026-04-18T10:15:00Z"}
Input Configuration
Search Parameters
searchQuery— Keyword to search for on eBay (e.g., "laptop", "iPhone 15", "vintage watch"). The actor also accepts the aliasesquery,q,search,keyword, andsearchTerm(Cycle 65 v1.3) so existing workflows that use different naming conventions work without changes.productUrls— List of direct eBay product URLs to scrape (alternative to search)ebayDomain— eBay country domain. Options:ebay.com(US),ebay.co.uk(UK),ebay.de(Germany),ebay.fr(France),ebay.it(Italy),ebay.es(Spain),ebay.com.au(Australia),ebay.ca(Canada),ebay.nl(Netherlands),ebay.be(Belgium),ebay.at(Austria),ebay.ch(Switzerland),ebay.ie(Ireland)listingType— Filter by listing type:all,auction, orbuy_it_nowsortBy— Sort results:best_match,price_low,price_high,ending_soonest,newly_listeditemCondition— Filter by condition:any,new,open_box,refurbished,usedminPrice— Minimum price filtermaxPrice— Maximum price filtermaxProducts— Maximum number of products to scrape (1-200, default 50)
AI Analysis Settings
enableAiAnalysis— Enable AI-powered market pricing analysis (default: false)llmProvider— LLM provider:openrouter(default),anthropic,google,openai, orollamaopenrouterApiKey— OpenRouter API key (get one at openrouter.ai)anthropicApiKey— Anthropic API key (get one at console.anthropic.com)googleApiKey— Google AI API key (get one at aistudio.google.com/app/apikey)openaiApiKey— OpenAI API key (get one at platform.openai.com)llmModel— Custom LLM model (defaults:google/gemini-2.0-flash-001for OpenRouter,claude-sonnet-4-20250514for Anthropic, Gemini for Google AI, GPT-4o Mini for OpenAI, Llama 3.1 for Ollama)
Proxy Settings
proxyConfiguration— Apify Proxy settings. Works without proxy for most searches. Use residential proxy if you experience blocking.
AI Market Analysis
When enabled, the AI analyzes all scraped products and provides:
- Market Overview: Average price, median price, price range, dominant condition, auction vs BIN ratio
- Price Analysis: Budget, mid-range, and premium price brackets with best value picks
- Seller Landscape: Patterns in seller behavior, trusted sellers with high feedback
- Buying Recommendations: Best time to buy, negotiation tips for Best Offer listings, red flags, top picks
- Market Trends: Demand indicators from bids and sold counts, condition premium analysis, shipping patterns
Example Usage
Basic search
{"searchQuery": "mechanical keyboard","maxProducts": 20}
Filtered search with price range
{"searchQuery": "vintage Rolex watch","ebayDomain": "ebay.com","listingType": "auction","sortBy": "ending_soonest","minPrice": 500,"maxPrice": 5000,"maxProducts": 50}
Used electronics on eBay UK
{"searchQuery": "MacBook Pro","ebayDomain": "ebay.co.uk","itemCondition": "used","sortBy": "price_low","maxProducts": 30}
With AI market analysis
{"searchQuery": "Nintendo Switch OLED","maxProducts": 50,"enableAiAnalysis": true,"llmProvider": "openrouter","openrouterApiKey": "sk-or-..."}
Direct product URLs
{"productUrls": ["https://www.ebay.com/itm/123456789","https://www.ebay.com/itm/987654321"]}
Sold-listings intelligence mode (v1.9)
{"searchQuery": "pokemon booster box","ebayDomain": "ebay.com","soldOnly": true,"maxProducts": 100,"soldDateLookback": 90}
The run returns up to 100 completed-sale listings AND a single sold_listings_summary item:
{"type": "sold_listings_summary","search_query": "pokemon booster box","domain": "ebay.com","lookback_days": 90,"n_sold_listings": 100,"currency": "USD","recommended_list_price": 129.95,"median_price": 119.50,"mean_price": 128.30,"p10_p90_range": {"p10": 65.00, "p25": 89.99, "p75": 149.99, "p90": 199.00},"price_range": {"min": 24.99, "max": 349.00},"median_days_to_sell": 18,"p90_days_to_sell": 62,"market_velocity": "hot","confidence_score": 0.87,"date_coverage_ratio": 0.92,"generated_at": "2026-04-22T23:00:00Z","methodology": "Sold-listings aggregation over eBay's LH_Sold=1&LH_Complete=1 completed-sale filter..."}
Pricing
| Event | Price per event | Description |
|---|---|---|
product-scraped | $0.003 | Charged per live product listing extracted (default mode) |
sold-listing-scraped | $0.005 | Charged per completed-sale listing in soldOnly mode (v1.9) |
sold-summary-generated | $0.10 | Charged once per run when the sold_listings_summary is emitted (v1.9) |
sold-trend-detected | $0.03 | Charged once per run when sold_listings_trend is populated from prior history (v2.0). First run seeds the store for free; charges start on the 2nd and later runs. |
ai-analysis-completed | $0.05 | Charged per AI market analysis report |
A 100-sold-listings run with the summary costs $0.50 + $0.10 = $0.60 (first run) or $0.63 (from the 2nd run onward, trend included). Compare to competitor sold-intelligence offerings at ~$25/1000 results + Terapeak's $20/mo subscription — roughly 5x cheaper per aggregation, and you own the raw time-series.
Technical Details
- Uses Playwright headless Chromium to render eBay's JavaScript-heavy search pages
- Automatic retry with exponential backoff on rate limits (429) and access denied (403)
- Polite crawling with 1-2.5 second delays between requests
- Supports pagination across multiple search result pages
- Cross-page deduplication — eBay's search pagination can surface the same listing on consecutive pages (especially with
newly_listed/ending_soonestsorts). The scraper tracks aseen_product_urlsset across pages and skips duplicates, somaxProducts=50returns 50 unique listings rather than 50 raw slots. - Multiple parsing strategies to handle eBay's evolving DOM structure
- Clean URLs with tracking parameters stripped
- Requires 4096 MB memory (Playwright + Chromium)
Supported eBay Domains
| Domain | Country | Currency |
|---|---|---|
ebay.com | United States | USD |
ebay.co.uk | United Kingdom | GBP |
ebay.de | Germany | EUR |
ebay.fr | France | EUR |
ebay.it | Italy | EUR |
ebay.es | Spain | EUR |
ebay.com.au | Australia | AUD |
ebay.ca | Canada | CAD |
ebay.nl | Netherlands | EUR |
ebay.at | Austria | EUR |
ebay.ch | Switzerland | CHF |
ebay.ie | Ireland | EUR |
ebay.pl | Poland | PLN |
Each domain returns results in the local currency and language. The scraper automatically adapts to the search result format of each country site.
Output Example
{"title": "Sony WH-1000XM5 Wireless Noise Cancelling Headphones - Black","url": "https://www.ebay.com/itm/295463812345","price": 248.00,"price_text": "$248.00","currency": "USD","list_price": 399.99,"list_price_text": "$399.99","shipping_cost": 0.0,"shipping_text": "Free shipping","free_shipping": true,"condition": "Brand New","seller": "top_electronics 99.2% positive (12.3K)","seller_username": "top_electronics","seller_feedback_percentage": 99.2,"seller_feedback_count": 12345,"bids": null,"time_left": null,"listing_type": "buy_it_now","best_offer": false,"is_sponsored": false,"image_url": "https://i.ebayimg.com/images/g/.../s-l225.jpg","sold_info": "184+ sold","sold_count": 184,"location": "New Jersey, United States","domain": "ebay.com","search_query": "Sony WH-1000XM5","scraped_at": "2026-04-18T10:30:00Z"}
Integration & Export
Data can be exported in multiple formats directly from the Apify platform:
- JSON — structured data ready for APIs and applications
- CSV — import into spreadsheets, Google Sheets, or databases
- Excel — ready for business analysis and reporting
- XML — compatible with data pipelines and ETL tools
You can also integrate with 2,000+ apps via Apify's built-in integrations including Google Sheets, Slack, Zapier, Make (Integromat), webhooks, and Amazon S3.
Frequently Asked Questions
Does this scraper work without proxy? Yes, eBay works with datacenter proxies for most searches. Residential proxy is only needed if you experience blocking on high-volume scrapes.
How many products can I scrape per run? Up to 200 products per run. For larger datasets, run the actor multiple times with different search queries or pagination offsets.
Can I scrape specific product detail pages?
Yes, provide direct eBay product URLs via the productUrls input field instead of using keyword search.
How does pricing work? You pay $0.003 per product scraped and $0.05 per AI analysis report. There are no subscription fees — you only pay for what you use.
Does AI analysis require a paid API key? OpenRouter offers a free tier with limited credits. Anthropic, Google AI, and OpenAI require paid API keys. Ollama is free with self-hosted models. AI analysis is completely optional.
Can I monitor prices across multiple eBay country domains?
Yes. Run separate searches with different ebayDomain values (e.g., ebay.com, ebay.de, ebay.co.uk) to compare pricing for the same product across regions. This is especially useful for international arbitrage, where currency differences and local supply create significant price gaps for identical items.
Limitations
- Maximum 200 products per run (eBay pagination limit)
- Search results provide summary data; some fields (detailed description, full item specifics) are only available on product detail pages
- Auction ending times may not always be available in search results
- Seller information is not rendered in eBay's auction search result cards. Set
fetchDetails=trueto fetch seller info from individual listing pages (slower but complete). - Seller information may not be displayed for all listings in search results
- eBay may occasionally show different layouts which could affect some field extraction
- AI analysis requires an API key from OpenRouter, Anthropic, Google AI, or OpenAI (or a self-hosted Ollama instance)
Legal and Compliance
This actor scrapes publicly available data from eBay. Users are responsible for:
- Complying with eBay's Terms of Service
- Adhering to applicable data protection laws (GDPR, CCPA, etc.)
- Using extracted data in accordance with all relevant regulations
- Ensuring their use case does not violate any local or international laws
eBay product listings are publicly accessible. This tool collects only publicly displayed information and does not access any private or authenticated data. The actor implements polite crawling practices with delays between requests.
For questions or concerns, please open an issue on the GitHub repository.