Skip to main content
Glama
E-commerce Sales Signals MCP

E-commerce Sales Signals MCP

E-commerce Sales Signals MCP: Amazon bestsellers, eBay sold prices, TikTok Shop, Etsy shop sales

What is actually selling, as MCP tools: Amazon Best Sellers ranks, Amazon reviews, confirmed eBay sold prices, TikTok Shop sales estimates and Etsy shop sales counters, in one hosted bundle. One Actor per sales signal.

Hosted remote MCP server (Streamable HTTP) on Apify's MCP gateway. Client config plus a small open-source stdio proxy server. No Actor source.

Disclosure: entries marked "(maintained by us)" are Actors I maintain on Apify Store (publisher publicrecords). Every other Actor is independent, made by its own publisher and picked on merit (Store usage, ratings and recent maintenance). This repo is not affiliated with those publishers or with the sites the Actors read.

MCP endpoint

https://mcp.apify.com/?tools=junglee/amazon-bestsellers,junglee/amazon-reviews-scraper,caffein.dev/ebay-sold-listings,unseenuser/TikTok-Shop-Scraper,publicrecords/etsy-shop-velocity,publicrecords/etsy-search-scraper

Auth: sign in with Apify (OAuth) when your client prompts, or send an Apify API token as a Bearer token. Runs are billed on your own Apify account under each Actor's own Store pricing; see each Store page.

Related MCP server: Kettu Marketplace Intelligence

Tools

Actor

Store page

MCP tool

What it returns

Amazon Bestsellers Scraper

junglee/amazon-bestsellers

junglee--amazon-bestsellers

Top 100 items in any Amazon Best Sellers category: rank, name, price, URL.

Amazon Reviews Scraper

junglee/amazon-reviews-scraper

junglee--amazon-reviews-scraper

Amazon product reviews: rating, text, date, reactions and images, for review-velocity and sentiment.

eBay Sold Listings Search

caffein.dev/ebay-sold-listings

caffein-dot-dev--ebay-sold-listings

Confirmed eBay sold prices by keyword across 8 marketplaces, with date-range filters.

TikTok Shop Scraper

unseenuser/TikTok-Shop-Scraper

unseenuser--TikTok-Shop-Scraper

TikTok Shop products, reviews, sellers, creator affiliates and GMV/sales estimates (US, UK).

Etsy Shop Sales Tracker (maintained by us)

publicrecords/etsy-shop-velocity

publicrecords--etsy-shop-velocity

Etsy shop sales counters with the date each was read, so repeat reads give sales over time. One row per shop.

Etsy Search Scraper (maintained by us)

publicrecords/etsy-search-scraper

publicrecords--etsy-search-scraper

Etsy search results with Bestseller and Star Seller badges, review counts and search rank.

The Apify gateway also exposes helper tools to read run results (get-actor-run, get-dataset-items). Want fewer tools? Drop any Actor from the tools= list.

Who it's for

  • Product research: which items are selling now, by marketplace?

  • Resellers: what did this item actually sell for on eBay recently?

  • Brands and agencies: how fast are a competitor's reviews or shop sales growing?

  • Analysts: track bestseller ranks and sales counters over time.

Example prompts

  • List today's top 20 Amazon Best Sellers in <category> with prices.

  • What did <item> sell for on eBay in the last 30 days? Give min, median and max.

  • How many sales did these Etsy shops show today: <shop1>, <shop2>? Read again next week and give the difference.

  • Which TikTok Shop products in <category> have the highest sales estimates?

Cursor / Claude Code / any remote-MCP client

{
  "mcpServers": {
    "ecommerce-sales": {
      "url": "https://mcp.apify.com/?tools=junglee/amazon-bestsellers,junglee/amazon-reviews-scraper,caffein.dev/ebay-sold-listings,unseenuser/TikTok-Shop-Scraper,publicrecords/etsy-shop-velocity,publicrecords/etsy-search-scraper"
    }
  }
}

Claude Code:

claude mcp add --transport http ecommerce-sales "https://mcp.apify.com/?tools=junglee/amazon-bestsellers,junglee/amazon-reviews-scraper,caffein.dev/ebay-sold-listings,unseenuser/TikTok-Shop-Scraper,publicrecords/etsy-shop-velocity,publicrecords/etsy-search-scraper"

Claude Desktop (local bridge)

{
  "mcpServers": {
    "ecommerce-sales": {
      "command": "npx",
      "args": ["-y", "@apify/actors-mcp-server", "--actors", "junglee/amazon-bestsellers,junglee/amazon-reviews-scraper,caffein.dev/ebay-sold-listings,unseenuser/TikTok-Shop-Scraper,publicrecords/etsy-shop-velocity,publicrecords/etsy-search-scraper"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}

Local stdio server (open source)

This repo also ships a small MCP server in src/ for clients that only run local stdio servers. It answers initialize and tools/list locally from tools.json, which is generated from each Actor's public input schema and checked for drift in CI and weekly, so any client or directory can inspect the tools with no token. tools/call is forwarded to the hosted Apify MCP endpoint above with your own APIFY_TOKEN; without a token a call returns a clear error instead of running anything. The token is only sent in the Authorization header and is never logged.

{
  "mcpServers": {
    "ecommerce-sales": {
      "command": "npx",
      "args": ["-y", "github:GeminiGeorge22/ecommerce-sales-mcp"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}

Or from a clone:

git clone https://github.com/GeminiGeorge22/ecommerce-sales-mcp.git
cd ecommerce-sales-mcp && npm install
APIFY_TOKEN=YOUR_APIFY_TOKEN node src/server.js

Optional env: APIFY_ACTORS (comma-separated subset of the Actors above) and APIFY_MCP_URL (full endpoint override).

Tests run against an in-memory mock server, with no network and no token: npm test. Requires Node.js 18+.

Python (uvx/pip)

A matching Python version of this server lives in python/, built on the official mcp Python SDK: same tools, same APIFY_TOKEN, same hosted endpoint. Requires Python 3.10+.

{
  "mcpServers": {
    "ecommerce-sales": {
      "command": "uvx",
      "args": ["ecommerce-sales-mcp"],
      "env": { "APIFY_TOKEN": "YOUR_APIFY_TOKEN" }
    }
  }
}

Or with pip: pip install ecommerce-sales-mcp, then run ecommerce-sales-mcp. Python tests: cd python && pip install -e ".[test]" && env -u APIFY_TOKEN python -m pytest.

See also

Registry

Official MCP Registry name: io.github.GeminiGeorge22/ecommerce-sales-mcp

License

MIT, for this documentation, config and the proxy server code in src/. Each Actor belongs to its publisher.

Available Tools

6 tools
caffein-dot-dev--ebay-sold-listingseBay Sold Listings SearchA
Read-only
Inspect

eBay Sold Listings Search. Get confirmed eBay sold prices. Search by keyword across 8 marketplaces, filter by date range, and export clean structured data for comps, resale pricing, and market research.

When to use: Use when you need what items actually sold for on eBay (sold comps) for a keyword, marketplace and date range.

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "caffein.dev/ebay-sold-listings" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/caffein.dev/ebay-sold-listings

NameRequiredDescriptionDefault
countNoNumber of listings to scrape (default: 100)
searchNoDeprecated: alias for the single-keyword `keyword` field. Use the `keywords` array instead. Accepted for backward compatibility with callers that send `search`. Backslash-escaped quotes (\") in the value are unescaped before the search runs.
keywordNoSingle search keyword. Deprecated: use the 'keywords' array field instead.
ebaySiteNoeBay site to scrape from Options: ebay.com = eBay.com (US); ebay.co.uk = eBay.co.uk (UK); ebay.de = eBay.de (Germany); ebay.fr = eBay.fr (France); ebay.it = eBay.it (Italy); ebay.es = eBay.es (Spain); ebay.ca = eBay.ca (Canada); ebay.com.au = eBay.com.au (Australia).ebay.com
keywordsNoOne or more search keywords. Each keyword runs as a separate search with the same filters applied to all. Example: ["rtx 4080"]
maxPriceNoMaximum sold price filter (search-page filter).
minPriceNoMinimum sold price filter (search-page filter).
sortOrderNoSort order for the sold search results page. Options: endedRecently = Ended recently; timeNewlyListed = Time: newly listed; pricePlusPostageLowest = Price + postage: lowest first; pricePlusPostageHighest = Price + postage: highest first; distanceNearest = Distance: nearest first.endedRecently
categoryIdNoeBay category ID — maps directly to the `_sacat` URL parameter. Enter ANY eBay category ID as free text; you are not limited to a preset list. Use "0" (the default) for All Categories. Don't know the ID? We maintain the full, up-to-date list of category & subcategory IDs at https://sold-comps.com/ebay-categories0
exactMatchNoWhen true (default), eBay's loosened 'results matching fewer words' items are removed so only listings closely matching the keyword are returned. Set to false to include them.
postalCodeNoDelivery postal code for more accurate shipping prices, in the format of the selected eBay site (e.g. a ZIP code on ebay.com, SW1A 1AA on ebay.co.uk). Leave blank to use a central postcode for the site. A value in the wrong format is ignored with a warning.
sellerTypeNoFilter by seller type. EU sites only — works on ebay.de, ebay.fr, ebay.it and ebay.es. On all other sites this filter is ignored and results are unfiltered. Options: any = Any; private = Private; business = Business.any
conditionIdNoNumeric eBay condition ID — overrides itemCondition when set.
aspectFilterNoeBay aspect facet filters, e.g. {"Brand": "Nike"}. Keys and values are double-encoded per eBay's convention.
buyingFormatNoSearch-page buying format filter. Options: all = All; auction = Auction; buyItNow = Buy It Now; acceptsOffers = Accepts Offers.all
daysToScrapeNoNumber of days back to scrape sold listings (default: 30)
itemLocationNoSearch-page item location filter. Options: default = Default; domestic = Domestic only; worldwide = Worldwide.default
itemConditionNoSearch-page condition filter. Options: any = Any; new = New; used = Used.any
sellerCountryNoOnly return listings from sellers located in this country. Two-letter ISO code, e.g. JP or GB . When set, the Item location filter is ignored. If no listing matches, eBay can return listings from other countries: check itemLocation on each item. Country codes
subcategoryIdNoOptional eBay subcategory ID — also maps to `_sacat`. Enter ANY subcategory ID as free text. When set, it overrides the Category field above. Leave blank to search at the category level. Full ID reference: https://sold-comps.com/ebay-categories. The output record's `categoryId` / `category` fields reflect the effective category actually used for the search.
includeCompletedListingsNoWhen true (default), includes eBay's Completed Listings filter alongside the Sold filter. This enables accurate detection of 'Best Offer Accepted' listings via the listingType and isBestOfferAccepted fields. When false, uses only the Sold filter — all results are guaranteed sold items, but Best Offer Accepted items will appear as regular 'buy_it_now' with the asking price shown as soldPrice.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, open-world, non-destructive and non-idempotent, so the description earns credit for what they can't say: the call starts a run of a specific Apify Actor via mcp.apify.com using the caller's own APIFY_TOKEN and account, and returns run/dataset IDs for paging. Cost, concurrency and latency implications of the run are left implicit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded and sectioned as Purpose / When to use / Returns / Behavior / Docs, so an agent can scan the essentials fast. The opening sentence largely restates the title, which is the only real waste in an otherwise tight block.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 21-parameter scraper with no output schema, the definition covers purpose, trigger, return shape (one row per result plus paging IDs), auth/ownership and read-only safety. It stops short of describing row fields or what a partial or failed run looks like, which keeps it just under fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% across all 21 parameters, including enums, defaults and deprecation notes, so the description only needs to reinforce the headline axes (keyword, marketplace, date range). It does that accurately but adds no syntax or edge-case detail beyond what the schema already provides, making 3 the correct baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource ('Get confirmed eBay sold prices') and scopes it to keyword, marketplace and date range. A reader can immediately separate this from the Amazon/TikTok/Etsy siblings because the platform and the sold-price angle are stated explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'When to use' line gives a concrete trigger: needing what items actually sold for (sold comps) for a keyword, marketplace and date range. It doesn't name an alternative tool or state when not to use it, but no direct eBay competitor exists among the siblings, so the guidance is practically complete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

junglee--amazon-bestsellersAmazon Bestsellers ScraperA
Read-only
Inspect

Amazon Bestsellers Scraper. Scrape the Amazon Best Sellers categories and extract details on top 100 most popular items on Amazon. Download product name, price, URL, and thumbnail image. Best used on .com, .co.uk, .de, .fr, .es, and .it domains. Download your data in various formats: HTML table, JSON, CSV, Excel, and more.

When to use: Use when you need the top 100 Amazon Best Sellers for a category URL (name, price, rank, URL, image).

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "junglee/amazon-bestsellers" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/junglee/amazon-bestsellers

NameRequiredDescriptionDefault
languageNoLanguage to use on Amazon. **Disclaimer**: each Amazon domain has a different set of supported languages. If you choose a language that is not supported by the domain, the scraper will use the default language of the domain.
categoryUrlsYesPick one or a few Best Seller categories to scrape. If you enter a top-level category, all subcategories will be scraped (up to max depth). Category URL has to contain Best-Sellers , best-sellers or bestsellers . To see examples of all accepted URLs, check out the readme . Example: ["https://www.amazon.com/Best-Sellers-Electronics/zgbs/electronics/"]
depthOfCrawlNoAmazon Best Sellers covers 42 main categories. Each of those have at least one more subcategory level. Setting this field to 2 will get you roughly 550 subcategories, each with 100 results.
useCaptchaSolverNoIf enabled the scraper will automatically solve captchas thrown by Amazon. This will decrease the amount of request retries and increase the speed of the scraper. ***IMPORTANT*** - This option works well only for the `'.com'` Amazon domain, but even for that one Amazon doesn't show a few product fields after solving a captcha (specifically: 'attributes', 'manufacturer attributes', and 'bestseller ranks')
detailedInformationNoCheck this if you want to get the maximum amount of information about individual products. However, choosing this option means the scraper could take longer, since it is extracting more data.
maxItemsPerStartUrlNoEnter the maximum number of results you want to scrape per each star URL. Note that Amazon has a hard limit of 100 bestsellers per category. Example: 100

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint=false and destructiveHint=false, so the description earns credit for going beyond them: it discloses that a call starts one Apify Actor run via mcp.apify.com using the caller's own APIFY_TOKEN and account, and that run/dataset IDs are returned for paging. It does not mention credit consumption or expected run duration, which are the remaining operational unknowns for a paid, non-idempotent run.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with purpose, then 'When to use', 'Returns' and 'Behavior', which is easy to scan. Minor waste: the marketing line about HTML/JSON/CSV/Excel export with 'and more' is vague and slightly conflicts with the 'Returns: structured JSON' statement, since the MCP surface only returns JSON.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a six-parameter, no-output-schema ingestion tool it covers the essentials: inputs to supply, what comes back (dataset rows plus IDs), execution model, and account/token requirements. Missing only cost/credit implications and whether the call blocks until the run finishes, which matter for a non-idempotent run-starter.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the six parameters (category URL format, depth of crawl, captcha solver caveats, max items) are already documented in the schema; the description adds only the domain-support hint (.com/.co.uk/.de/.fr/.es/.it) and the top-100 ceiling. Baseline 3 applies because the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Scrape the Amazon Best Sellers categories') plus the scope ('top 100 most popular items') and the extracted fields (name, price, URL, thumbnail). An agent can tell it apart from the sibling amazon-reviews-scraper or the eBay/Etsy tools purely from the resource named.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'When to use' line gives a concrete trigger condition ('you need the top 100 Amazon Best Sellers for a category URL') and the supported domains are listed. It stops short of naming when NOT to use it or pointing to the reviews scraper as the alternative for non-bestseller data, so it is clear but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

junglee--amazon-reviews-scraperAmazon Reviews ScraperA
Read-only
Inspect

Amazon Reviews Scraper. Amazon scraper to extract reviews from Amazon products. Scrape and download detailed reviews without using the Amazon API, including rating score, review description, reactions and images. Download your data as HTML table, JSON, CSV, Excel, XML.

When to use: Use when you need the customer reviews of specific Amazon products (rating, text, date, reactions, images).

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "junglee/amazon-reviews-scraper" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/junglee/amazon-reviews-scraper

NameRequiredDescriptionDefault
sortNoSelect by which criteria the reviews should be sorted. Amazon's default is Top reviews . Options: helpful = Top reviews; recent = Most recent.helpful
maxReviewsNoType in the amount of reviews to be scraped. Leave this blank if you want to extract all reviews. ❗ Note: max amount of reviews per product is 100 per star count (e.g. 100 reviews per 1 star), 100 per product variant (100 reviews per each product variant), several hundred for media reviews, ~20 for keyword search Example: 100
productUrlsYesEnter the URL or URLs of the Amazon products you want to scrape. (E.g., https://www.amazon.com/Sceptre-E248W-19203R-Monitor-Speakers-Metallic/dp/B0773ZY26F). Click + Add to scrape multiple URLs at once. Example: [{"url":"https://www.amazon.com/dp/B0CWXNS552"}]
filterByRatingsNoSelect the number of stars by which reviews should be filtered. Amazon's default is All stars . Duplicate reviews, caused by selecting overlapping ratings (e.g., 1 star and All critical ) will be filtered out.
reviewsCutoffDateNoLimit how far back to the history the scraper should go. The date should be in YYYY-MM-DD or full ISO absolute format or in relative format e.g. 1 days, 2 months, 3 years. All time values are taken in UTC timezone. The maximum reviews per product we can get is 100.
includeGdprSensitiveNoPersonal data such as name, ID or profile image is protected by GDPR in the European Union and by other regulations around the world. You should not scrape personal data unless you have a legitimate reason to do so. [Read more](https://blog.apify.com/is-web-scraping-legal/).
scrapeProductDetailsNoIf enabled, the Actor will scrape and save product data the same way as the [Amazon Product Scraper](https://console.apify.com/actors/BG3WDrGdteHgZgbPK). The product details will be available in the `product` output field.
reviewsFilterByKeywordsNoEnter keywords by which the reviews should be filtered. Each keyword is scraped separately, in a combination with Filter by ratings option. Duplicate reviews, caused by selecting overlapping keywords, will be filtered out. Example keywords that get lots of results: `["Good", "Bad", "Great", "Quality", "Useful", "Love", "Price"]`
deduplicateRedirectedAsinsNoIf set, the crawler will deduplicate the redirected ASINs (by default). Otherwise the product will be saved multiple times under the ASINs it was redirected to.
reviewsAlwaysSaveCategoryDataNoIf enabled, the Actor will return the review category data even if there are no reviews. - Normally, only reviews are saved, if there are no reviews, the review category data is not saved. - With this option, the review category data will be saved alone, if there are no reviews (review fields are empty).
reviewsUseProductVariantFilterNoIf the product has multiple variants (e.g., different colors, sizes, etc.) , you can scrape reviews only for the selected variant.

TDQS

A4.3/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the supplied annotations, the description discloses that each call starts a run of the 'junglee/amazon-reviews-scraper' Actor through Apify's hosted MCP gateway, requires the caller's own APIFY_TOKEN, and consumes the caller's Apify account — operationally critical context not implied by readOnlyHint/openWorldHint. It also explains the return shape (dataset rows plus run and dataset IDs for paging the full dataset) and the read-only nature of the scrape, with no conflict against destructiveHint=false or idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The labeled 'When to use / Returns / Behavior' structure is front-loaded and easy to scan. There is minor waste: the first sentence restates the title, and the 'download as HTML, JSON, CSV, Excel, XML' export list is irrelevant noise for an MCP call that returns JSON dataset rows.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter scraper with no output schema, the description covers purpose, selection criteria, return shape, auth requirement, and account impact — enough to invoke it correctly. What remains thin is how long a run takes or whether the caller must poll using the returned run/dataset IDs, which an agent running this tool would want to know.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all 11 parameters carry titles, defaults, enums, and explanatory text (maxReviews limits, reviewsCutoffDate formats, keyword duplication behavior). The description adds no parameter-level guidance of its own, so the baseline 3 applies — the schema is doing nearly all the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('extract reviews from Amazon products') and enumerates the extracted fields (rating score, review description, reactions, images). Against the nearest sibling, junglee--amazon-bestsellers, the resource distinction (reviews vs. bestseller rankings) is obvious, so an agent can route correctly without opening either schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides an explicit 'When to use' line scoped to 'customer reviews of specific Amazon products', which is clear positive guidance. It stops short of naming alternatives or exclusions (e.g., when to prefer the bestsellers tool or the product-details option), so it earns a 4 rather than a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publicrecords--etsy-search-scraperEtsy Scraper — Listings, Prices & Best SellersA
Read-only
Inspect

Etsy Scraper — Listings, Prices & Best Sellers. Scrape Etsy search results by keyword, category or market page: title, price, rating, reviews, Bestseller and Star Seller badges, ad flag and search rank.

When to use: Use when you need what ranks on Etsy for a keyword, category or market page: position, price, rating, review count, Bestseller/Star Seller badges and whether the listing is an ad.

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "publicrecords/etsy-search-scraper" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/publicrecords/etsy-search-scraper

NameRequiredDescriptionDefault
sortNoOrder of results, as on Etsy's own sort menu. Applies to search keywords (a market phrase with a sort set runs as a keyword search). Options: relevance = Relevance (Etsy default); newest = Newest; price_asc = Price: low to high; price_desc = Price: high to low; top_reviews = Top customer reviews.relevance
sourceNoOptional free-text label for this run (for example the Make template that started it). Copied onto every listing row and onto RUN_SUMMARY so template runs can be filtered. Leave empty if you do not need it.
queriesNoKeywords to search, one per line (e.g. ceramic mug). Each keyword lands on Etsy's /market page, then pages through Etsy's own search API — every listing on the page (rendered and lazy-loaded), in Etsy's rank order. Example: ["ceramic mug"]
ship_toNoTwo-letter code, e.g. US, GB, DE.
maxItemsNoStop after this many listing rows across all inputs. Raise it (or set 0 for no cap) to get more pages.
maxPagesNoPages per input, 1–20 (Etsy's own cap). On the Standby/MCP endpoint one call stops at 240 s and says so (truncated:true with pagesDone/pagesRequested); big jobs belong in a batch run.
maxPriceNoHighest price to include, whole units. Leave empty for no maximum.
minPriceNoLeave empty for no minimum.
categoryUrlsNoEtsy category pages, e.g. https://www.etsy.com/c/jewelry/necklaces (no query string). Read in Etsy's default order.
fillLazyCardsNoEtsy renders 12 cards and lazy-loads the rest (48 more on page 1). On, the run fetches them the way Etsy's own page does, so you get the whole page in rank order. Off, you get the 12 rendered cards per page only (faster, fewer requests on your proxy).
free_shippingNoOnly return listings with free shipping.
is_discountedNoOnly return listings currently on sale.
marketPhrasesNoPhrases for Etsy's /market/ pages (any phrase resolves). Example: personalized dog collar
is_best_sellerNoOnly return listings marked Bestseller.
is_star_sellerNoOnly return listings from Star Seller shops.
instant_downloadNoOnly return digital download listings.
is_handmade_onlyNoOnly return listings Etsy flags as handmade.
maxCacheAgeHoursNoServe a keyword from our recent snapshot of the same search when it is at most this many hours old and holds every row you asked for; otherwise fetch live. Snapshot rows say data_source "cache", stale true and as_of (when they were read live), and are charged like live rows. 0 = always fetch live.
is_personalizableNoOnly return listings that offer personalization.
proxyConfigurationNoEtsy blocks datacenter IPs. Default: Apify Proxy RESIDENTIAL, included in the event prices (no separate proxy or compute charge). Your own residential proxy works too. A blocked page is never charged.
max_processing_daysNoOnly return listings whose processing time is at most this many days (Etsy's ready-to-ship filter).

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, openWorld, non-idempotent, non-destructive), the description discloses that the call starts a run on Apify's hosted MCP gateway using the caller's own APIFY_TOKEN and Apify account, that it is read-only against public data, and that run/dataset IDs are returned for paging. It even flags the docs URL and the account/billing implication, which is the kind of context an agent cannot get from annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Labelled sections (When to use / Returns / Behavior) with the intended question front-loaded and zero filler; the docs link is the only non-essential element and it is short. Every sentence carries either selection guidance or behavioral fact.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 21-parameter, no-output-schema scraping tool, the description supplies what an agent most needs: what the result set is, that rows come back as JSON with run/dataset IDs for paging the full set, that auth/billing ride on the caller's Apify account, and that it is read-only. Remaining specifics (sort, caps, cache age, proxy) are fully documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds genuine meaning by naming the three input modes (keywords, category URLs, market phrases) that the 21 parameters split into — something not obvious from a flat parameter list. Filter semantics, caching and truncation are left to the schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource — scrape Etsy search results by keyword, category or market page — and enumerates the fields returned (title, price, rating, reviews, badges, ad flag, rank). It doesn't explicitly distinguish itself from the one same-platform sibling (publicrecords--etsy-shop-velocity), so an agent must infer the split from titles alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

A dedicated 'When to use' line states the intended question — what ranks on Etsy for a keyword/category/market page and with what position, price, rating and badges. There are no explicit exclusions or named alternatives (e.g. when to prefer the shop-velocity tool instead).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

publicrecords--etsy-shop-velocityEtsy Shop Sales Tracker & ScraperA
Read-only
Inspect

Etsy Shop Sales Tracker & Scraper. Track Etsy shop sales counters with this Etsy shop scraper: measured sales counts with the date each was read.

When to use: Use when you need how many sales an Etsy shop has made, or how fast shops are selling, filtered by shop name, title keyword, category or change date. Returns one row per shop with the measured sales counter and the date it was read.

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "publicrecords/etsy-shop-velocity" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/publicrecords/etsy-shop-velocity

NameRequiredDescriptionDefault
shopsNoEtsy shop names (the part after etsy.com/shop/). Leave empty to use the keyword or category filters. Example: ["OrelCeramics","Bestickend"]
sinceNoISO date. Return only shops whose counters changed since this date. Empty = all matching shops.
categoryNoExact panel category label, matched case-insensitively, e.g. "kids & baby > toys", "home & living > home decor > scatter cushions", "art & collectibles > fine art ceramics". The label is filled for about 0.7% of shops, so a category filter returns only those shops. Empty = all.
keywordsNoCase-insensitive words matched against the shop title and headline.
maxShopsNoUpper bound on rows returned (and charged).
minSalesNoOnly shops at or above this sales counter.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, open-world), and the description adds genuinely new operational facts: the call starts a run of the Apify Actor publicrecords/etsy-shop-velocity via mcp.apify.com, requires the caller's own APIFY_TOKEN, consumes the caller's Apify account, and is non-mutating on the source site. It also discloses the run/dataset ID paging model and links to docs, so the agent knows the call is an accountable, billed run rather than a plain read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The definition is front-loaded with purpose and then cleanly sectioned into When to use, Returns and Behavior, so an agent can scan it. There is mild redundancy: the opening sentence repeats the title verbatim and the phrase "with this Etsy shop scraper" is keyword padding rather than information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description correctly compensates by describing the returned rows and the run/dataset IDs, and it covers the auth and account-cost model that an async Actor wrapper requires. It could go further on how to page the dataset with those IDs and on the fact that an unfiltered call samples an arbitrary set of shops up to maxShops, but nothing essential is missing for a correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so each of the six parameters is already documented with titles, defaults and constraints; baseline is 3. The prose only restates the filter axes (shop name, title keyword, category, change date) already present in the schema, adding no interpretation such as how filters combine or precedence between shops and keywords.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: tracking/measuring Etsy shop sales counters and the date each counter was read, one row per shop. An agent immediately knows what data comes back. It does not, however, distinguish itself from the sibling publicrecords--etsy-search-scraper, which an agent could plausibly confuse with a sales-counter tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"When to use: Use when you need how many sales an Etsy shop has made, or how fast shops are selling" gives explicit trigger conditions, reinforced by naming the four filter axes (shop name, title keyword, category, change date). It stops short of exclusions or pointing to an alternative tool when the intent is listing search rather than sales measurement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

unseenuser--TikTok-Shop-ScraperTikTok Shop Scraper [NO COOKIES] ✅A
Read-only
Inspect

TikTok Shop Scraper [NO COOKIES] ✅. Extract product data, reviews, seller info, creator affiliates, and GMV/sales estimates from TikTok Shop at scale. Filter by category, price range, and country (US, UK). Built for dropshippers, e-commerce sellers, and DTC brands hunting trending products before they go viral.

When to use: Use for TikTok Shop products, reviews, sellers, creator affiliates and GMV/sales estimates by category, keyword, shop or product URL.

Returns: the run's dataset rows as structured JSON (one row per result), plus the run and dataset IDs for paging the full dataset.

Behavior: starts one run of the Apify Actor "unseenuser/TikTok-Shop-Scraper" through Apify's hosted MCP gateway (mcp.apify.com) with your own APIFY_TOKEN; the run uses your Apify account. Read-only: it only reads public web data and changes nothing on the source site. Docs: https://apify.com/unseenuser/TikTok-Shop-Scraper

NameRequiredDescriptionDefault
modeYesPick what you want to scrape. The matching section below has the same emoji.shop_search
regionNoThe United States is the only fully supported market and the only one this Actor is tested against. The other markets are selectable and sometimes return data, but they are unreliable and may come back empty or with fields missing (no review counts, no seller location). Treat anything other than US as unsupported and unwarranted. Leave this set to US.US
sortByNoOnly used in Shop Catalog mode. 'Best selling' surfaces a store's proven winners; 'Newest' surfaces what they just launched. Options: top = 🔥 Best selling (default); new_releases = 🆕 Newest releases.top
shopUrlsNoFull store URLs. On the app, tap a shop name and copy the link. Format: https://www.tiktok.com/shop/store/ /
usernamesNoTikTok handles, one per line. The @ prefix is optional - both 'hyram' and '@hyram' work.
maxResultsNo0 = return all available results (no limit). Any other number is a limit per query, shop or creator: with 5 keywords and 100 here, you get up to 500 rows in total. There is no ceiling on this number. Nothing is capped for technical reasons, so if you want to control spend, use this run's "max items" setting, which limits what you are charged for.
productUrlsNoFull product detail page URLs. Right-click any TikTok Shop product and copy the link. Format: https://www.tiktok.com/shop/pdp/ /
searchKeywordsNoWhat you'd type into TikTok Shop's search bar. One per line.
getRelatedVideosNoOnly used in Product Details mode. Adds a relatedVideoCount field. The affiliate videos themselves are returned either way, so this changes very little - it is hidden from the form and kept only so that previously saved runs stay valid.
maxReviewsPerProductNo0 = fetch every review the product has (no limit). Only used in Product Reviews mode. There is no ceiling here either, so be aware that popular products can carry tens of thousands of reviews and each review is one billable row. Use this run's "max items" setting if you want a hard stop on spend.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and non-destructive, and the description reinforces this while adding genuinely new behavior: it starts a run of the Apify Actor through mcp.apify.com, requires the caller's own APIFY_TOKEN, and bills against the caller's Apify account. It also explains the return contract (dataset rows plus run/dataset IDs for paging). It omits run latency and the asynchronous nature of Actor runs, which matters for a scraper that can take minutes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loads the capability, then a 'When to use / Returns / Behavior' block, which is easy to scan. Some of the framing ('Built for dropshippers, e-commerce sellers, and DTC brands hunting trending products before they go viral') is marketing copy that does not help invocation.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 10-parameter, mode-driven scraper with no output schema, the description covers return shape, execution model, and auth. The main omission is that it never signals expected run duration or polling, and its 'country (US, UK)' claim is incomplete relative to the schema's broader, explicitly unsupported region enum.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description advertises filtering by 'category, price range, and country (US, UK)', but the schema has no category or price-range parameters at all, and the region parameter explicitly warns that only US is tested while other markets are unreliable. That directly misleads an agent into setting region=GB, and the parameter details the description does provide are already fully covered by a 100% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource set: extract product data, reviews, seller info, creator affiliates, and GMV/sales estimates from TikTok Shop. The platform is named explicitly, which cleanly separates it from the Amazon, eBay, and Etsy siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'When to use' line enumerates the supported intents (products, reviews, sellers, creator affiliates, GMV estimates) and the input shapes (category, keyword, shop, product URL). It lacks explicit when-not-to-use guidance and never routes the agent to a named alternative, but the context is clear enough to select this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.2.1
    • First observedcaffein-dot-dev--ebay-sold-listings
    • First observedjunglee--amazon-bestsellers
    • First observedjunglee--amazon-reviews-scraper
    • First observedpublicrecords--etsy-search-scraper
    • First observedpublicrecords--etsy-shop-velocity
    • First observedunseenuser--TikTok-Shop-Scraper

TDQS

A4.2/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a clearly distinct platform and data type: Amazon bestsellers vs. Amazon reviews, eBay sold comps, TikTok Shop products, Etsy shop sales velocity, and Etsy search listings. The two Etsy tools are well separated by shop-level sales counters versus keyword/category listing search and ranking.

Naming Consistency4/5

All tools follow a predictable publisher--actor-slug convention, making their origin and purpose readable. Minor deviations exist in casing (TikTok-Shop-Scraper) and the optional 'scraper' suffix across slugs.

Tool Count5/5

Six tools is well-scoped for a focused e-commerce sales-signals server. Each tool adds a distinct marketplace or signal type, with no obvious filler or redundancy.

Completeness3/5

The set covers several useful sales signals across Amazon, eBay, TikTok Shop, and Etsy, but has notable gaps: no Amazon product search/detail beyond bestsellers and reviews, no eBay active-listing search, and no generic cross-platform product lookup or comparison. Agents can work around some gaps using platform-specific tools, but not all.

Maintenance

ActivityNo data
ResponsivenessSyncing

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    Hosted Amazon market-intelligence MCP for Claude and ChatGPT: query brands, sellers, ASINs, under-competed niches, the cross-seller operator network, observed buy-box history, and Amazon/Walmart cross-marketplace overlap. 65 read-only research tools over a pre-collected research dataset.
    72
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Remote MCP server with 19 e-commerce and IP-compliance data tools — Amazon product/review/search/niche/bestseller data, AI SERP & keyword trends, local Maps POI, WIPO trademark search, and PACER patent litigation. No scraping code or proxies needed; one API key unlocks all tools.
    21
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables read-only Amazon seller investigations through ChatGPT, Claude, and compatible MCP clients, providing store overviews, insights, pricing, inventory, sales trends, and profit breakdowns.
    MIT