Ebay Search Scraper & Seller Store Details
Pricing
from $3.99 / 1,000 results
Ebay Search Scraper & Seller Store Details
eBay Search Scraper & Seller Store Details extracts eBay search results and seller store data, including product titles, prices, listings, seller details, ratings, store URLs, shipping info, and product links. Ideal for product research, price monitoring, competitor analysis, and seller insights.
Pricing
from $3.99 / 1,000 results
Rating
0.0
(0)
Developer
Scrapio
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
18 hours ago
Last modified
Categories
Share
eBay Search Scraper — Extract Listings, Sellers and Trust Scores
Ebay Search Scraper & Seller Store Details searches eBay by keyword (or a single seller's own store) and returns typed JSON rows: full listing detail, a seller store profile attached to every result, and a derived Seller Trust Score with risk flags — all computed from data the Actor already fetches, at no extra request cost. Unlike scraping frameworks that hand you raw HTML, this Actor returns structured fields — itemTitle, itemPrice, sellerTrustScore, lowFeedbackSeller — ready for a spreadsheet, a database, or an LLM context window without any parsing. It covers 17 regional eBay marketplaces, a direct-item-URL bulk mode, and an experimental seller/store-URL discovery mode. The guide below covers every input and output field, plus three deployment patterns teams actually run this on.
🧭 What Does Ebay Search Scraper & Seller Store Details Do?
It runs a live eBay keyword search (or scopes to one seller's store), opens each matching listing, and returns full item detail alongside a one-time-per-seller store lookup and a locally computed trust score. No eBay account or login is required — every page fetched is a public eBay page. It handles three entity types in one run: search-result listings, seller store profiles, and the trust/risk signals derived from them.
- Keyword search across 17 regional eBay marketplaces (
ebay.com,ebay.co.uk,ebay.de,ebay.com.au, and 13 more) - Full per-listing detail: title, price, condition, images, shipping, returns, payment methods, and item specifics
- One store-profile lookup per unique seller — display name, feedback-score text, and a sample of their other active listings
- A derived 0–100 Seller Trust Score plus three boolean risk flags, computed with zero extra requests
- Direct item-URL bulk enrichment (
startUrls) and an experimental seller/store-URL search mode (sellerOrStoreUrl) - Rows land in your dataset live, one at a time, as each listing finishes processing
⚡ Features & Capabilities
The Actor's feature set splits into search/listing extraction (inherited from the base eBay search engine) and this variant's own seller-trust layer, built on top without adding requests.
Core features
- 17-marketplace keyword search with sort order (
sortBy), sale type (saleType), and "Show only" shortcuts (resultShortcuts) — sold items, free shipping, returns accepted, authenticity guarantee, and more - Full listing detail per row:
listing_card(title, price, condition, thumbnail, shipping, returns summary, seller username, seller reviews, seller feedback %),images(thumbnail/original/zoom URLs),about_this_item_min_view(brand, item number, condition, and other item specifics),shipping_section_module,returns_section_module,payments_section_module - Seller store profile (
sellerProfile):sellerUsername,sellerStoreUrl,sellerDisplayName,sellerFeedbackScoreText,sellerOtherActiveListings,sellerOtherActiveListingsCount— one fetch per unique seller in the run, not per row - Seller Trust Score & risk flags:
sellerTrustScore(0–100),lowFeedbackSeller,newOrLowVolumeSeller,noOtherListingsFound— a documented blend of feedback percentage, other-listings volume, and profile-resolution success (see Output Format) - A working ship-to region filter:
shipToRegionmaps to eBay's realLH_PrefLocparameter. Legacy input JSON built for the base actor'slocationfield still runs — but that field mapped to_fcid(an unrelated Feedback-Category-ID parameter) and silently changed nothing; this variant corrects the mapping while still accepting the old key - Flat, sortable output columns (
itemTitle,itemPrice,itemCondition,itemUrl,sellerUsername,sellerFeedbackPercent) mirroring the nested fields, so the Output table works without expanding JSON
Ebay Search Scraper & Seller Store Details within the Scrapio data stack
This Actor covers eBay search listings enriched with seller-trust data in one pass. For enriching a fixed list of /itm/... URLs without running a search step, use eBay Product Details Scraper (also in Scrapio) — it accepts a plain URL list and returns per-listing product detail (title, price, brand, GTIN/MPN/SKU) without the seller-store lookup or trust scoring this Actor adds.
Why do developers and data teams scrape eBay?
Different teams pull different fields out of the same listing rows — sourcing teams read price and seller trust, researchers read category and condition mix, and AI pipelines read the free-text description fields.
🏢 Resale, dropship and sourcing teams
A sourcing team runs a category search (searchTerm, saleType: BIN), caps results with maxListings, and gets each candidate listing back with itemPrice, itemCondition, and — because fetchSellerProfile defaults on — sellerTrustScore and the three risk-flag columns attached to every row. Filtering the dataset on sellerTrustScore or newOrLowVolumeSeller before committing to a supplier turns a manual seller-vetting step into a spreadsheet filter, without opening a single extra tab.
📊 AI training data and RAG indexing
about_this_item_min_view (item specifics: brand, condition, model, and other structured attributes) and item_desc_seller.sections.itemDescriptionSection.dataItems.plainText (the full seller description, when fetchFullDescription is on) are the two highest-information text fields for both use cases. For RAG enrichment, plainText and the item-specifics dict give an LLM the free-text and structured context needed to answer product questions. For training data, listing_card and about_this_item_min_view return as consistently-typed primitives across every row, so no field-level normalization is needed before indexing.
📱 Competitive and market intelligence
Run the same searchTerm on a schedule and track itemPrice, sellerTrustScore, and sellerOtherActiveListingsCount over time to see how a category's pricing and seller mix shifts — a rising newOrLowVolumeSeller share in a category is a fast market signal that low-trust sellers are entering it.
🔬 Research and academic use
Public eBay search and listing data supports category-level market research and pricing studies without needing seller cooperation or an API key. Scope is limited to what a public eBay page shows — no private account or transaction data is ever returned.
🎥 Product and SaaS development
Sourcing dashboards, seller-vetting tools, and price-monitoring products can build directly on the flat output columns (itemPrice, sellerTrustScore, risk flags) without maintaining an eBay scraping layer in-house.
🍚 Input Parameters
All fields are optional (required: [] in the schema). Search-mode fields, seller/store trust fields, pagination, and legacy aliases are grouped below; every parameter is documented exactly as it appears in .actor/actor.json — same names, types, defaults, and enum values.
| Parameter | Required | Type | Description | Example Value |
|---|---|---|---|---|
searchTerm | No | string | Products, brands, or categories to search for. Leave blank if using a Seller/Store URL. Prefill: "coffee". | "vintage camera" |
sellerOrStoreUrl | No | string | Bonus/experimental: an eBay /usr/<name> or /str/<name> link — scrapes that seller's own active listings instead of a keyword search. Leave empty for normal search. | "https://www.ebay.com/usr/example-seller" |
marketplace | No | string, enum | Which eBay storefront to search. Enum: 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. Prefill: "ebay.com". | "ebay.co.uk" |
shipToRegion | No | string, enum | eBay's real ship-to filter (LH_PrefLoc): 1=US Only, 2=Worldwide, 3=North America. eBay's own matching is loose — "US Only" can still surface some non-US sellers. Prefill: "1". | "2" |
sortBy | No | string, enum | 12=Best Match (default), 1=Ending soonest, 10=Newly listed, 15=Price+Shipping lowest, 16=Price+Shipping highest, 7=Distance nearest, 3=Price highest, 2=Price lowest. Prefill: "12". | "2" |
resultShortcuts | No | array (enum items) | Show-only shortcuts: 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. Prefill: []. | ["free_shipping", "returns_accepted"] |
saleType | No | string, enum | Auction, BIN (Buy It Now), BO (Accepts Offers). Prefill: "BIN". | "BIN" |
startUrls | No | array of strings | Direct /itm/<item-id> listing URLs to enrich, added on top of search/seller results. Prefill: []. | ["https://www.ebay.com/itm/276582090868"] |
fetchSellerProfile | No | boolean | Default true. Fetches each unique seller's store page once and attaches sellerProfile — one extra request per unique seller, not per row. | true |
maxSellerListingsSample | No | integer | Min 0, max 20. How many of a seller's other active listings to include in sellerProfile.sellerOtherActiveListings; also feeds the Trust Score's volume signal. 0 = fetch the summary but omit the sample. Prefill: 5. | 10 |
maxPages | No | integer | Min 1. How many search-result pages to walk before the maxListings cap applies. Prefill: 1. | 3 |
maxListings | No | integer | Min 1, max 5000. Hard cap on rows saved to the dataset this run. Prefill: 20. | 100 |
fetchFullDescription | No | boolean | Default false. Pulls the seller's fuller description text from the item's description iframe, when eBay exposes it. Slower. | false |
useApifyProxy | No | boolean | Default true. Routes traffic through Apify Proxy (configure groups in proxyConfiguration). | true |
proxyConfiguration | No | object (proxy editor) | Apify Proxy groups/session configuration. Prefill: {"useApifyProxy": true}. | {"useApifyProxy": true} |
query | No | string | Legacy alias of searchTerm. | "coffee" |
domain | No | string, enum | Legacy alias of marketplace. Same enum values. | "ebay.com" |
location | No | string, enum | Legacy alias of shipToRegion. Accepts the same 1/2/3; any other legacy value (from the base actor's old 229-country dropdown, which never worked) falls back to 1. | "1" |
sort | No | string, enum | Legacy alias of sortBy. Same enum values. | "12" |
show_only | No | array (enum items) | Legacy alias of resultShortcuts. Same enum values. | [] |
buying_format | No | string, enum | Legacy alias of saleType. Same enum values. | "BIN" |
max_pages | No | integer | Legacy alias of maxPages. Min 1. | 1 |
maxItems | No | integer | Legacy alias of maxListings. Min 1, max 5000. | 20 |
useProxy | No | boolean | Legacy alias of useApifyProxy. | true |
fetch_description_iframe | No | boolean | Legacy alias of fetchFullDescription. | false |
Sample input JSON
{"searchTerm": "vintage camera","marketplace": "ebay.com","shipToRegion": "1","sortBy": "15","resultShortcuts": ["free_shipping"],"saleType": "BIN","fetchSellerProfile": true,"maxSellerListingsSample": 5,"maxPages": 2,"maxListings": 50,"fetchFullDescription": false,"useApifyProxy": true,"proxyConfiguration": { "useApifyProxy": true }}
Supported URL types and input formats
- Keyword search —
searchTermalone runs a normal eBay search; leavesellerOrStoreUrlempty. Example:{"searchTerm": "running shoes", "maxListings": 30}. - Seller/store discovery (experimental) —
sellerOrStoreUrlacceptshttps://www.ebay.com/usr/<name>orhttps://www.ebay.com/str/<name>; the Actor extracts the username and scopes the search to that seller's own listings. An emptysearchTermin this mode returns the seller's whole visible catalog rather than falling back to a sample query. - Direct item enrichment —
startUrlsaccepts one or morehttps://www.ebay.com/itm/<item-id>links, enriched directly and added on top of any search/seller results for the same run.
📦 Output Format
Every dataset row is typed JSON — one row per listing, with the same field set on every run regardless of query. Rows push to the dataset live, one at a time, as each listing finishes.
Output for a listing (primary entity)
{"listing_card": {"title": "Vintage 35mm Film Camera - Fully Tested","sponsored": false,"link": "https://www.ebay.com/itm/276582090868","condition": "Used","thumbnail": "https://i.ebayimg.com/images/g/abc/s-l64.jpg","price": "$89.99","shipping": "Free shipping","returns": "30-day returns · Buyer pays for return shipping","seller_username": "example-seller","seller_reviews": 4213,"seller_positive_feedback_in_percentage": 99.2},"images": [{"thumbnails": [{"url": "https://i.ebayimg.com/images/g/abc/s-l64.jpg", "title": "1 of 6", "type": "thumbnail"}],"original": {"url": "https://i.ebayimg.com/images/g/abc/s-l400.jpg", "title": "1 of 6", "type": "original"},"zoom": {"url": "https://i.ebayimg.com/images/g/abc/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 (detail)", "value": "Used - fully functional, minor cosmetic wear"}]}],"title": "Used"},"title": {"mainTitle": "Vintage 35mm Film Camera - Fully Tested"},"buy_box": {"binModel": {"price": "89.99", "isAddedToCart": false, "priceTransparencyAction": "Price details"},"financingDetails": {"financingMessages": []},"repositionCoupon": false,"deliveryInfo": {"deliveryMessage": ["Shipping: Free · Located in: United States"]},"sellerInfo": {"profileLogo": {"title": "example-seller"}, "dataItems": ["example-seller", "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": [{"label": "available", "value": "3 available"}], "itemNumber": "276582090868", "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/...", "preview": "Fully tested vintage camera, works great...", "plainText": "Fully tested vintage 35mm camera..."}}}},"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": "example-seller"}, "username": "example-seller", "trustSignals": ["99.2% positive"], "dataItems": ["example-seller", "99.2% positive"]}],"title": "About the seller"},"source_url": "https://www.ebay.com/itm/276582090868","sellerProfile": {"sellerUsername": "example-seller","sellerStoreUrl": "https://www.ebay.com/usr/example-seller","sellerDisplayName": "example-seller","sellerFeedbackScoreText": "99.2% positive","sellerOtherActiveListings": [{"title": "Vintage Rangefinder Camera", "price": "$64.00", "url": "https://www.ebay.com/itm/276582090870"}],"sellerOtherActiveListingsCount": 214},"sourceMode": "search","scrapedAt": "2026-07-30T10:15:02Z","itemTitle": "Vintage 35mm Film Camera - Fully Tested","itemPrice": "$89.99","itemCondition": "Used","itemUrl": "https://www.ebay.com/itm/276582090868","sellerUsername": "example-seller","sellerFeedbackPercent": 99.2,"sellerTrustScore": 89,"lowFeedbackSeller": false,"newOrLowVolumeSeller": false,"noOtherListingsFound": false}
Output for the seller profile (secondary entity)
sellerProfile is null when fetchSellerProfile is off or the seller couldn't be resolved — never a faked value:
{"sellerUsername": "example-seller","sellerStoreUrl": "https://www.ebay.com/usr/example-seller","sellerDisplayName": "example-seller","sellerFeedbackScoreText": "99.2% positive","sellerOtherActiveListings": [{"title": "Vintage Rangefinder Camera", "price": "$64.00", "url": "https://www.ebay.com/itm/276582090870"},{"title": "Antique Camera Lens Set", "price": "$120.00", "url": "https://www.ebay.com/itm/276582090871"}],"sellerOtherActiveListingsCount": 214}
Output for the Seller Trust Score & risk flags (third entity)
Flat fields on the same row, computed from the feedback percentage and sellerProfile — no extra network requests:
{"sellerTrustScore": 89,"lowFeedbackSeller": false,"newOrLowVolumeSeller": false,"noOtherListingsFound": false}
The blend: feedback percentage contributes up to 60 points (feedback% × 0.6; a neutral 50 baseline is used only when a seller lookup happened but no feedback % was found), the other-active-listings volume contributes up to 30 points in buckets (0 → 0, 1–10 → 10, 11–50 → 20, 51+ → 30), and a resolved seller profile contributes 10 points. sellerTrustScore, lowFeedbackSeller, newOrLowVolumeSeller, and noOtherListingsFound are all null together only when there is no seller signal at all — no feedback percentage and no seller profile.
Schema stability and export options
Field names stay stable across runs of the same input shape; this Actor's fields are parsed from eBay's JSON-LD product data and DOM structure, so a front-end redesign on eBay's side could require a source update to keep field coverage current — this is DOM/JSON-LD parsing, not a versioned API contract. Datasets export from the Apify Console or API in JSON, CSV, Excel, XML, or RSS.
💡 Ebay Search Scraper & Seller Store Details Strategy Guide
🎯 Strategy 1: Real-time enrichment pipeline
Trigger a run whenever a new SKU or lead enters your sourcing pipeline: pass the item's eBay link in startUrls, run the Actor, and read back itemPrice, itemCondition, sellerTrustScore, and the risk-flag columns for that single item. Write those fields into your sourcing sheet or CRM record. Because fetchSellerProfile caches per unique seller, batching several startUrls from the same seller in one call costs one extra request total, not one per item.
🎯 Strategy 2: Scheduled monitoring and alerting
Set up an Apify Schedule to re-run the same searchTerm and marketplace daily or weekly. Export each run's dataset and diff itemPrice, sellerTrustScore, and sellerOtherActiveListingsCount against the previous run on itemUrl (a stable key per listing). Alert when sellerTrustScore drops, lowFeedbackSeller flips to true, or a tracked listing disappears from the results entirely.
🎯 Strategy 3: Bulk dataset build
For a category-wide dataset, run with a high maxListings (up to the schema's 5000 maximum) and maxPages set to cover the category. Internally the Actor processes listings in batches (source code default: 40 listings per batch, 8 concurrent requests) — an internal implementation detail, not a configurable input. Export the finished dataset to CSV or pull it via the API into your own database.
Strategy comparison at a glance
| Strategy | Best for | Run pattern | Output format |
|---|---|---|---|
| Real-time enrichment | New SKUs/leads hitting a sourcing pipeline | Triggered single-item run via startUrls | JSON row → CRM/sheet write-back |
| Scheduled monitoring | Price and seller-trust tracking over time | Apify Schedule, same query, diff on itemUrl | Dataset export, diffed run-over-run |
| Bulk dataset build | Category research or training-set construction | One large maxListings run, or many parallel runs | CSV/JSON export to database |
🌴 Related eBay Scrapers & Tools
| Scraper Name | What it extracts |
|---|---|
| eBay Product Details Scraper (Scrapio) | Direct /itm/... URL list → per-listing product detail (title, price, brand, GTIN/MPN/SKU) — no search step, no seller-trust layer |
| Shein Search Products Scraper — Full Product Details (Scrapio) | Cross-platform alternative: keyword search → full product listings on Shein |
| Etsy Reviews Scraper (Photos, Translations & Buyer Trust Data) (Scrapio) | Complementary: buyer-trust and review data for Etsy shops, for teams vetting sellers across more than one marketplace |
How to integrate Ebay Search Scraper & Seller Store Details with your stack
Ebay Search Scraper & Seller Store Details works with any language or tool that can make an HTTP request — it runs as a standard Apify Actor, started via the Apify Console, the apify CLI, or any Apify API client.
Python
from apify_client import ApifyClientclient = ApifyClient("<YOUR_APIFY_TOKEN>")run_input = {"searchTerm": "vintage camera","marketplace": "ebay.com","maxListings": 50,"fetchSellerProfile": True,}run = client.actor("<actor-id>").call(run_input=run_input)rows = []for item in client.dataset(run["defaultDatasetId"]).iterate_items():rows.append({"title": item.get("itemTitle"),"price": item.get("itemPrice"),"seller": item.get("sellerUsername"),"trustScore": item.get("sellerTrustScore"),"lowFeedback": item.get("lowFeedbackSeller"),})import csvwith open("ebay_results.csv", "w", newline="", encoding="utf-8") as f:writer = csv.DictWriter(f, fieldnames=["title", "price", "seller", "trustScore", "lowFeedback"])writer.writeheader()writer.writerows(rows)print(f"Saved {len(rows)} rows to ebay_results.csv")
Node.js
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });const run = await client.actor('<actor-id>').call({searchTerm: 'vintage camera',marketplace: 'ebay.com',maxListings: 50,fetchSellerProfile: true,});const { items } = await client.dataset(run.defaultDatasetId).listItems();const rows = items.map((item) => ({title: item.itemTitle,price: item.itemPrice,seller: item.sellerUsername,trustScore: item.sellerTrustScore,}));console.log(`Fetched ${rows.length} listings`);
Async and scheduled pipelines
Runs are asynchronous by default through the Apify API (call() waits for completion; start() returns immediately and you poll run status or list dataset items once it finishes). For recurring jobs, use an Apify Schedule to fire this Actor on a cron interval with the same input, and read the new dataset from each run via the API — the pattern used in Strategy 2 above.
🎯 Who Needs Ebay Search Scraper & Seller Store Details? (Use Cases & Industries)
🏢 Resale, dropship and sourcing teams
Search a product category, filter to saleType: BIN, and get itemPrice and sellerTrustScore on every candidate in one export — turning seller vetting from a manual click-through into a spreadsheet sort.
📊 Sourcing and ops data teams
Pull itemCondition, sellerOtherActiveListingsCount, and the risk-flag columns into a warehouse table to score supplier reliability across hundreds of listings at once, instead of checking sellers one at a time.
📱 Competitive and market intelligence
Track itemPrice and sellerTrustScore for the same searchTerm run on a schedule to see how a category's pricing and seller quality shift week over week.
🔬 Researchers
Public eBay listing and seller-feedback data supports category-level market and pricing research without needing platform cooperation. Scope is limited to what a public listing or store page already shows.
🎥 SaaS and tool builders
Sourcing dashboards, seller-vetting widgets, and price-monitoring products can read itemPrice, sellerTrustScore, and the risk flags directly as a data layer, instead of building and maintaining eBay parsing in-house.
Is it legal to scrape eBay?
Scraping publicly accessible web pages is generally lawful in the United States — see hiQ Labs v. LinkedIn (9th Cir. 2019, reaffirmed 2022), which held that scraping data not behind a login does not violate the Computer Fraud and Abuse Act. This Actor only ever fetches public eBay search-result and listing pages — no login, account, or paywalled content is accessed.
Separately, eBay's own Terms of Service may restrict automated data collection; violating a platform's terms is a civil contract matter between the user and eBay, not a criminal one, but it can carry consequences such as account or access restriction for the account used.
This Actor's output is product-listing and public seller-storefront data — item prices, conditions, images, and a seller's public feedback percentage and store handle — not private personal profile data, so GDPR's personal-data framework does not generally attach to it the way it would for a consumer-profile scraper. Data-protection obligations may still apply if you combine this data with other sources to build profiles on individual private sellers.
Ebay Search Scraper & Seller Store Details returns only publicly accessible data. What you do with that data is your responsibility — consult legal counsel for commercial applications involving personal data.
❓ Frequently asked questions
Does Ebay Search Scraper & Seller Store Details work without an eBay account?
Yes. Every page the Actor fetches — search results, item listings, and seller-scoped store pages — is public; no eBay login, account, or API key is needed to run it.
How does the Actor handle eBay's anti-scraping measures?
It fetches item-detail pages through Chrome TLS/HTTP impersonation (curl_cffi) rather than plain HTTP, since eBay hard-challenges plain requests even through a residential proxy. On a block it escalates proxy tiers automatically — direct → Apify datacenter proxy → Apify residential proxy — and sticks to residential once a request succeeds there, retrying with fresh sessions on failure rather than a fresh IP on every call.
Can I run this at scale without getting blocked?
The Actor retries and escalates proxy tiers automatically, but eBay's blocking is real and not fully eliminable — no uptime or success-rate figure is published, because none is guaranteed. ⚠️ A small share of item-detail fetches on any given run can still come back empty after retries are exhausted; that's a page-load failure, not a parsing bug, and the Actor never fabricates a value to compensate. Re-running with a smaller maxListings or a different query is usually the fastest way to fill a gap.
How fresh is the data this Actor returns?
Live — every run fetches current eBay search and listing pages at run time. Nothing is cached or served from a prior run.
What happens if a seller's store profile can't be resolved?
sellerProfile comes back null, and sellerTrustScore, lowFeedbackSeller, newOrLowVolumeSeller, and noOtherListingsFound all come back null together — never a guessed score. This only happens when there is no seller signal at all (no feedback percentage on the listing card and no resolvable profile).
Which eBay fields work best for AI training and RAG indexing?
For RAG: item_desc_seller's plainText field (the full seller description, when fetchFullDescription is on) and about_this_item_min_view's item-specifics dict give an LLM the free-text and structured product context to answer questions accurately. For training data: listing_card and the flat top-level columns (itemTitle, itemPrice, itemCondition) return as consistently typed primitives across every row, needing no normalization before indexing.
Is there a data-protection question I should know about?
This Actor returns publicly available marketplace data — listing detail and a seller's public store handle and feedback percentage — not private personal profiles. Lawful basis for any further storage or use of that data sits with you as the user.
Does this work with Claude, ChatGPT, and other AI agent tools?
Yes, as an HTTP-callable Actor through the Apify API — any agent framework that can make an API call can trigger a run and read back the dataset. Every field returns as typed JSON, so no HTML parsing is needed before passing results into an LLM context window.
Can I scrape a whole seller's store instead of running a keyword search?
Yes, as a bonus/experimental mode: set sellerOrStoreUrl to the seller's /usr/ or /str/ link and leave searchTerm blank to pull their whole visible catalog, or combine both to search within that seller's listings.
ℹ️ Disclaimer
Ebay Search Scraper & Seller Store Details extracts only publicly available data from eBay. This tool is intended for lawful use cases only. Users are responsible for complying with eBay's terms of service and applicable data protection laws in their jurisdiction.