eBay Product & Listings Scraper avatar

eBay Product & Listings Scraper

Pricing

Pay per event

Go to Apify Store
eBay Product & Listings Scraper

eBay Product & Listings Scraper

Search eBay's live active listings by keyword. Get title, price, condition, buying format, item URL, and thumbnail per card. Filter by category, condition, price range, and buying format. We handle the warm-up cookies and retries so you get clean rows every run.

Pricing

Pay per event

Rating

0.0

(0)

Developer

DevilScrapes

DevilScrapes

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

5 hours ago

Last modified

Categories

Share

eBay Product & Listings Scraper

eBay Product & Listings Scraper

The devil's in the data. ๐Ÿ˜ˆ

$1.25 / 1,000 results โ€” pay only for results that land, no credit card to try.

Search eBay's live "for sale" listings by keyword and get back structured rows: title, price, condition, buying format, item URL, and thumbnail โ€” ready for reseller pricing tools, price-intelligence pipelines, and market research. eBay's search page fights back with a first-request block; we handle the warm-up cookies, the retries, and the fingerprint rotation so your dataset stays clean.

๐ŸŽฏ What this 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.

FieldTypeDescription
item_idstringeBay item ID, parsed from the item link
titlestringListing title, accessibility suffix stripped
pricenumber | nullListing price in USD; null on an unresolvable range/text price
currencystringFixed "USD" for v1 (ebay.com only)
conditionstring | nullItem condition (e.g. "Pre-Owned", "Open Box")
buying_formatstring | nullOne of "auction", "fixed_price", "best_offer", "unknown"
bids_countinteger | nullBid count, auction listings only
item_urlstringCanonical https://www.ebay.com/itm/<item_id> link
image_urlstring | nullThumbnail image URL
querystringEcho of your search query
scraped_atstringISO 8601 UTC timestamp

๐Ÿ”ฅ Features

  • 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 fingerprints โ€” curl-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 backoff โ€” 408 / 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.

โš™๏ธ How to use it

  1. Open the Actor input form in Apify Console.
  2. Enter your query (required) โ€” the same keywords you'd type into eBay's search box.
  3. Optionally narrow with categoryId, conditionIds, minPrice/maxPrice, or buyingFormat.
  4. Set maxResults to cap how many rows to collect (default 100, up to 1000).
  5. Leave proxyConfiguration on Apify Proxy (default) for stable, unblocked runs.
  6. Click Start. Results stream into the default dataset as JSON, CSV, Excel, or XML.
{
"query": "iphone 13",
"maxResults": 100
}

Filtered search โ€” condition, price band, buying format

{
"query": "fender stratocaster",
"maxResults": 50,
"conditionIds": ["3000"],
"minPrice": 200,
"maxPrice": 1200,
"buyingFormat": "fixed_price"
}

๐Ÿ“ฅ Input

FieldTypeRequiredDefaultDescription
querystringyesโ€”Search keywords, 1-200 characters
maxResultsintegerno100Cap on rows collected, 1-1000
categoryIdstringnoโ€”eBay numeric category ID
conditionIdsstring[]noโ€”eBay numeric condition IDs
minPricenumbernoโ€”Lowest price to include, USD
maxPricenumbernoโ€”Highest price to include, USD (must be >= minPrice)
buyingFormatstringno"any"One of "any", "fixed_price", "auction", "best_offer"
proxyConfigurationobjectno{"useApifyProxy": true}Apify Proxy configuration

๐Ÿ“ค Output

One row per real (non-sponsored) listing card, up to maxResults. Export to JSON, CSV, Excel, or XML from the Apify Console.

Example row:

{
"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

This Actor is priced per-event โ€” you pay only for results that land in your dataset.

EventPrice (USD)When charged
actor-start$0.05Once at the start of each run
result-row$0.0012Per listing row written to the dataset

A 100-row run costs $0.17 total. A full 1,000-row run costs $1.25 โ€” inside the $1.00-1.50/1,000 band the current eBay-scraper category charges, with a cleaner, actively-maintained dataset behind it.

๐Ÿšง 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.

๐Ÿ’ฌ Your feedback

This Actor is built and maintained by Devil Scrapes. If a search returns fewer rows than expected, or you notice eBay's markup has shifted, open an issue on the Actor page and we'll patch it within a release cycle. The target blocks; we get back up.