Skip to main content
Glama
E-commerce Sales Signals MCP

E-commerce Sales Signals MCP

Etsy Scraper — Listings, Prices & Best Sellers

publicrecords--etsy-search-scraper
Read-only

Scrape Etsy search, category, or market results by keyword to collect listing titles, prices, ratings, reviews, Bestseller/Star Seller badges, ad flags, and rank for e-commerce research.

Instructions

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

Input Schema

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).

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.1

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.