eBay Product & Listings Scraper icon

E-commerce

eBay Product & Listings Scraper

Search eBay's live active listings by keyword and get clean, structured rows -- title, price, condition, buying format, item URL, and thumbnail -- with sponsored and malformed cards filtered out automatically.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

One row per active eBay listing card matching your search. Sponsored placeholder cards ("Shop on eBay") and malformed cards are filtered out automatically — you only get real listings.

What we handle for you

  • Keyword search, no login required — search eBay's live listings the same way a shopper does, no account or API key needed on your end.
  • Filter by category, condition, price range, and buying format — narrow results before you pay for a single row.
  • Sponsored and malformed cards filtered automatically — placeholder "Shop on eBay" cards and broken cards never reach your dataset.
  • We rotate browser fingerprintscurl-cffi with Chrome/Firefox/Safari TLS impersonation, so eBay's servers see real-browser traffic, not raw Python.
  • We handle the warm-up dance — eBay's search endpoint 403s a cold request; we collect the bot-manager cookie first, then reuse that session for every search page.
  • We retry with exponential backoff408 / 429 / 5xx trigger a retry sequence (2s → 30s cap, up to 5 attempts), honouring Retry-After.
  • We rotate proxies and sessions on every block — a fresh session_id and a fresh impersonation profile on every 403, through Apify Proxy.
  • Clean, Pydantic-validated rows — every dataset row passes schema validation before it lands. ISO 8601 timestamps, stable column names.
  • Pay only for results that land — no data, no charge beyond the small actor-start warm-up fee.

Use cases

  • Reseller price-checking — pull live asking prices for a product line before you list or restock, filtered by condition and price band.
  • Price-intelligence pipelines — feed price / condition / buying_format into a downstream pricing model, refreshed on a schedule.
  • Market research — sweep a category for buying-format mix (auction vs. fixed-price vs. best-offer) and price distribution.
  • Arbitrage scouting — compare price across min_price/max_price bands to spot underpriced listings worth flipping.
  • Competitive monitoring — track how many active listings and what price range a competitor's product category holds right now.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
query string yes Search keywords, passed to eBay's search box (e.g. iphone 13, fender stratocaster). 1-200 characters.
maxResults integer no Cap on how many result rows to collect across pages. Range 1-1000.
categoryId string no eBay numeric category ID to narrow the search (e.g. 9355 for cell phones). Leave blank to search all categories.
conditionIds array no eBay numeric item-condition IDs to filter by (e.g. 1000 for New, 3000 for Used). Leave blank for all conditions.
minPrice number no Lowest price to include, in USD. Leave blank for no lower bound.
maxPrice number no Highest price to include, in USD. Must be >= Minimum price when both are set. Leave blank for no upper bound.
buyingFormat string no Restrict results to a specific buying format.
{
  "query": "iphone 13",
  "maxResults": 100,
  "buyingFormat": "any",
  "proxyConfiguration": {
    "useApifyProxy": true
  }
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

item_idtitlepricecurrencyconditionbuying_formatbids_countitem_urlimage_urlqueryscraped_at

{
  "item_id": "196123456789",
  "title": "Apple iPhone 13 Pro Max 256GB Unlocked",
  "price": 270.74,
  "currency": "USD",
  "condition": "Pre-Owned",
  "buying_format": "best_offer",
  "bids_count": null,
  "item_url": "https://www.ebay.com/itm/196123456789",
  "image_url": "https://i.ebayimg.com/images/g/abc123/s-l500.jpg",
  "query": "iphone 13 pro max",
  "scraped_at": "2026-08-13T12:00:00+00:00"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
Result row emitted$0.0012Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

Limitations

  • Active listings only — this Actor covers eBay's live "for sale" search. Sold/completed listings are a separate product.
  • ebay.com (US) only, v1 — other eBay marketplaces and non-USD currencies are out of scope for this version.
  • Card-level data only — description, seller feedback score, shipping cost, item specifics, and return policy require a detail-page fetch and aren't included.
  • No seller identity — seller username, store name, and feedback score aren't exposed on the search-result card.
  • Point-in-time runs — this Actor doesn't monitor for new listings continuously; schedule repeat runs via Apify's Scheduler if you need that.
  • Unresolvable prices ship as null — a range or starting-bid price that can't resolve to one number ships price: null rather than a guessed value.

FAQ

Q: Do I need an eBay account or API key?
No. This Actor searches eBay's public listings the same way a shopper does — no login, no eBay Developer API key required.
Q: Can I filter by condition and price at the same time?
Yes — conditionIds, minPrice, maxPrice, and buyingFormat all combine in a single search.
Q: What happens if eBay blocks the request?
We rotate the session and browser fingerprint and retry the warm-up-then-search flow automatically. If a run ends with zero results, you'll see a clear status message explaining why (no matches vs. block-exhausted) rather than a silent empty dataset.
Q: Does this cover sold or completed listings?
No — this Actor covers active, currently-listed items only. Sold/completed listing data is a separate Devil Scrapes Actor.
Q: Can I get more than 1,000 results per run?
Not in a single run — maxResults caps at 1000. Narrow your query or split by categoryId/price band and run multiple queries for larger coverage.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run