eBay Seller Scraper By Keyword & Marketplace Search avatar

eBay Seller Scraper By Keyword & Marketplace Search

Pricing

from $5.99 / 1,000 results

Go to Apify Store
eBay Seller Scraper By Keyword & Marketplace Search

eBay Seller Scraper By Keyword & Marketplace Search

πŸ›’ eBay Seller Scraper extracts seller profiles, store info, active listings, prices, ratings & feedback. πŸ“Š Ideal for competitor analysis, pricing, product research & lead gen. ⚑ Fast, reliable; export CSV/JSON for analytics & automation.

Pricing

from $5.99 / 1,000 results

Rating

0.0

(0)

Developer

Scrapier

Scrapier

Maintained by Community

Actor stats

0

Bookmarked

10

Total users

1

Monthly active users

5 days ago

Last modified

Share

eBay Seller Scraper β€” Keyword Discovery, Feedback and Listings

eBay Seller Scraper By Keyword & Marketplace Search finds eBay sellers by keyword or category search β€” or scrapes seller profile URLs you already have β€” across 16 eBay marketplaces. Each result returns the seller's feedback score alongside structured data for their live listings: item link, condition, image, and discount percentage. Every response is clean, structured JSON β€” ready to pass directly to an LLM, index into a vector store, or feed a monitoring pipeline. Point it at a niche and start mapping who actually sells there.

It is an Apify Actor that turns an eBay keyword or category search into a list of the real sellers behind the matching listings, or scrapes a list of seller profile URLs you already know, on any of 16 eBay country sites. Each output row is one seller, carrying their feedback score plus a listings array of structured commerce fields for what they currently have live. No eBay account or login is used or required β€” it reads only the public pages any visitor sees.

  • Keyword / category discovery β€” type a search term ("vintage camera", "nike sneakers") and the Actor resolves the actual sellers behind matching listings, one item-page hop at a time, without you knowing any usernames up front
  • 16-marketplace support β€” run the same search or seller list against ebay.com, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .at, .ie, .nl, .pl, .ch, .com.hk, .com.my, .com.sg, or .ph
  • Direct seller mode β€” paste known seller profile URLs (any locale) or bare usernames and skip discovery entirely
  • Structured per-listing commerce fields β€” deep item URL, condition, image, original price, discount percentage, best-offer flag, and shipping/delivery attribute text
  • Combined runs β€” mix keyword discovery and direct seller URLs in one job; every row records whether it came from a keyword (discoveredViaKeyword, matchedQuery) or from a direct URL
  • Built-in fallback fetching β€” direct request first, escalating through datacenter and residential proxy tiers only when a page comes back blocked

Every run returns one JSON object per seller, with a nested array of that seller's current listings.

Result TypeExtracted FieldsPrimary Use Case
Seller profileurl, name, feedback_score, marketplaceDomain, discoveredViaKeyword, matchedQuery, scrapedAtIdentify and track who sells in a niche or locale
Listing (nested in listings[])title, price, productUrl, condition, imageUrl, originalPrice, discountPercent, cardAttribute, hasBestOfferPrice, condition, and inventory analysis per seller

Listings

Each seller row carries a listings array β€” items currently live on that seller's storefront. Beyond title and price, every listing includes a direct productUrl, the stated condition, a full-size imageUrl, and β€” when marked down β€” originalPrice plus a computed discountPercent. cardAttribute collects shipping/offer text from the card, and hasBestOffer flags items open to offers. That's a seller and their live, priced inventory in one row.

How does eBay Seller Scraper By Keyword & Marketplace Search differ from the official eBay API?

eBay's official Buy APIs (Browse API, and the older Finding and Trading APIs) return item and seller data too, but only to registered, approved developer applications β€” not to someone who just wants to check who sells in a niche.

FeatureeBay Browse API (official)eBay Seller Scraper By Keyword & Marketplace Search
SetupeBay Developer Program registration, production-key approval, OAuth client-credentials token per request (developer.ebay.com)No account, key, or approval β€” enter a search term or URL and run
Search sellers by keywordNot exposed directly β€” item_summary/search returns items; whichever sellers appear are incidental, there is no "search sellers" endpointPurpose-built: keyword search resolves distinct sellers, one row each
Seller feedbackfeedbackScore / feedbackPercentage on each item's nested Seller object (developer.ebay.com)feedback_score returned once per seller row
Per-seller listing detailSeparate item-level calls needed to assemble a seller's full current inventorylistings[] with condition/image/discount already attached, same row
Marketplace scopeOne marketplace_id per requestOne marketplaceDomain input field selects any of 16 locales
Output shapeRaw API JSON matching eBay's schema β€” assembly requiredOne ready-to-use JSON row per seller

The official API is the right choice if you're building an eBay-integrated app under eBay's own terms and already have developer approval. This Actor is the faster path when you just need a list of sellers and their live inventory for research, without registering an application first.

  1. Open eBay Seller Scraper By Keyword & Marketplace Search on the Apify platform.
  2. Add one or more terms to searchQueries (e.g. "vintage camera") to discover sellers, and/or paste known profile URLs into sellerProfileUrls β€” no field is strictly required by the schema, but at least one of the two must be filled or the run finds nothing to scrape.
  3. Pick marketplaceDomain for the locale you want, and set maxSellersPerQuery / maxSearchResultPages to control how deep the discovery goes.
  4. Click Start and watch rows land in the Output tab as each seller is scraped.
  5. Export the dataset as JSON, CSV, or Excel, or pull it via the Apify API.

Real request body:

{
"searchQueries": ["vintage camera"],
"marketplaceDomain": "ebay.com",
"maxSellersPerQuery": 5,
"maxSearchResultPages": 1
}

How to run multiple queries in one job

List every keyword you want on its own line in searchQueries β€” the Actor works through them one at a time in the same run, discovering up to maxSellersPerQuery distinct sellers for each term before moving to the next, and skipping any username it has already resolved earlier in the same run. There's no separate batching endpoint to learn: one input array is the batch.

⬇️ Input

ParameterRequiredTypeDescriptionExample Value
searchQueriesNoarrayKeyword/category search terms β€” one per line. Discovers new sellers whose listings match the term. Leave empty to skip discovery.["vintage camera"]
marketplaceDomainNostring (enum)Which of the 16 eBay locales to search/scrape on for discovery and for bare usernames. Full seller URLs keep their own domain."ebay.com"
maxSellersPerQueryNointegerCap on unique sellers resolved per search term. Default 5.5
maxSearchResultPagesNointegerSearch-result pages scanned per term when discovering sellers. Default 1.1
sellerProfileUrlsNoarrayKnown seller profile URLs (any of the 16 marketplaces) or bare usernames. Also accepts the legacy urls key.["https://www.ebay.co.uk/usr/chrisjoh7639"]
proxyConfigurationNoobjectOptional Apify Proxy configuration. Defaults to no proxy; the Actor escalates direct β†’ datacenter β†’ residential automatically if a request is blocked.{"useApifyProxy": false}

Example input:

{
"searchQueries": ["vintage camera", "nike sneakers"],
"marketplaceDomain": "ebay.com",
"maxSellersPerQuery": 5,
"maxSearchResultPages": 1,
"sellerProfileUrls": ["https://www.ebay.co.uk/usr/chrisjoh7639"],
"proxyConfiguration": { "useApifyProxy": false }
}

Common pitfall: every field is optional in the schema, but leaving both searchQueries and sellerProfileUrls empty gives the Actor nothing to do β€” it logs a warning and the run ends with zero rows. Fill at least one. Separately, if you open the proxy block, don't pick Own proxies and leave the list empty β€” that fails validation; choose No proxy instead.

⬆️ Output

Results are typed, normalized JSON, one object per seller, with a consistent schema across runs β€” pushed live to the dataset as each seller finishes scraping. Export it as JSON, CSV, Excel, or any other format the Apify dataset export supports.

Scraped results

[
{
"url": "https://www.ebay.com/usr/cameravaultusa",
"name": "cameravaultusa",
"feedback_score": "99.2% positive",
"marketplaceDomain": "ebay.com",
"discoveredViaKeyword": true,
"matchedQuery": "vintage camera",
"listings": [
{
"title": "Vintage 35mm Film Camera - Fully Tested",
"price": "$45.00",
"productUrl": "https://www.ebay.com/itm/123456789012",
"condition": "Pre-owned",
"imageUrl": "https://i.ebayimg.com/images/g/abc/s-l500.jpg",
"originalPrice": "$60.00",
"discountPercent": 25,
"cardAttribute": ["Free shipping"],
"hasBestOffer": true
}
],
"scrapedAt": "2026-07-25T12:03:41+00:00"
},
{
"url": "https://www.ebay.com/usr/retrolensco",
"name": "retrolensco",
"feedback_score": "100% positive",
"marketplaceDomain": "ebay.com",
"discoveredViaKeyword": true,
"matchedQuery": "vintage camera",
"listings": [
{
"title": "Vintage Twin Lens Reflex Camera",
"price": "Β£78.00",
"productUrl": "https://www.ebay.com/itm/223344556677",
"condition": "Used",
"imageUrl": "https://i.ebayimg.com/images/g/def/s-l500.jpg",
"originalPrice": "",
"discountPercent": null,
"cardAttribute": ["Located in United Kingdom"],
"hasBestOffer": false
}
],
"scrapedAt": "2026-07-25T12:04:02+00:00"
},
{
"url": "https://www.ebay.co.uk/usr/chrisjoh7639",
"name": "chrisjoh7639",
"feedback_score": "100% positive",
"marketplaceDomain": "ebay.co.uk",
"discoveredViaKeyword": false,
"matchedQuery": null,
"listings": [
{
"title": "Nikon FM2 Camera Body",
"price": "Β£110.00",
"productUrl": "https://www.ebay.co.uk/itm/334455667788",
"condition": "Very Good",
"imageUrl": "https://i.ebayimg.com/images/g/ghi/s-l500.jpg",
"originalPrice": "Β£130.00",
"discountPercent": 15,
"cardAttribute": ["Free returns"],
"hasBestOffer": true
}
],
"scrapedAt": "2026-07-25T12:05:17+00:00"
}
]
  • Competitive seller research (resellers, dropshippers, sourcing teams): run your niche keywords, then rank discovered sellers by feedback_score and inspect their listings to see exactly what's live, at what condition and price, before deciding who to watch or contact.
  • Price and discount monitoring: re-scrape the same seller list on a schedule and diff price, originalPrice, and discountPercent per productUrl to catch markdowns and Best Offer listings (hasBestOffer) as they appear.
  • AI engineers and LLM developers: wire an agent to call this Actor with a category term, receive structured JSON back, and ground answers about "who sells X" or "what's this seller currently listing" without the model hallucinating storefront details.
  • Market researchers: compare the same keyword across several marketplaceDomain values to see how seller counts, feedback scores, and pricing differ between the US, UK, EU, and APAC eBay sites.

How do you monitor eBay seller feedback and listings over time?

Monitoring here means re-running the same keyword set or seller list on a schedule and comparing each seller's row to its previous version. Because every row carries a scrapedAt timestamp, you can always tell which run a given snapshot came from.

The fields worth diffing between runs are feedback_score (a seller's reputation moving up or down), the contents of listings[] keyed by productUrl (new items appearing, old ones disappearing β€” meaning sold or delisted), and price / discountPercent on items that persist between runs (a live price cut or a new Best Offer flag).

A practical workflow: keep a fixed list of seller URLs or niche keywords in your input, run the Actor on a recurring schedule, and compare each new dataset export against the previous one β€” join on url (seller) and productUrl (listing) β€” then alert whenever feedback_score drops, a tracked seller's listing count changes, or discountPercent crosses a threshold you care about.

This Actor has no built-in webhook or diffing feature of its own; the comparison logic lives in whatever you run afterward. What it does provide is the real scheduling hook: Apify's platform-level Schedule feature can trigger this Actor with the same input on a recurring cadence, so the snapshots you're diffing arrive automatically.

Integrate eBay Seller Scraper By Keyword & Marketplace Search and automate your workflow

eBay Seller Scraper By Keyword & Marketplace Search works with any language or tool that can send an HTTP request.

REST API with Python

import requests
url = "https://api.apify.com/v2/acts/scrapier~ebay-seller-scraper-by-keyword-and-marketplace-search/run-sync-get-dataset-items"
headers = {"Authorization": "Bearer <YOUR_APIFY_API_TOKEN>"}
payload = {
"searchQueries": ["vintage camera"],
"marketplaceDomain": "ebay.com",
"maxSellersPerQuery": 5,
}
response = requests.post(url, headers=headers, json=payload)
sellers = response.json()
for seller in sellers:
print(seller["name"], seller["feedback_score"], len(seller["listings"]))

MCP for query-grounded AI agents

This Actor is reachable through Apify's Actors MCP Server: npx @apify/actors-mcp-server --tools scrapier/ebay-seller-scraper-by-keyword-and-marketplace-search, or via the hosted https://mcp.apify.com endpoint. An MCP-native client (Claude Desktop, Claude Code, or another MCP agent framework) can call it as a tool β€” the agent sends a keyword or seller URL, gets back structured seller/listing JSON, and answers grounded in what's actually live on eBay right now.

Scheduled monitoring and delivery

Use Apify's Schedule feature to trigger runs with the same input on a recurring cadence, then pull each run's dataset via the API or webhook integrations available on the platform. There is no built-in push-notification feature inside the Actor itself β€” delivery is whatever your schedule or webhook is wired to.

Yes β€” scraping publicly visible eBay seller and listing pages is generally legal in most jurisdictions, since this Actor only collects what any visitor can already see without logging in. Seller names, feedback scores, and listing details are business data, not personal data about private individuals, so this sits closer to ToS and database-rights considerations than to GDPR/CCPA personal-data rules. eBay's Terms of Service restrict automated access, so compliance is a contractual question between you and eBay, not strictly a legal ban on scraping public pages. Scraping for one-off research or monitoring carries a different risk profile than scraping at scale to train a model or rebuild a competing catalog. Consult your legal team for commercial use cases involving bulk data storage.

Frequently asked questions

Which eBay marketplaces does this Actor support?

All 16: ebay.com, .co.uk, .de, .fr, .it, .es, .ca, .com.au, .at, .ie, .nl, .pl, .ch, .com.hk, .com.my, and .ph, selected via the marketplaceDomain field. Seller profile URLs pasted directly keep their own domain regardless of this setting.

How do I control how many sellers I get back?

maxSellersPerQuery caps unique sellers resolved per search term (default 5), and maxSearchResultPages controls how many pages of search results are scanned per term to find them (default 1). Raise maxSearchResultPages for niche keywords that need a deeper scan to surface enough distinct sellers.

How does this Actor handle eBay's anti-bot measures?

It fetches with Chrome TLS/HTTP impersonation rather than a plain HTTP client, and if a request comes back blocked it escalates through a direct β†’ datacenter proxy β†’ residential proxy fallback ladder with backoff between residential retries, reusing a working exit IP for the rest of the run once one is found.

How many results does this Actor return per query?

Up to maxSellersPerQuery distinct sellers per search term (default 5, no fixed upper bound β€” you set it), drawn from up to maxSearchResultPages pages of search results (default 1). Both are your own input values, not a platform-imposed cap.

How do I use this Actor to monitor a seller or niche over time?

Keep the same seller list or keyword set in your input, run it on a schedule via Apify's Schedule feature, and diff each new dataset against the last one on url and productUrl β€” alert on feedback_score changes or new/removed/discounted listings.

Does it work with Claude, ChatGPT, and AI agent frameworks?

Yes. It's callable as a plain HTTP endpoint by any agent framework, and it's also reachable through Apify's Actors MCP Server (npx @apify/actors-mcp-server --tools scrapier/ebay-seller-scraper-by-keyword-and-marketplace-search) for MCP-native clients.

How does this Actor compare to other eBay scrapers?

As observed on their public Apify listings on 2026-07-25, some eBay scrapers cover more marketplaces (one lists 20 locales) and richer seller-profile fields like registration date or store description; others cover fewer (one lists 5). This Actor's distinction is combining keyword-based seller discovery with per-listing commerce detail (condition, image, discount percentage) in the same seller row, across 16 marketplaces, without requiring you to already know a seller's username.

Can I use it without managing proxies or eBay credentials?

Yes. No eBay account or login is used β€” everything comes from public pages. Proxy handling is automatic and optional: leave proxyConfiguration at its default and the Actor runs direct-first, only reaching for Apify Proxy if a request gets blocked.

Does this Actor require knowing a seller's username in advance?

No β€” that's what searchQueries is for. Give it a keyword or category term and it resolves real seller usernames from matching listings itself. sellerProfileUrls is there for when you do already know who you want.

Your feedback

Found a bug, a field that doesn't match this README, or a marketplace that needs different handling? Let us know through the Issues tab on this Actor's Apify Console page. Reports like this directly shape what gets fixed next.