DEV Community

agenthustler
agenthustler

Posted on

Scraping eBay in 2026: Product Listings, Prices & Seller Data via API

Why Scrape eBay?

eBay is a goldmine of e-commerce data. With over 1.9 billion live listings across 190 markets, it's one of the largest product databases on the internet. Here's why developers and sellers are scraping it:

  • Price tracking — Monitor competitor pricing and get alerts when items drop below your threshold
  • Arbitrage — Find products selling cheaper on one eBay domain than another (eBay.de vs eBay.com price gaps are real)
  • Competitor analysis — Track what your competitors sell, at what price, and how fast
  • Market research — Understand demand, pricing trends, and seasonal patterns before launching a product

The problem? Building a reliable scraper from scratch takes time. Maintaining it takes even more. Let me show you a faster way.

The Good News: eBay Doesn't Fight Back (Much)

Unlike Amazon, which aggressively blocks datacenter IPs and serves CAPTCHAs, eBay's search pages serve clean, full HTML even from datacenter proxies. No JavaScript rendering needed. No fingerprinting. No CAPTCHA walls on search results.

This means:

  • Simple HTTP requests work fine for search pages
  • You don't need expensive residential proxies
  • Response times are fast
  • Data extraction is reliable

That said, product detail pages and high-volume requests still need some care — which is where a managed solution helps.

International Multi-Domain Scraping

eBay operates localized marketplaces with different inventories, prices, and currencies:

Domain Market Currency
ebay.com United States USD
ebay.co.uk United Kingdom GBP
ebay.de Germany EUR
ebay.com.au Australia AUD
ebay.ca Canada CAD
ebay.fr France EUR
ebay.it Italy EUR
ebay.es Spain EUR

Cross-domain scraping unlocks arbitrage opportunities. The same product can have a 20-40% price difference between markets. A Bosch drill that's €89 on eBay.de might be $129 on eBay.com — that's margin waiting to be captured.

A Ready-Made eBay Scraper on Apify

I built an eBay Scraper actor on Apify that handles all of this out of the box. Here's what it does:

Keyword search with filters:

  • Search any term across any of the 8 domains
  • Filter by condition (new, used, refurbished)
  • Set price range limits
  • Sort by price, relevance, or ending soonest

Product detail mode:

  • Full item descriptions
  • Seller information and feedback scores
  • Shipping options and costs
  • Item specifics and specifications
  • Item condition details

Data fields returned:

{
  "title": "Apple MacBook Pro 14" M3 Pro 2023 512GB",
  "price": "$1,599.00",
  "condition": "Brand New",
  "shipping": "Free shipping",
  "seller": "tech_deals_outlet",
  "sellerFeedback": "99.2% positive",
  "itemNumber": "395012345678",
  "url": "https://www.ebay.com/itm/395012345678",
  "imageUrl": "https://i.ebayimg.com/images/g/.../s-l1600.jpg",
  "domain": "ebay.com"
}
Enter fullscreen mode Exit fullscreen mode

Python Code Example

Here's how to use it with the apify-client Python package:

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")

run_input = {
    "search": "mechanical keyboard",
    "domain": "ebay.com",
    "condition": "new",
    "maxPrice": "150",
    "sortBy": "price_asc",
    "maxItems": 50,
}

run = client.actor("cryptosignals/ebay-scraper").call(run_input=run_input)

items = list(client.dataset(run["defaultDatasetId"]).iterate_items())

for item in items:
    print(f"{item['title']}{item['price']}")
Enter fullscreen mode Exit fullscreen mode

Install the client:

pip install apify-client
Enter fullscreen mode Exit fullscreen mode

Multi-Domain Price Comparison

Want to compare prices across countries? Run the scraper against multiple domains:

from apify_client import ApifyClient

client = ApifyClient("YOUR_APIFY_TOKEN")
domains = ["ebay.com", "ebay.co.uk", "ebay.de", "ebay.com.au"]
search_term = "Sony WH-1000XM5"

all_results = {}

for domain in domains:
    run = client.actor("cryptosignals/ebay-scraper").call(
        run_input={
            "search": search_term,
            "domain": domain,
            "condition": "new",
            "maxItems": 10,
        }
    )
    items = list(client.dataset(run["defaultDatasetId"]).iterate_items())
    all_results[domain] = items

    if items:
        prices = [item["price"] for item in items]
        print(f"{domain}: {len(items)} results, lowest: {prices[0]}")
Enter fullscreen mode Exit fullscreen mode

Use Case: Price Tracking Dashboard for Sellers

Here's a practical example — a scheduled price tracker that runs daily and alerts you to price changes:

import json
from datetime import datetime
from apify_client import ApifyClient

PRODUCTS_TO_TRACK = [
    {"search": "iPhone 15 Pro Max 256GB", "domain": "ebay.com"},
    {"search": "Samsung Galaxy S24 Ultra", "domain": "ebay.com"},
    {"search": "MacBook Air M3", "domain": "ebay.co.uk"},
]

client = ApifyClient("YOUR_APIFY_TOKEN")
price_log = []

for product in PRODUCTS_TO_TRACK:
    run = client.actor("cryptosignals/ebay-scraper").call(
        run_input={
            **product,
            "condition": "new",
            "sortBy": "price_asc",
            "maxItems": 5,
        }
    )
    items = list(client.dataset(run["defaultDatasetId"]).iterate_items())

    if items:
        price_log.append({
            "date": datetime.now().isoformat(),
            "query": product["search"],
            "domain": product["domain"],
            "lowest_price": items[0]["price"],
            "avg_top5": sum(
                float(i["price"].replace("$","").replace("£","").replace("","").replace(",",""))
                for i in items
            ) / len(items),
        })

# Save to JSON for your dashboard
with open("price_history.json", "a") as f:
    for entry in price_log:
        f.write(json.dumps(entry) + "
")
        print(f"[{entry['domain']}] {entry['query']}: {entry['lowest_price']}")
Enter fullscreen mode Exit fullscreen mode

Schedule this on Apify's built-in scheduler or with a simple cron job, and you've got a price tracking system running hands-free.

Getting Started

The eBay Scraper is available on Apify Store at $4.99/month with a 7-day free trial starting April 3, 2026.

That means you can:

  1. Sign up for a free Apify account
  2. Start the 7-day trial — no credit card needed for the trial period
  3. Run the scraper against all 8 eBay domains
  4. Export data as JSON, CSV, or push to your own API
  5. Decide if it's worth keeping

For $4.99/month, you skip the maintenance headache of keeping a custom scraper alive. eBay changes its HTML regularly — the actor handles that so you don't have to.

Try it out: apify.com/cryptosignals/ebay-scraper


Questions? Drop a comment below or open an issue on the actor page.

Top comments (0)