πŸ›’βœ¨ eBay Search Scraper avatar

πŸ›’βœ¨ eBay Search Scraper

Pricing

from $4.99 / 1,000 results

Go to Apify Store
πŸ›’βœ¨ eBay Search Scraper

πŸ›’βœ¨ 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

Scraper Engine

Maintained by Community

Actor stats

0

Bookmarked

24

Total users

6

Monthly active users

a day ago

Last modified

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 CategoryPublicly AvailableRestricted (needs an eBay login)
Title, price, conditionβœ… Shown on every listingβ€”
Seller username & feedback %βœ… Shown on the item page seller cardFull feedback history and private seller messages
Shipping cost & return policy textβœ… Shown in the buy boxReal-time carrier tracking after purchase
Item specifics (brand, model, etc.)βœ… Shown on the item pageCategory attributes only revealed after picking a variation
Imagesβœ… All listing photosβ€”
Quantity available / sold indicatorsβœ… When eBay itself displays themFull historical sales figures
Auction status (current price, time left)βœ… Shown on the listingBidder 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 NameDescription
itemIdeBay's numeric item/listing ID, read from the item specifics block or parsed from the URL.
titleListing title.
itemUrlCanonical normalized URL of the fetched listing.
source_urlThe exact URL that was requested for this row (same value as itemUrl).
conditionShort condition label (e.g. New, Used, Refurbished).
priceCurrent listing price, as displayed.
shippingOne-line shipping/delivery summary text.
sellerUsernameSeller's eBay username.
sellerFeedbackPercentSeller's positive-feedback percentage (number).
scrapedAtISO-8601 UTC timestamp of when the row was collected.
imagesArray of image objects, each with thumbnails, original, and zoom URL variants.
listing_cardRaw summary card: title, price, condition, shipping, returns, seller username, seller review count and positive-feedback percentage, plus a sponsored flag.
about_this_item_min_viewItem specifics table (brand, item number, condition, quantity, and every other seller-declared attribute eBay lists).
item_desc_sellerSeller's item description β€” iframeUrl, a short preview, and plainText (full text, only populated when πŸ”œ Fetch full item description is on).
condition_descriptionCondition detail rows plus the condition section title.
buy_boxBuy-box block: BIN price, financing messages, delivery message, and seller-info snippet.
quantityStock/quantity block: displayLabel, maxQuantity, maxQuantityReached, outOfStock.
shipping_section_moduleStructured shipping data: rate and destination, parsed from eBay's shipping schema.
returns_section_moduleStructured return-policy data items.
payments_section_moduleAccepted payment methods list.
shipping_returns_payment_section_moduleCombined shipping/returns/payment data-items block as eBay groups it on the page.
about_this_seller_section_moduleSeller profile block: username, trust signals, and feedback line.
buy_box_ctaThe 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.

FeatureeBay Browse APIeBay Search Scraper
Access setupDeveloper account, OAuth app keys, scope approvalRun directly from Apify β€” no eBay developer account
Default call volume5,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 listingNormalized fields defined by the API's response schemaFull scraped item page: item specifics, description text, shipping/returns copy, seller feedback
Regional marketplacesRequires a different marketplace-ID header per siteOne domain field covering 17 eBay sites
Bulk / direct-item modeOne item lookup per callstartUrls accepts a mixed list of item and search-result URLs in a single run
Setup timeRegister app, obtain keys, implement OAuth token refreshProvide 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.

  1. Open the eBay Search Scraper page on Apify and click Try for free (or Start, if you already have it saved).
  2. 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.
  3. Set optional filters β€” 🌍 Country (eBay site), πŸ“ Item location filter, ⬆️ Sort order, 🏷️ Show only, and πŸ›’ Buying format.
  4. Set πŸ“„ Max pages to scrape and 🎯 Max listings to scrape, then start the run.
  5. 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 price and shipping to price-match a listing against their own store before relisting it.
  • πŸ“Š Market analysts use sellerFeedbackPercent and condition to see how price varies by seller trust tier across a single search.
  • πŸ›οΈ Price-tracking tool builders capture price at each scrapedAt timestamp against a stable itemId to build drop alerts over repeated runs.
  • πŸ”¬ Procurement and sourcing teams use about_this_item_min_view (item specifics) and quantity to shortlist bulk lots before contacting a seller.
  • πŸ€– AI engineers feed item_desc_seller.plainText and listing_card straight 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.

ParameterRequiredTypeDescriptionExample Value
queryNostringSearch keywords. Ignored when startUrls is filled in. Default: "coffee"."vintage camera"
startUrlsNoarrayDirect 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"]
domainNostring (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"
locationNostring (enum)eBay's "Item Location" filter. Values: "1" (US Only), "2" (Worldwide), "3" (North America incl. US). Default: "1"."2"
sortNostring (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_onlyNoarray (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_formatNostring (enum)Values: "Auction", "BIN" (Buy It Now), "BO" (Accepts Offers). Default: "BIN"."Auction"
max_pagesNointegerSearch-result pages to walk. Minimum: 1. Default: 1.3
maxItemsNointegerHard cap on rows saved this run. Minimum: 1, maximum: 5000. Default: 20.100
useProxyNobooleanRoute requests through Apify Proxy. Default: true.true
fetch_description_iframeNobooleanAlso fetch the seller's full item-description text (slower). Default: false.false
proxyConfigurationNoobjectApify 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 ApifyClient
client = 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.

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.

ScraperWhat it extracts
eBay Product Details Scraper β€” Watchlist & Price DetailsEnriches a list of eBay item URLs with price and watchlist snapshots run after run
Shein Search Products ScraperRuns a Shein keyword search and returns matching product listings as structured rows
Etsy Reviews Scraper With Sentiment & AnalyticsExtracts 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.