Ebay Scraper
Pricing
from $4.99 / 1,000 results
Ebay Scraper
π eBay Scraper (ebay-scraper) extracts structured eBay data: titles, prices, photos, item specifics, sellers, shipping, bids, Buy It Now, sold/completed listings & reviews. π Ideal for product research, price tracking & competitor analysis. β‘ Fast, reliable, CSV/JSON exports.
Pricing
from $4.99 / 1,000 results
Rating
0.0
(0)
Developer
Scraper Engine
Maintained by CommunityActor stats
1
Bookmarked
13
Total users
0
Monthly active users
4 days ago
Last modified
Categories
Share
eBay Product Scraper β Prices, Sellers and Listing Data
eBay Product Scraper turns eBay search-result and individual listing URLs into structured product records β title, price, seller, availability, sold count, and item specifics like brand, UPC, and EAN β delivered as clean JSON with no parsing required. No eBay account or API key needed. Paste your eBay URLs, start a run, and watch full product records land in your dataset as each listing is scraped.
What is eBay Product Scraper?
eBay Product Scraper is an Apify Actor that extracts full product data from eBay search/category pages and individual /itm/ listing pages, returning one structured JSON record per product. It runs against eBay's public pages only β no eBay account, login, or developer API key is required. It's built for e-commerce sellers, price researchers, dropshippers, and developers who need eBay product data flowing directly into a spreadsheet, database, or AI pipeline instead of copy-pasting listings by hand.
What eBay product data is publicly available to scrape?
Anyone browsing eBay without an account sees a listing's title, price, images, seller, location, sold count, and specifics β exactly what eBay Product Scraper collects.
| Data Category | Publicly Available | Restricted behind eBay login |
|---|---|---|
| Title, subtitle, images, categories | Yes | β |
| Current price, "was" price, currency | Yes | β |
| Availability count/text, sold count | Yes | β |
| Seller username, item location | Yes | β |
| Brand, type, UPC, EAN, MPN specifics | Yes | β |
| Full bid history and bidder usernames | No | Signed-in eBay account |
| Contact-seller messaging | No | Signed-in eBay account |
| Best-offer negotiation status | No | Buyer/seller account |
eBay Product Scraper only returns publicly visible data β what any visitor sees, nothing behind a login wall.
What data can I extract with eBay Product Scraper?
eBay Product Scraper returns 22 fields per product covering listing identity, pricing, availability, seller, and item specifics.
Listing identity and description
| Field Name | Description |
|---|---|
url | Canonical listing URL |
itemNumber | eBay's numeric item ID, parsed from the URL |
title | Main listing title |
subTitle | Listing subtitle or short marketing line |
brand | Item brand from item-specifics ("Unbranded" if not listed) |
type | Product type/model from item-specifics |
categories | Breadcrumb category trail, as a list |
ean | EAN/GTIN code, null if eBay doesn't expose one |
mpn | Manufacturer part number, null if not listed |
upc | UPC code, or "Does not apply" if eBay marks it as such |
image | Main product image URL |
whyToBuy | Seller's shipping/returns/payment perk bullets, as a list |
Price, availability, seller and metrics
| Field Name | Description |
|---|---|
price | Current price as a number |
priceWithCurrency | Current price formatted with currency (e.g. "US $229.49") |
wasPrice | Strike-through "was" price as a number, null if none |
wasPriceWithCurrency | "Was" price formatted with currency, null if none |
available | Remaining quantity as a number, when eBay shows one |
availableText | Raw availability phrase (e.g. "Last one", "More than 10 available") |
sold | Number of units sold, when eBay shows a sold count |
seller | Seller's username |
itemLocation | Seller-stated item location |
scrapedAt | ISO-8601 UTC timestamp of when the row was scraped |
π€ Add-on: Need additional eBay data?
Need seller-level detail instead of individual listings? Scraper-Engine's ../Ebay-Seller-Scraper pulls public seller profile data β feedback score and live listing titles with prices β from seller profile URLs. Pair the two Actors to go from a seller's storefront straight to full per-listing detail in one pipeline.
How does eBay Product Scraper differ from the official eBay API?
eBay's own Browse, Finding, and Trading APIs require an eBay Developer Program account and OAuth before you can pull a single record; eBay Product Scraper needs neither β just eBay URLs. eBay's OAuth client-credentials grant (the token type used for app-level Browse API access) is capped at 1,000 token requests per day per eBay's own published rate-limit documentation, and production access requires application review.
| Feature | Official eBay API | eBay Product Scraper |
|---|---|---|
| Access requirements | eBay Developer Program registration + OAuth app approval | None β no account or API key |
| Auth token limit | Client-credentials grant capped at 1,000 requests/day (eBay OAuth docs) | No token-based limit; pacing is set via concurrency and requestDelaySeconds |
| Input method | Structured parameters against eBay's own search/category endpoints | Any eBay search-result or /itm/ listing URL, mixed freely |
| Setup time | Developer account, app keys, OAuth flow before first call | Paste URLs and start the run |
| Output schema | eBay's own API response shape, versioned by eBay | Fixed internal schema that stays stable across eBay UI changes |
Use the official API when you already have developer approval and need a first-party integration; use eBay Product Scraper for fast, no-setup extraction of specific searches or listings.
How to use eBay Product Scraper
eBay Product Scraper runs as an Apify Actor β no separate signup or API application beyond an Apify account is needed.
- Open eBay Product Scraper in the Apify Console (or Apify Store) and go to the Input tab.
- Add one or more eBay URLs to the required
urlsfield β search/category pages or individual/itm/listing links, mixed freely. - Optionally set
maxItems,concurrency,requestDelaySeconds, orproxyConfiguration. - Click Start to launch the run.
- Read results live from the run's dataset, or export as JSON/CSV once finished.
How to scale to bulk eBay product extraction
urls accepts an array, so a single run can mix many search/category pages (each auto-expanded into every product link on that results grid) with many direct /itm/ listing URLs β no separate loop or repeated runs needed. maxItems caps the total number of products collected across all supplied URLs, and concurrency controls how many listing pages are fetched in parallel.
What can you do with eBay product data?
- A price-monitoring analyst tracks
priceandwasPriceacross repeated runs, usingscrapedAtto build a markdown/price-drop timeline per listing. - A dropshipper sourcing inventory checks
brand,upc, andavailableto identify branded, in-stock items worth relisting. - A competitive researcher compares
seller,sold, andpriceWithCurrencyacross listings of the same product to see which sellers win on price and volume. - A reseller hunting deals filters by
availableTextanditemLocationto spot low-stock, nearby listings worth flipping. - An AI engineer feeds
title,subTitle,whyToBuy, andcategoriesinto a RAG pipeline or LLM agent so it can answer shopping questions or generate product comparisons grounded in real eBay listings.
How does eBay Product Scraper handle rate limits and blocking?
Every request is sent with curl_cffi impersonating a Chrome browser's TLS/HTTP2 fingerprint, which is what lets requests through eBay's Akamai bot detection instead of getting a thin or blocked response. Before scraping, the Actor does a homepage warm-up request to collect real session cookies, then reuses those cookies plus same-origin referer headers on every search and listing fetch so requests look like in-site navigation. concurrency and requestDelaySeconds (plus per-request jitter and a staggered request start) keep request bursts from a single IP low. Apify Proxy is used first when configured; if the proxy transport fails, the Actor automatically switches to a direct connection for the rest of the run rather than failing outright. If a listing page still comes back as a thin body or an Akamai "Pardon Our Interruption" challenge shell, the Actor retries that same page up to twice with a short backoff before giving up. When a page ultimately can't be read, or loads but has no extractable product data (e.g. an ended listing), the Actor writes a diagnostic row with error/errorReason instead of silently dropping it β and that row is not billed.
β¬οΈ Input
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
urls | Yes | array | eBay search/category result-page URLs and/or individual /itm/ listing URLs, mixed freely. Search URLs are expanded into every product found on the results grid; listing URLs are scraped directly. | ["https://www.ebay.com/sch/i.html?_nkw=massage+recliner+chair&_sacat=6024"] |
maxItems | No | integer | Ceiling on how many product pages to process after URL discovery. Default 20. Use 0 for no limit. Minimum 0, maximum 100000. | 50 |
proxyConfiguration | No | object | Apify Proxy configuration for smoother runs when eBay is picky about traffic. Prefilled with Apify Proxy enabled. | { "useApifyProxy": true } |
concurrency | No | integer | How many listing pages are fetched in parallel. Default 4. Minimum 1, maximum 50. Lower is gentler on eBay's anti-bot defenses. | 4 |
requestDelaySeconds | No | integer | Base delay (plus random jitter) added before each product fetch. Default 1. Minimum 0, maximum 60. | 1 |
Example input
{"urls": ["https://www.ebay.com/sch/i.html?_nkw=massage+recliner+chair&_sacat=6024","https://www.ebay.com/itm/116996574826"],"maxItems": 50,"proxyConfiguration": { "useApifyProxy": true },"concurrency": 4,"requestDelaySeconds": 1}
β¬οΈ Output
Every fully-parsed product is pushed to your Apify dataset as one typed JSON row, with the same 22-field schema on every run. Export results as JSON, CSV, Excel, or XML directly from the dataset, or pull them through the Apify API. Only rows with a real, fully-extracted product (a non-empty title) are billed as a row_result event β listings that fail to load or turn out to be ended/removed are still written to the dataset as diagnostic rows with an error field, but without a charged event; filter them out of billed results with an expression like !item.error.
Example output
{"url": "https://www.ebay.com/itm/116996574826","categories": ["Electronics", "Cell Phones & Accessories", "Cell Phones & Smartphones"],"itemNumber": "116996574826","title": "Apple iPhone 13 128GB Unlocked FACTORY UNLOCKED - EXCELLENT","subTitle": "1 YEAR WARRANTY - FREE SHIPPING - FREE RETURNS - UNLOCKED","whyToBuy": ["Free shipping and returns", "Top Rated Plus seller", "30 day returns accepted"],"price": 229.49,"priceWithCurrency": "US $229.49","wasPrice": null,"wasPriceWithCurrency": null,"available": 1,"availableText": "Last one","sold": 557,"image": "https://i.ebayimg.com/images/g/I14AAeSwV2dpcuJA/s-l1600.jpg","seller": "everythingforlesss","itemLocation": "Southfield, Michigan, United States","ean": null,"mpn": null,"upc": "Does not apply","brand": "Apple","type": "Apple iPhone 13","scrapedAt": "2026-07-18T09:10:14.788043+00:00"}
How does it work?
For each search or category URL, the Actor parses eBay's current results-grid markup to collect every product link on the page (with legacy-markup selectors kept as a fallback); individual /itm/ URLs are used as-is. Each page is fetched with a Chrome-TLS-impersonated HTTP client after a homepage warm-up collects session cookies, so requests reach eBay looking like real browser navigation rather than a cold script hit β through Apify Proxy when configured, falling back to a direct connection if the proxy fails. The listing page's JSON-LD product/offer/breadcrumb data plus its item-specifics table are parsed into the fixed output schema described above. Only data visible to any logged-out visitor is ever returned, and the output schema stays the same even when eBay changes its page layout, because parsing logic is updated independently of the fields you receive.
Integrations
eBay Product Scraper runs on the Apify platform, so it works with anything that can call an Apify Actor: the REST API, the official client libraries, Apify's MCP server for AI agents, and no-code automation tools.
Calling eBay Product Scraper programmatically
from apify_client import ApifyClientclient = ApifyClient("<APIFY_TOKEN>")run = client.actor("scraper-engine/ebay-scraper-pay-per-events").call(run_input={"urls": ["https://www.ebay.com/itm/116996574826"],"maxItems": 50,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["priceWithCurrency"])
Works in Go, Ruby, Node.js, cURL β any language that can make an HTTP request, authenticated with your Apify API token.
MCP integration for AI agents
eBay Product Scraper can be exposed to any MCP-compatible client through Apify's official MCP server: run npx @apify/actors-mcp-server with your APIFY_TOKEN set, and register it as an MCP server in Claude Desktop, Claude Code, or another MCP-aware agent client. Once registered, an agent can call the Actor as a tool and read results back as structured data β no custom API wrapper needed.
No-code tools (n8n, Make, LangChain)
In n8n, use the HTTP Request node pointed at the Actor's run-sync-get-dataset-items endpoint with your API token to get results back in the same workflow step. In Make, add the Apify app's "Run Actor" module and map urls from an earlier step. In LangChain (or LangGraph), call the Actor through apify-client or the ApifyActorsTool wrapper and pass the returned dataset items straight into a chain or agent as context.
Is it legal to scrape eBay product data?
Scraping publicly available product data β the kind visible to any logged-out eBay visitor β is generally legal in most jurisdictions. eBay Product Scraper only returns data that appears on public listing and search pages; it does not access any account, message, or login-gated content. This is product and business listing data, not personal data about individuals, so it falls under eBay's Terms of Service and general web-scraping/database-rights considerations rather than personal-data regimes like GDPR or CCPA. Using the data still means respecting eBay's Terms of Service, particularly around bulk storage, republication, and commercial reuse. Consult legal counsel if your use case involves large-scale storage or resale of scraped data.
Frequently asked questions
What eBay product fields does eBay Product Scraper return?
It returns 22 fields per product, including title, priceWithCurrency, seller, available/availableText, and sold β see the full fields table above for all of them.
Does eBay Product Scraper require an eBay account or login?
No. The Actor scrapes public eBay pages directly; it collects its own session cookies via an internal homepage warm-up, but this requires no eBay account, password, or API key from you.
How many eBay products can I extract in one run?
As many as your urls list yields, up to the maxItems cap (default 20, schema maximum 100000, or set to 0 for no cap). A single run can mix multiple search pages and direct listing URLs.
What happens if a listing is delisted, ended, or out of stock?
If the page loads but eBay's product data (JSON-LD and item-specifics) is empty because the listing has ended or been removed, the Actor writes a diagnostic row tagged "error": "listing_unavailable_or_ended" instead of a fabricated record, and this row is not billed. Pages that fail to load entirely get a similar uncharged row with error/errorReason set.
Can I scrape multiple eBay products at once?
Yes. The urls input is an array β add multiple search/category URLs and/or multiple /itm/ listing URLs in the same run, and they're all processed together up to maxItems.
Does eBay Product Scraper work with Claude, ChatGPT, and other AI agent tools?
Yes. It's callable as a standard Apify Actor through Apify's MCP server (npx @apify/actors-mcp-server) for MCP-aware clients like Claude Desktop and Claude Code, and as a plain HTTP/API endpoint from any other agent framework.
How does eBay Product Scraper compare to other eBay scrapers?
As observed on the Apify Store on 2026-07-25, some eBay scrapers accept only a search keyword as input (e.g. Oneary's eBay Listing Scraper) or a keyword array with page limits (e.g. Automation Lab's eBay Scraper). eBay Product Scraper instead accepts both eBay search/category URLs and direct /itm/ listing URLs mixed in the same run, and marks failed or ended listings as uncharged diagnostic rows rather than dropping them or billing for empty records.
Does eBay Product Scraper return data in a format LLMs can use directly?
Yes. Output is typed, normalized JSON with the same field names on every run β no HTML, no selectors to write. Pass it directly to an LLM prompt, index it into a vector store, or hand it to an agent tool as-is.
What happens when eBay changes its layout or anti-bot system?
The Actor is maintained against eBay's current markup, with legacy selector fallbacks already in place to absorb minor layout rollbacks, and the output field names stay stable even when the underlying parsing logic changes. No specific turnaround time for fixes is promised.
Can I use eBay Product Scraper without managing proxies or browser infrastructure?
Yes. There's no headless browser to configure β requests go out via a Chrome-TLS-impersonating HTTP client. Apify Proxy is optional and prefilled on; if you enable it and it becomes unreachable mid-run, the Actor automatically falls back to a direct connection instead of failing the run.
Which eBay product fields work best for AI training data and RAG indexing?
For RAG, index the high-information text fields: title, subTitle, whyToBuy, and categories. For structured training features, use the consistently-typed numeric/boolean fields: price, wasPrice, available, and sold. All fields return as typed primitives (numbers, strings, lists, or null), not pre-formatted HTML.
Related scrapers
| Scraper Name | What it extracts |
|---|---|
| ../Ebay-Seller-Scraper | Public eBay seller profile data β feedback score and live listing titles with prices |
| ../amazon-bestsellers-scraper | Amazon best-seller rankings and product details by category |
| ../amazon-search-products-scraper-top-rated-best-reviewed | Amazon search-result products filtered by rating and review volume |
| ../alibaba-email-scraper-top-supplier-leads | Alibaba supplier contact emails and lead details |
Your feedback
Found a bug or missing a field? Let us know through this Actor's Issues tab on Apify so we can take a look. Feedback like this directly shapes what gets fixed and added next.
