Etsy Product Research
Etsy Product Research: product/detail API
Etsy Product Research: product/detail API.
MCP tool name
nexscope_data_etsy_product_detailMCP 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": "data-etsy-product-detail-1",
"method": "tools/call",
"params": {
"name": "nexscope_data_etsy_product_detail",
"arguments": {
"productUrl": "https://www.etsy.com/listing/1710567856/its-okay-to-make-some-mistakes-shirt"
}
}
}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 |
|---|---|---|---|
productUrl | string | required | Etsy products HTTPS direct link. Userinfo must not be included; Host must be `etsy.com` or its subdomain, port must be omitted or `443`; path must be `/listing/<numeric ID>`, with at most one non-empty title slug, and can have trailing slashes and query parameters Example: {} |
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Description |
|---|---|---|---|
errcode | integer | optional | Business status code; `200` indicates success Example: {} |
errmsg | string | optional | Business status message; `ok` on success Example: {} |
data | array | optional | Array of product objects; fixed to 1 item when successful Example: {} |
total | integer | optional | Fixed to `1` when successful Example: {} |
costToken | integer | optional | Consume token Example: {} |
type | string | optional | Fixed to `tableListWorkbenches` Example: {} |
columns | array | optional | Rendering column definition generated based on product top-level fields Example: {} |
productId | string | optional | Etsy listing ID Example: {} |
shopId | string | optional | Store ID Example: {} |
shopUrl | string | optional | Store URL; it may be empty or misidentified when the page is abnormal. Example: {} |
shopSales | string | optional | Store public sales text Example: {} |
shopName | string | optional | Store name; it may be empty or misidentified when the page is abnormal. Example: {} |
productUrl | string | optional | Product URL Example: {} |
searchPosition | string | optional | Source search location; usually empty for direct queries Example: {} |
image | string | optional | Main image URL Example: {} |
images | array | optional | Image URL list Example: {} |
maxQuantity | integer | optional | Maximum available quantity reported on the page Example: {} |
variants | array | optional | Product variations; empty array if no variations Example: {} |
title | string | optional | Product title Example: {} |
description | array | optional | list of description paragraphs Example: {} |
shopReviews | integer | optional | Number of store reviews Example: {} |
reviews | integer | optional | Current number of listing comments Example: {} |
star | string | optional | Current rating, may be an empty string Example: {} |
highlightsTags | array | optional | Buyer Feedback Highlights Tag Example: {} |
reviewsTags | array | optional | Comment tags and frequency objects Example: {} |
yearsOnEtsy | string | optional | How long your store has been public on Etsy Example: {} |
hasRatingsBadge | boolean | optional | Is there a rating badge? Example: {} |
hasConvosBadge | boolean | optional | Is there a communication badge? Example: {} |
hasShippingBadge | boolean | optional | Is there a delivery badge? Example: {} |
reviewsScores | object | optional | Dynamic review itemization; keys and values change from page to page Example: {} |
category | string | optional | Category breadcrumbs Example: {} |
countryShippingFrom | string | optional | Shipping country/region Example: {} |
currency | string | optional | currency code Example: {} |
moreLikeUrl | string | optional | Similar recommendation link, may be empty Example: {} |
Examples
Example arguments
{
"productUrl": "https://www.etsy.com/listing/1710567856/its-okay-to-make-some-mistakes-shirt"
}Example structuredContent
{
"code": 0,
"cost": "-1",
"data": {},
"msg": null,
"time": "2026-01-01 00:00:00",
"traceId": null,
"ts": "0"
}