πβ¨ eBay Search Scraper
Pricing
from $4.99 / 1,000 results
πβ¨ eBay Search Scraper
πβ¨ eBay Search Scraper pulls real-time marketplace data from eBay search results β titles, prices, images, sellers, ratings, shipping, condition & item specifics. π Ideal for price tracking, market research, SEO, and product monitoring. π Supports keywords, filters & pagination.
Pricing
from $4.99 / 1,000 results
Rating
0.0
(0)
Developer
Scraper Engine
Maintained by CommunityActor stats
0
Bookmarked
24
Total users
6
Monthly active users
a day ago
Last modified
Categories
Share
eBay Search Scraper β Prices, Sellers and Shipping Data
eBay Search Scraper turns any eBay keyword search β or a list of direct listing and search-result URLs β into structured JSON rows: title, price, condition, seller username and feedback percentage, shipping summary, item specifics, images and description text. Every row is typed, normalized JSON, so there's no HTML to parse on your side, and rows land in your dataset live as each listing finishes. Open the Actor's page on Apify and run it with a query or a URL list to see your first rows in minutes.
What is eBay Search Scraper?
eBay Search Scraper is an Apify Actor that runs an eBay keyword search β or works through a list of eBay item and search-result URLs you supply β and returns each matching listing as a structured JSON record, covering price, condition, seller feedback, shipping, returns and full item specifics. No eBay account or login is required: the source code only issues plain HTTP requests to eBay's public search and item pages, and the input schema has no credential or sign-in field. It's built for resellers, price trackers, sourcing and procurement teams, and developers wiring eBay data into apps, spreadsheets or AI pipelines.
What eBay listing data is publicly available to scrape?
Everything shown on an eBay search-results page and item page is publicly accessible without logging in β title, price, condition, seller identity and feedback score, shipping and returns terms, images, and the item specifics table.
| Data Category | Publicly Available | Restricted (needs an eBay login) |
|---|---|---|
| Title, price, condition | β Shown on every listing | β |
| Seller username & feedback % | β Shown on the item page seller card | Full feedback history and private seller messages |
| Shipping cost & return policy text | β Shown in the buy box | Real-time carrier tracking after purchase |
| Item specifics (brand, model, etc.) | β Shown on the item page | Category attributes only revealed after picking a variation |
| Images | β All listing photos | β |
| Quantity available / sold indicators | β When eBay itself displays them | Full historical sales figures |
| Auction status (current price, time left) | β Shown on the listing | Bidder identity β eBay anonymizes this itself |
| Buyer messaging / watchlists | β | Always requires an eBay account |
eBay Search Scraper only returns publicly visible data β what any visitor sees on eBay's search results and item pages. Nothing behind a login wall.
What data can I extract with eBay Search Scraper?
eBay Search Scraper returns listing identity and description fields alongside price, seller and fulfillment data β every key below is written by the Actor's row-building code (src/main.py, src/extract_product_data.py), not just the columns shown in the default dataset view.
| Field Name | Description |
|---|---|
itemId | eBay's numeric item/listing ID, read from the item specifics block or parsed from the URL. |
title | Listing title. |
itemUrl | Canonical normalized URL of the fetched listing. |
source_url | The exact URL that was requested for this row (same value as itemUrl). |
condition | Short condition label (e.g. New, Used, Refurbished). |
price | Current listing price, as displayed. |
shipping | One-line shipping/delivery summary text. |
sellerUsername | Seller's eBay username. |
sellerFeedbackPercent | Seller's positive-feedback percentage (number). |
scrapedAt | ISO-8601 UTC timestamp of when the row was collected. |
images | Array of image objects, each with thumbnails, original, and zoom URL variants. |
listing_card | Raw summary card: title, price, condition, shipping, returns, seller username, seller review count and positive-feedback percentage, plus a sponsored flag. |
about_this_item_min_view | Item specifics table (brand, item number, condition, quantity, and every other seller-declared attribute eBay lists). |
item_desc_seller | Seller's item description β iframeUrl, a short preview, and plainText (full text, only populated when π Fetch full item description is on). |
condition_description | Condition detail rows plus the condition section title. |
buy_box | Buy-box block: BIN price, financing messages, delivery message, and seller-info snippet. |
quantity | Stock/quantity block: displayLabel, maxQuantity, maxQuantityReached, outOfStock. |
shipping_section_module | Structured shipping data: rate and destination, parsed from eBay's shipping schema. |
returns_section_module | Structured return-policy data items. |
payments_section_module | Accepted payment methods list. |
shipping_returns_payment_section_module | Combined shipping/returns/payment data-items block as eBay groups it on the page. |
about_this_seller_section_module | Seller profile block: username, trust signals, and feedback line. |
buy_box_cta | The listing's call-to-action button labels (Buy It Now, Add to Cart, etc.), read from the page's own localized strings. |
πͺͺ Listing identity & description fields
itemId, title, itemUrl, source_url, condition, images, listing_card, about_this_item_min_view, item_desc_seller, condition_description β what the listing is, what it's called, what condition it's in, and its photos and full description.
π° Price, seller & fulfillment fields
price, shipping, sellerUsername, sellerFeedbackPercent, buy_box, quantity, shipping_section_module, returns_section_module, payments_section_module, shipping_returns_payment_section_module, about_this_seller_section_module, buy_box_cta, scrapedAt β how much it costs, who's selling it, how trusted they are, and how it ships.
π€ Add-on: Need additional eBay data?
Already have item URLs and want a lighter, watchlist-style pull instead of a fresh search? eBay Product Details Scraper β Watchlist & Price Details enriches a list of eBay item links with price-tracking snapshots run after run, and pairs naturally with this Actor's itemUrl output.
How does eBay Search Scraper differ from the official eBay API?
eBay's own Browse API requires developer registration, OAuth application keys, and defaults to 5,000 calls per day per application β increased only via a manual "Application Growth Check" request (eBay Developers Program documentation, developer.ebay.com, checked 2026-07-30). eBay Search Scraper skips that setup entirely: you provide a search term or URL list and run it from the Apify Console.
| Feature | eBay Browse API | eBay Search Scraper |
|---|---|---|
| Access setup | Developer account, OAuth app keys, scope approval | Run directly from Apify β no eBay developer account |
| Default call volume | 5,000 calls/day per application by default (developer.ebay.com, checked 2026-07-30) | Bounded by your own maxItems (up to 5,000) and Apify usage plan |
| Data per listing | Normalized fields defined by the API's response schema | Full scraped item page: item specifics, description text, shipping/returns copy, seller feedback |
| Regional marketplaces | Requires a different marketplace-ID header per site | One domain field covering 17 eBay sites |
| Bulk / direct-item mode | One item lookup per call | startUrls accepts a mixed list of item and search-result URLs in a single run |
| Setup time | Register app, obtain keys, implement OAuth token refresh | Provide input, click Start |
Use the official API when you're building a production integration that needs eBay's own terms and support. Use eBay Search Scraper for fast, ad-hoc or recurring extraction without a developer application.
How to use eBay Search Scraper
Runs happen entirely inside the Apify platform β no separate signup or API key is required to start one from the Console.
- Open the eBay Search Scraper page on Apify and click Try for free (or Start, if you already have it saved).
- Provide input β nothing is required. Leave π Search query at its default (
coffee) or type your own term, or paste eBay links into π Direct item / search URLs instead. - Set optional filters β π Country (eBay site), π Item location filter, β¬οΈ Sort order, π·οΈ Show only, and π Buying format.
- Set π Max pages to scrape and π― Max listings to scrape, then start the run.
- Download results as JSON or CSV from the Output tab, or read them via the Apify API while the run is still going β rows are pushed live as each listing is scraped.
How to scale to bulk listing extraction
π Direct item / search URLs (startUrls) accepts an array β paste dozens of eBay item links and/or search-result page links into one run, and they replace π Search query, π Country, filters and pagination entirely for that run. There's no separate multi-keyword field: to cover several distinct searches in parallel, either paste each search's result-page URL into startUrls, or launch one run per keyword and combine the datasets afterward.
What can you do with eBay listing data?
- π·οΈ Resellers and dropshippers sourcing inventory use
priceandshippingto price-match a listing against their own store before relisting it. - π Market analysts use
sellerFeedbackPercentandconditionto see how price varies by seller trust tier across a single search. - ποΈ Price-tracking tool builders capture
priceat eachscrapedAttimestamp against a stableitemIdto build drop alerts over repeated runs. - π¬ Procurement and sourcing teams use
about_this_item_min_view(item specifics) andquantityto shortlist bulk lots before contacting a seller. - π€ AI engineers feed
item_desc_seller.plainTextandlisting_cardstraight into a RAG index or agent's tool-calling context β typed, stable field names mean no re-parsing between runs.
How does eBay Search Scraper handle rate limits and blocking?
Requests escalate through three tiers as needed: direct connection, Apify Proxy datacenter IPs, then Apify Proxy residential IPs; once a residential fetch succeeds, the run stays on that "sticky" tier for the rest of the run to cut further blocks. Product-page fetches use Chrome-131 TLS impersonation (curl_cffi) with up to 3 retries and exponential backoff on timeouts, 429/503 responses, and other HTTP errors. Response HTML is scanned for CAPTCHA and "unusual traffic" challenge signatures to detect a soft block versus a real page. eBay's own deterministic "item removed" error page is recognized separately and never retried, since no proxy tier can recover a delisted listing. β οΈ If π‘οΈ Use Apify Proxy is left off and a request gets blocked, the Actor cannot escalate to a fresh proxy and logs a warning instead of continuing that fetch. The Actor does not solve CAPTCHAs β a hard security-challenge page is treated as unrecoverable for that request and skipped.
β¬οΈ Input
None of the fields below are required β every one has a default or an empty prefill.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
query | No | string | Search keywords. Ignored when startUrls is filled in. Default: "coffee". | "vintage camera" |
startUrls | No | array | Direct eBay item URLs (/itm/...) and/or eBay search-result page URLs. When non-empty, replaces query + domain + filters + pagination. Default: []. | ["https://www.ebay.com/itm/1234567890123"] |
domain | No | string (enum) | eBay storefront to search. Values: ebay.com.au, ebay.at, ebay.ca, ebay.fr, ebay.de, ebay.com.hk, ebay.ie, ebay.it, ebay.com.my, ebay.nl, ebay.ph, ebay.pl, ebay.com.sg, ebay.es, ebay.ch, ebay.co.uk, ebay.com. Default: "ebay.com". | "ebay.co.uk" |
location | No | string (enum) | eBay's "Item Location" filter. Values: "1" (US Only), "2" (Worldwide), "3" (North America incl. US). Default: "1". | "2" |
sort | No | string (enum) | Result order. Values: "12" (Best Match), "1" (ending soonest), "10" (newly listed), "15" (price+shipping low first), "16" (price+shipping high first), "7" (distance nearest), "3" (price high first), "2" (price low first). Default: "12". | "2" |
show_only | No | array (enum items) | Quick-filter shortcuts. Values: completed_items, sold_items, free_returns, returns_accepted, authorized_seller, deals_and_savings, sale_items, listed_as_lots, benefits_charity, authenticity_guarantee, free_shipping, local_pickup. Default: []. | ["free_shipping"] |
buying_format | No | string (enum) | Values: "Auction", "BIN" (Buy It Now), "BO" (Accepts Offers). Default: "BIN". | "Auction" |
max_pages | No | integer | Search-result pages to walk. Minimum: 1. Default: 1. | 3 |
maxItems | No | integer | Hard cap on rows saved this run. Minimum: 1, maximum: 5000. Default: 20. | 100 |
useProxy | No | boolean | Route requests through Apify Proxy. Default: true. | true |
fetch_description_iframe | No | boolean | Also fetch the seller's full item-description text (slower). Default: false. | false |
proxyConfiguration | No | object | Apify Proxy configuration (groups, sessions). Prefill: {"useApifyProxy": true}. | {"useApifyProxy": true} |
Example input
{"query": "vintage camera","startUrls": [],"domain": "ebay.com","location": "1","sort": "12","show_only": ["free_shipping"],"buying_format": "BIN","max_pages": 3,"maxItems": 100,"useProxy": true,"fetch_description_iframe": false,"proxyConfiguration": {"useApifyProxy": true}}
β¬οΈ Output
Every dataset row is one eBay listing, returned as typed, normalized JSON with a consistent schema across runs. Export it as JSON, CSV, Excel, or HTML table straight from the Output tab, or read it live through the Apify API while the run is still going.
Example output
{"listing_card": {"title": "Vintage 35mm Film Camera - Fully Tested, Working","sponsored": false,"link": "https://www.ebay.com/itm/1234567890123","condition": "Used","thumbnail": "https://i.ebayimg.com/images/g/abcAAOSw~lorem/s-l64.jpg","price": "$89.99","shipping": "Free shipping","returns": "30-day returns Β· Buyer pays for return shipping","seller_username": "camera_vault_1987","seller_reviews": 4213,"seller_positive_feedback_in_percentage": 99.2},"images": [{"thumbnails": [{"url": "https://i.ebayimg.com/images/g/abcAAOSw~lorem/s-l64.jpg", "title": "1 of 6", "type": "thumbnail"}],"original": {"url": "https://i.ebayimg.com/images/g/abcAAOSw~lorem/s-l400.jpg", "title": "1 of 6", "type": "original"},"zoom": {"url": "https://i.ebayimg.com/images/g/abcAAOSw~lorem/s-l1600.jpg", "title": "1 of 6", "type": "zoom"},"title": "1 of 6","uploadedSize": {"height": 1600, "width": 1600},"mediaType": "IMAGE"}],"shipping_section_module": {"title": "Shipping","sections": {"shipping": {"dataItems": {"shippingRate": {"label": "Shipping Rate", "value": "0.00 USD"},"shippingDestination": {"label": "Shipping Destination", "value": "US"}}},"title": {"title": "Delivery"}}},"returns_section_module": {"title": "Returns","sections": {"returns": {"dataItems": [{"label": "Return Policy Category", "value": "https://schema.org/MerchantReturnFiniteReturnWindow"},{"label": "Applicable Countries", "value": "US"}]}}},"payments_section_module": {"title": "Payments","sections": {"paymentMethods": {"dataItems": ["PayPal", "Visa", "Mastercard"]}}},"condition_description": {"sections": [{"dataItems": [{"label": "Condition (summary)", "value": "Used - fully tested and working"}]}],"title": "Used"},"title": "Vintage 35mm Film Camera - Fully Tested, Working","buy_box": {"binModel": {"price": "89.99", "isAddedToCart": false, "priceTransparencyAction": "Price details"},"financingDetails": {"financingMessages": []},"repositionCoupon": false,"deliveryInfo": {"deliveryMessage": ["Free shipping to United States"]},"sellerInfo": {"profileLogo": {"title": "camera_vault_1987"}, "dataItems": ["camera_vault_1987", "99.2% positive"]}},"quantity": {"displayLabel": "Quantity","maxQuantityReached": "","maxQuantity": "3","outOfStock": false},"buy_box_cta": {"buttons": ["Buy It Now", "Add to cart", "View in cart", "Add to Watchlist", "Added to Watchlist"]},"about_this_item_min_view": {"title": "About this item","sections": {"itemSpecificsSection": {"dataItems": {"quantity": [],"itemNumber": "1234567890123","brand": "Canon","condition": "Used","model": "AE-1","type": "35mm Film Camera"}}}},"item_desc_seller": {"title": "Item description from the seller","sections": {"itemDescriptionSection": {"dataItems": {"iframeUrl": "https://vi.vipr.ebaydesc.com/ws/eBayISAPI.dll?item=1234567890123","preview": "Vintage 35mm film camera, fully tested and working, includes original strap.","plainText": "Vintage 35mm film camera, fully tested and working. Includes original strap and lens cap. Shutter and light meter both confirmed accurate against a digital reference."}}}},"shipping_returns_payment_section_module": {"title": "Shipping, returns, and payments","sections": {"spr": {"dataItems": {"shippingRate": {"label": "Shipping Rate", "value": "0.00 USD"},"shippingDestination": {"label": "Shipping Destination", "value": "US"}}}}},"about_this_seller_section_module": {"sections": [{"profileLogo": {"title": "camera_vault_1987"},"username": "camera_vault_1987","trustSignals": ["99.2% positive"],"dataItems": ["camera_vault_1987", "99.2% positive"]}],"title": "About the seller"},"source_url": "https://www.ebay.com/itm/1234567890123","itemId": "1234567890123","itemUrl": "https://www.ebay.com/itm/1234567890123","price": "$89.99","condition": "Used","sellerUsername": "camera_vault_1987","sellerFeedbackPercent": 99.2,"shipping": "Free shipping","scrapedAt": "2026-07-30T14:02:11.123456+00:00"}
How does it work?
eBay Search Scraper builds an eBay search URL from your query and filters (or reads the URLs you supplied directly), fetches the search-results pages, and pulls listing links out of the HTML. Each listing page is then fetched separately using Chrome-TLS-impersonating requests and, when needed, Apify Proxy β starting direct and escalating through datacenter and residential proxy tiers if a request is blocked. Listing data is read from eBay's own embedded JSON-LD product data and the page's DOM (item specifics tables, seller card, shipping and returns blocks), not from screen-scraped text, so field names stay stable even when eBay changes its page layout. Only what's visible on eBay's public search and item pages is returned β nothing requires a login.
Integrations
eBay Search Scraper runs as a standard Apify Actor, so it works with anything that can call the Apify API or a webhook.
Calling eBay Search Scraper programmatically
from apify_client import ApifyClientclient = ApifyClient("<APIFY_API_TOKEN>")run = client.actor("your-username/ebay-search-scraper").call(run_input={"query": "vintage camera","domain": "ebay.com","maxItems": 100,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["title"], item["price"], item["sellerUsername"])
Works in Go, Ruby, Node.js, cURL β any language that can make an HTTP request.
No-code tools (n8n, Make)
In n8n, use the HTTP Request node (or Apify's own node) pointed at the Actor's run endpoint with your input JSON as the body, then parse the returned dataset items downstream. In Make, use Apify's Run Actor module to start a run with the same input, followed by Get Dataset Items to loop over the resulting listings in your scenario.
Is it legal to scrape eBay listings?
Scraping publicly available product listings, such as eBay search results, is generally lawful β this is business and product data, not personal data, so no GDPR/CCPA lawful-basis requirement attaches to it. eBay Search Scraper returns only what's publicly visible on eBay's own search and item pages, including public seller usernames and feedback scores β not private contact details or account data. Using the output is still subject to eBay's own Terms of Service and any applicable database-rights law in your jurisdiction, particularly around large-scale reuse or republication of eBay's listing data. Consult legal counsel if your use case involves bulk storage of personal data (e.g. if you separately capture buyer or bidder information).
Frequently asked questions
What eBay listing fields does eBay Search Scraper return?
The top fields are title, price, condition, sellerUsername, and sellerFeedbackPercent β see What data can I extract with eBay Search Scraper? for the full field list, including nested item specifics, shipping and returns data.
Does eBay Search Scraper require an eBay account or login?
No. The Actor's source code only makes plain HTTP requests to eBay's public search and item pages β there's no OAuth flow, login step, or credential field anywhere in the input schema.
How many listings can I extract in one run?
Up to maxItems (maximum 5000, default 20). The Actor walks max_pages search-result pages to find candidate listings, and internally fetches more pages than you set if needed to gather enough listings to satisfy maxItems.
What happens if a search returns zero results, or a listing is removed?
If a search returns no matching listings, the run logs "No listings found" and finishes with an empty dataset rather than erroring. If a direct item URL points to a listing eBay has removed or delisted, the Actor recognizes eBay's own deterministic "item removed" error page, skips that URL immediately without retrying, and continues with the rest of the batch.
Can I scrape multiple eBay listings or searches at once?
Yes. Paste a list of eBay item URLs and/or eBay search-result page URLs into startUrls β direct item URLs are fetched and enriched first, ahead of any search-discovered listings, within the same run.
Does eBay Search Scraper work with Claude, ChatGPT, and other AI agent tools?
It's callable as a standard HTTP endpoint through the Apify API by any agent framework that can make an HTTP request; there's no dedicated MCP server verified for this Actor.
What makes eBay Search Scraper different from scraping eBay yourself?
It handles the parts that break a homemade scraper: automatic proxy-tier escalation on blocks, Chrome-TLS impersonation for item pages, JSON-LD-based parsing that survives eBay layout changes, 17 regional domains behind one field, and live dataset writes so you see rows before the run finishes.
Does eBay Search Scraper return data in a format LLMs can use directly?
Yes. Output is typed, normalized JSON with consistent field names across runs β no HTML parsing or CSS selectors required. Pass it directly to an LLM, index it into a vector store, or feed it to an agent tool.
What happens when eBay changes its layout or anti-bot system?
The scraper is maintained and its output schema is designed to stay stable across eBay layout changes, since fields are read from eBay's own structured JSON-LD data where available rather than fragile CSS selectors alone. No specific update turnaround time is published.
Can I use eBay Search Scraper without managing proxies or browser infrastructure?
Yes β turn on π‘οΈ Use Apify Proxy and the Actor handles proxy selection and tier escalation (direct β datacenter β residential) on your behalf. No separate browser or headless-Chrome setup is required.
Which eBay listing fields work best for AI training data and RAG indexing?
For RAG, index item_desc_seller.plainText and listing_card.title β the highest-information free text. For structured training data, itemId, price, condition, and sellerFeedbackPercent return as consistent typed primitives across every row.
Related scrapers
| Scraper | What it extracts |
|---|---|
| eBay Product Details Scraper β Watchlist & Price Details | Enriches a list of eBay item URLs with price and watchlist snapshots run after run |
| Shein Search Products Scraper | Runs a Shein keyword search and returns matching product listings as structured rows |
| Etsy Reviews Scraper With Sentiment & Analytics | Extracts Etsy shop reviews with sentiment scoring and rating analytics |
Your feedback
Found a bug or missing a field? Let us know through the Issues tab on this Actor's Apify Console page β it's the fastest way to reach us, and it helps keep the scraper maintained for everyone using it.