etsy-sales-mcp logo

etsy-sales-mcp

0

etsy-sales-mcp plugin for Cursor

2 skills

etsy-search-scraper

Live Etsy search listing rows for any keyword, market phrase or category: price, rating, review count, Bestseller / Star Seller / Etsy's Pick badges, ad-vs-organic flag, rank position and shop. Uses Apify Actor publicrecords/etsy-search-scraper through MCP; needs an Apify token (OAuth/token).

# Etsy Search Scraper πŸ”Ž Give the agent real Etsy search results to reason from: what is actually ranking for a keyword right now, at what price, with which badges, and how much of page 1 is paid. Disclosure: I maintain these Actors on Apify Store (publicrecords). ## Installation ```bash npx skills add GeminiGeorge22/etsy-sales-mcp --skill etsy-search-scraper -g ``` This skill calls the **Etsy Search Scraper** Actor (`publicrecords/etsy-search-scraper`) through the Apify MCP server. Add it to your agent's MCP config once: ```json { "mcpServers": { "etsy-sales": { "url": "https://mcp.apify.com/?tools=publicrecords/etsy-shop-velocity,publicrecords/etsy-search-scraper", "headers": { "Authorization": "Bearer <APIFY_TOKEN>" } } } } ``` Auth: Apify OAuth/token. An Apify account is free; the Actor bills listing rows via Console PPE (see repo README). It runs on Apify residential proxy by default. ## What a row contains Field names from a live SUCCEEDED dataset item (F-C125): | field | meaning | |---|---| | `query`, `page`, `position`, `surface` | keyword and the exact rank/surface Etsy showed | | `listing_id`, `url`, `title` | the listing | | `price`, `currency` | shown price | | `rating_value`, `review_count`, `review_count_approx` | rating; `true` when Etsy rounded | | `bestseller`, `popular_now`, `star_seller`, `etsys_pick`, `free_shipping` | badges | | `is_ad` | sponsored slot, or `null` when unknown | | `shop_name`, `shop_id`, `shop_url` | the seller | ## Usage Ask the agent, for example: - "Pull page 1–3 for *personalized dog collar* and tell me the price band, how many slots are ads, and which titles carry Bestseller." - "Which shops own the most page-1 slots for *linen apron*?" Tool call the agent makes (`publicrecords--etsy-search-scraper`): ```json { "queries": ["personalized dog collar"], "maxPages": 3 } ``` Optional filters: `is_best_seller`, `is_star_seller`, `free_shipping`, `is_discounted`, `instant_download`, `ship_to` (e.g. `"US"`). `marketPhrases` and `categoryUrls` take Etsy's `/market/` phrases and category pages. ## How it pairs with other skills - **etsy-shop-sales-tracker** β€” once the shops are known, check whether they are growing. ## Limits - Results are what Etsy shows a logged-out visitor from your proxy's region. - Etsy caps a query at 20 pages. - Blocked pages charge no listing rows.

etsy-shop-sales-tracker

Is this Etsy shop growing, and how fast? Daily sales counters with history, deltas, fitted sales rate and breakout flags for any Etsy shop from a hosted daily panel β€” no proxy required. Uses Apify Actor publicrecords/etsy-shop-velocity through MCP; needs an Apify token (OAuth/token).

# Etsy Shop Sales Tracker πŸ“ˆ The question every seller tool guesses at and this one measures: how many sales did a shop make this week, and is that accelerating? Disclosure: I maintain these Actors on Apify Store (publicrecords). ## Installation ```bash npx skills add GeminiGeorge22/etsy-sales-mcp --skill etsy-shop-sales-tracker -g ``` This skill calls the **Etsy Shop Sales Tracker** Actor (`publicrecords/etsy-shop-velocity`) through the Apify MCP server: ```json { "mcpServers": { "etsy-sales": { "url": "https://mcp.apify.com/?tools=publicrecords/etsy-shop-velocity,publicrecords/etsy-search-scraper", "headers": { "Authorization": "Bearer <APIFY_TOKEN>" } } } } ``` Auth: Apify OAuth/token. The Actor reads from a daily panel captured once a day and served from a snapshot; your query never touches Etsy. A shop with no history yet comes back as coverage-pending and is added to the panel for the next day. ## What a record contains Field names from a live SUCCEEDED dataset item (F-C125): | field | meaning | |---|---| | `shop`, `shop_url`, `title`, `headline`, `category` | shop identity | | `sales_count`, `sales_precision`, `reviews_count`, `rating`, `admirers`, `listings_active` | lifetime counters as of the snapshot | | `as_of`, `snapshot_date`, `snapshot_stale`, `first_seen`, `last_changed`, `history_days`, `read_interval_days` | panel timing | | `delta_last`, `delta_7d`, `delta_28d` | counter deltas | | `sales_per_day`, `units_day`, `units_lo`, `units_hi`, `lift_7d` | fitted / estimated rate | | `breakout`, `breakout_p`, `vintage_event` | flags | | `source` | provenance string | ## Usage - "Is *KJPottery* growing? Compare its 28-day sales delta to its baseline." - "Of these ten shops from my keyword scan, which three are accelerating?" - "Flag any shop in my watch list with a breakout this week." Tool call the agent makes (`publicrecords--etsy-shop-velocity`): ```json { "shops": ["KJPottery", "OrelCeramics"] } ``` ## How it pairs with other skills - **etsy-search-scraper** β€” find the shops that own page 1 for a keyword, then ask which of them are growing. ## Limits - Numbers are shop-level counters Etsy publishes; listing-level sales are estimates and are labelled as such. - A shop added today has one reading; rates need several days of history and say so.