TikTok Intelligence FM
TikTok Product Discovery
Search and filter global TikTok Shop products by keyword, category, shop type, commission, sales, creator count, and sorting. Available via REST API or MCP.
MCP tool name
nexscope_tiktok_product_discoveryMCP 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": "tiktok-product-discovery-1",
"method": "tools/call",
"params": {
"name": "nexscope_tiktok_product_discovery",
"arguments": {
"keyword": "phone case",
"page": 1,
"pageSize": 10,
"region": "US"
}
}
}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 |
|---|---|---|---|
keyword | string | optional | Search keyword (fuzzy match on product title) Example: phone case |
region | string | optional | Market region code. Options: US (United States), GB (United Kingdom), MX (Mexico), ES (Spain), DE (Germany), IT (Italy), FR (France), ID (Indonesia), VN (Vietnam), MY (Malaysia), TH (Thailand), PH (Philippines), BR (Brazil), JP (Japan), SG (Singapore) Example: US |
category | string | optional | English category name, automatically matched to TikTok category ID. Non-English input must be translated to English first Example: {} |
shopType | integer | optional | Store type: 1=local store, 2=cross-border store Example: 1 |
isTopSelling | boolean | optional | Filter hot-selling products only Example: false |
isNewListed | boolean | optional | Filter newly listed products only Example: false |
isSshop | boolean | optional | Filter TikTok fully managed (S-shop) products only Example: false |
isFreeShipping | boolean | optional | Filter free shipping products only Example: false |
isLocalWarehouse | boolean | optional | Filter local warehouse shipping products only Example: false |
unitsSoldRange | object | optional | Sales volume range filter, format: {"min": 100, "max": 5000} Example: {} |
commissionRateRange | object | optional | Commission rate range filter, format: {"min": 0.05, "max": 0.20} (decimal, 0.10=10%) Example: {} |
creatorCountRange | object | optional | Creator count range filter, format: {"min": 10, "max": 500} Example: {} |
orderField | string | optional | Sort field: day7_units_sold (7-day sales), day7_gmv (7-day GMV), commission_rate (commission rate), total_units_sold (total sales), total_gmv (total GMV), creator_count (creator count). Default descending order Example: {} |
page | integer | optional | Page number, default 1 Example: 1 |
pageSize | integer | optional | Items per page, max 10, default 10 Example: 10 |
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Description |
|---|---|---|---|
total | integer | optional | The total number of records that meet the criteria. Example: {} |
products | array | optional | Product information list, product object fields are shown in the table below. Example: {} |
columns | array | optional | Render column definitions. Example: {} |
type | string | optional | Rendering style type. Example: {} |
costToken | integer | optional | The number of tokens consumed. Example: {} |
title | string | optional | Product title. Example: {} |
productId | string | optional | Product unique identification ID. Example: {} |
region | string | optional | Market area code. Example: {} |
price | number | optional | Product price. Example: {} |
minPrice | number | optional | lowest price. Example: {} |
maxPrice | number | optional | Highest price. Example: {} |
currency | string | optional | Currency code. Example: {} |
totalSaleCnt | integer | optional | Cumulative total sales. Example: {} |
totalSale1dCnt | integer | optional | 1 day sales. Example: {} |
totalSale7dCnt | integer | optional | 7 day sales. Example: {} |
totalSale28dCnt | integer | optional | 28 days sales. Example: {} |
totalSale90dCnt | integer | optional | 90 Day Sales. Example: {} |
totalSaleGmvAmt | number | optional | Cumulative total GMV. Example: {} |
totalSaleGmv7dAmt | number | optional | 7 days GMV. Example: {} |
totalSaleGmv28dAmt | number | optional | 28 days GMV. Example: {} |
totalVideoCnt | integer | optional | Number of videos with goods. Example: {} |
totalLiveCnt | integer | optional | Number of goods delivered live. Example: {} |
totalIflCnt | integer | optional | Bring the number of people with goods. Example: {} |
productCommissionRate | number | optional | Product commission ratio (decimal, `0.10`=10%). Example: {} |
productRating | number | optional | Product ratings. Example: {} |
reviewCount | integer | optional | Number of comments. Example: {} |
skuCount | integer | optional | SKU quantity. Example: {} |
shopName | string | optional | Store name. Example: {} |
shopSellerId | string | optional | Seller ID. Example: {} |
shopTotalUnitsSold | integer | optional | The total sales volume of the store. Example: {} |
isCrossBorder | integer | optional | Whether it is cross-border: `1`=cross-border, `0`=local. Example: {} |
isSShopText | string | optional | Whether to fully host the store (yes/no). Example: {} |
freeShippingText | string | optional | Whether shipping is free (yes/no). Example: {} |
availableDate | string | optional | Shelf time. Example: {} |
categoryName | string | optional | Product category name. Example: {} |
salesTrendFlagText | string | optional | Sales trend tag. Example: {} |
tiktokUrl | string | optional | TikTok merchandise link. Example: {} |
imageUrl | string | optional | Product image URL. Example: {} |
Examples
Example arguments
{
"keyword": "phone case",
"page": 1,
"pageSize": 10,
"region": "US"
}Example structuredContent
{}