Etsy Product Research
Etsy Product Query
Filter Etsy products by keyword, URL, price, sales, favorites, reviews, listing date, category, product type, and marketplace. Available via REST API or MCP.
MCP tool name
nexscope_etsy_product_queryMCP endpoint
https://api.nexscope.ai/mcpJSON-RPC method
tools/callAuthentication
Use OAuth 2.1 Authorization Code with PKCE and the mcp:tools scope. API keys remain supported as a compatibility option.
Authorization: Bearer nk-xxxxxxxxxxxxxxxxxIf authentication fails, ask the user to open API Access and copy a valid key.
Call this MCP tool
Initialize an MCP 2025-11-25 Streamable HTTP session at https://api.nexscope.ai/mcp, then use tools/call.
{
"jsonrpc": "2.0",
"id": "etsy-product-query-1",
"method": "tools/call",
"params": {
"name": "nexscope_etsy_product_query",
"arguments": {
"page": 1,
"pageSize": 20,
"searchKey": "phone case"
}
}
}MCP 2025-11-25 ยท Streamable HTTPProgress is delivered on the original POST SSE response. GET SSE carries notifications; reconnecting must query existing asynchronous work rather than submit again.
Arguments
| Name | Type | Required | Description |
|---|---|---|---|
beginFavorites | integer | optional | Favorite count (start), combined with end value to form the upstream favorites range Example: 1 |
beginFavoritesWeekly | integer | optional | Weekly new favorites (start), combined with end value to form the upstream favorites_weekly range Example: 1 |
beginPrice | number | optional | Price (start), combined with end price to form the upstream price range (e.g., 20~100). When only one side is provided, the upstream returns start~ or ~end Example: 1 |
beginReviews | integer | optional | Review count (start), combined with end value to form the upstream reviews range Example: 1 |
beginReviewsWeekly | integer | optional | Weekly new reviews (start), combined with end value to form the upstream reviews_weekly range Example: 1 |
beginSales | integer | optional | Total sales (start), combined with end value to form the upstream sales range Example: 1 |
beginSalesWeekly | integer | optional | Weekly sales (start), combined with end value to form the upstream sales_weekly range (e.g., 1~100) Example: 1 |
category | string | optional | Product category ID (single category), see the Category Query API Example: {} |
country | string | optional | Shipping country Example: {} |
currencyCode | string | optional | Currency code, default USD Example: USD |
endFavorites | integer | optional | Favorite count (end) Example: 1 |
endFavoritesWeekly | integer | optional | Weekly new favorites (end) Example: 1 |
endPrice | number | optional | Price (end), combined with start price to form the upstream price range Example: 1 |
endReviews | integer | optional | Review count (end) Example: 1 |
endReviewsWeekly | integer | optional | Weekly new reviews (end) Example: 1 |
endSales | integer | optional | Total sales (end) Example: 1 |
endSalesWeekly | integer | optional | Weekly sales (end) Example: 1 |
isBestsell | integer | optional | Whether the product is a bestseller Example: 1 |
isPick | integer | optional | Whether the product is a Pick item Example: 1 |
isRaving | integer | optional | Whether the product is a Raving item Example: 1 |
listedTime | string | optional | Listing time no earlier than this date (YYYY-MM-DD) Example: {} |
page | integer | optional | Page number (starting from 1) Example: 1 |
pageSize | integer | optional | Items per page, default 20, max 100, recommended not to exceed 50 Example: 20 |
productType | string | optional | Product type, comma-separated for multiple: 1=Handmade 2=Vintage 3=Digital 4=Custom 9=Other Example: {} |
searchKey | string | optional | Search keyword or Etsy product URL Example: {} |
sortBy | integer | optional | Sort field (corresponds to upstream sort_by, values 1~6) Example: 1 |
sortDesc | integer | optional | Sort direction (corresponds to upstream desc). Schema example: descending 1, ascending 2 (encoding differs from store query's sortDesc) Example: 1 |
status | integer | optional | Product status (example: 1=active, 0=inactive) Example: 1 |
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Description |
|---|---|---|---|
total | integer | optional | Number of records (this page returns the number of records to facilitate alignment with the length of the list) Example: {} |
sourceType | string | optional | Source type: etsy Example: {} |
columns | array | optional | Rendered columns Example: {} |
costToken | integer | optional | Token consumption (estimated based on the number of items returned on this page) Example: {} |
productNum | integer | optional | Total number of eligible products (upstream product_num) Example: {} |
title | string | optional | Title Example: {} |
type | string | optional | Rendering style Example: {} |
products | array | optional | Etsy product listings Example: {} |
category | string | optional | Category name Example: {} |
favorites | integer | optional | Number of collections Example: {} |
favoritesWeekly | integer | optional | Number of new favorites per week Example: {} |
imageUrl | string | optional | Main image URL Example: {} |
isBestsell | integer | optional | Best seller or not: 1=yes Example: {} |
isPick | integer | optional | Whether to Pick: 1=Yes Example: {} |
isRaving | integer | optional | Whether Raving: 1=Yes Example: {} |
price | number | optional | price Example: {} |
productUrl | string | optional | Product link Example: {} |
releaseTime | string | optional | Shelf/release time Example: {} |
reviews | integer | optional | Number of comments Example: {} |
reviewsWeekly | integer | optional | New comments per week Example: {} |
salesTotal | integer | optional | total sales Example: {} |
salesWeekly | integer | optional | Weekly sales Example: {} |
shipsFrom | string | optional | Shipping country Example: {} |
status | integer | optional | Product status: 1=on the shelves, 0=off the shelves Example: {} |
storeName | string | optional | Store name Example: {} |
tags | string | optional | tag Example: {} |
title | string | optional | Product title Example: {} |
Examples
Example arguments
{
"page": 1,
"pageSize": 20,
"searchKey": "phone case"
}Example structuredContent
{}