Nexscope

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.

CostRecent Avg. 22 · Range 11–22 credits / call
Try online
POST · https://api.nexscope.ai/fm/productSearchMCP · nexscope_tiktok_product_discovery

What this API does

Search and filter global TikTok Shop products by keyword, category, shop type, commission, sales, creator count, and sorting. The request accepts keyword, region, category, shopType, isTopSelling. Its documented result includes products, title, productId, region, price, minPrice, maxPrice, currency.

TikTok Product Discovery API use cases

Find products matching a sourcing brief

To find products matching a sourcing brief, a marketplace analyst submits keyword and region to TikTok Product Discovery. The returned products, title, productId help identify products matching the requested search criteria.

Compare a product search shortlist

A marketplace analyst uses TikTok Product Discovery with keyword and region to compare a product search shortlist. The returned products, title, productId help compare candidates before requesting individual product details.

Collect candidates for a market review

For this workflow, a marketplace analyst calls TikTok Product Discovery with keyword and region to collect candidates for a market review. The result helps choose products for a supplier or competitor review.

TikTok Product Discovery API FAQ

What does the TikTok Product Discovery API return?

Search and filter global TikTok Shop products by keyword, category, shop type, commission, sales, creator count, and sorting. The documented output includes products, title, productId, region, price, minPrice, maxPrice, currency. It corresponds to the supplied keyword, region, category, shopType, isTopSelling. Optional fields can be absent; a missing value should not be interpreted as a measured zero. Example values illustrate the response shape, rather than live account results.

How many credits does the TikTok Product Discovery API cost?

The current documented cost is Recent Avg. 22 · Range 11–22 credits / call. This is the same cost shown at the top of this page. If a range or estimate is displayed, the final charge depends on the request. Review your available credits and the pricing page before calling the API, and check API usage records for the actual charge.

How do I call the TikTok Product Discovery API from my app or an MCP client?

Send a POST request to https://api.nexscope.ai/fm/productSearch with your API key as a Bearer token and the JSON inputs shown in API integration. In a compatible MCP client such as Claude or Cursor, connect Nexscope and call nexscope_tiktok_product_discovery. Use the MCP arguments shown in the MCP guide, or switch Online test to MCP to review its request before adding it to your app.

View plans and creditsConnect this API with MCP

Try this API
Endpoint
https://api.nexscope.ai/fm/productSearch
MCP method
nexscope_tiktok_product_discovery

Step 1 of 3 · Authenticate

Authentication

All run endpoints require a user API key. Send it as a bearer token in the Authorization header.

Authorization: Bearer nk-xxxxxxxxxxxxxxxxx
Missing or invalid API keys return an authentication error. Manage keys from .

Step 2 of 3 · Send a request

POSThttps://api.nexscope.ai/fm/productSearch

Run an API

Send a JSON request body using the parameters described below.

Example request

Replace YOUR_API_KEY, then run this command in your terminal.

curl -X POST 'https://api.nexscope.ai/fm/productSearch' \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "keyword": "phone case",
  "orderField": "day7_units_sold",
  "pageSize": 10,
  "region": "US"
}'

Code example

{
  "keyword": "phone case",
  "orderField": "day7_units_sold",
  "pageSize": 10,
  "region": "US"
}

Step 3 of 3 · Inspect the result

Check the response

Read code for the request status and data for the result. Open the parameter and response reference for the full field definitions.

HTTP status codes

CodeDescription
200Default HTTP response for both success and many business errors. Only outer JSON code 0 indicates success or asynchronous acceptance; inspect data for the result.
429Execution admission rate limit; honor Retry-After when present.
503Execution admission is temporarily unavailable; honor Retry-After when present.
Opt-inX-Nexscope-Http-Status: semantic maps controller-handled business errors to HTTP status on run and task routes. Pre-authentication failures, such as a missing API key (code 11209), may still return HTTP 200 before this mapping. Always check the outer JSON code; malformed requests and infrastructure failures may also return non-200 HTTP responses.
All categories/ TikTok Intelligence FM
POSThttps://api.nexscope.ai/fm/productSearch

Run this API

Send a JSON request to execute this API and receive the documented response payload.

Endpoint

MethodPOST
Pathhttps://api.nexscope.ai/fm/productSearch
AuthBearer API key
Content-Typeapplication/json

Request parameters

NameTypeRequiredDescription
keywordstringoptional
Search keywords (fuzzy matching of product titles).
regionstringoptional
Market area code. Optional values: `US` (United States), `GB` (UK), `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).
categorystringoptional
For English category names, the system automatically matches the TikTok category ID; non-English names need to be translated into English first.
shopTypeintegeroptional
Store type: `1`=local store, `2`=cross-border store.
isTopSellingbooleanoptional
Filter only the best-selling items.
isNewListedbooleanoptional
Only filter new listings.
isSshopbooleanoptional
Filter only TikTok fully hosted (S-shop) items.
isFreeShippingbooleanoptional
Filter only free shipping products.
isLocalWarehousebooleanoptional
Only filter products shipped from local warehouses.
unitsSoldRangeobjectoptional
Sales range filtering, format: `{"min": 100, "max": 5000}`.
commissionRateRangeobjectoptional
Commission rate range filtering, format: `{"min": 0.05, "max": 0.20}` (decimal, `0.10`=10%).
creatorCountRangeobjectoptional
Filter the number of people carrying goods, format: `{"min": 10, "max": 500}`.
orderFieldstringoptional
Sorting fields: `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` (number of customers). Default is descending order.
pageintegeroptional
Page number.
Example: 1
pageSizeintegeroptional
Number of items per page, maximum `10`.
Example: 10

Response example

Platform response envelope. code 0 indicates success or acceptance; data contains the business result.

No response example is published for this API. Refer to the response fields below.

Response fields

Response field reference (38 fields)

NameTypeRequiredDescription
totalintegeroptional
The total number of records that meet the criteria.
productsarrayoptional
Product information list, product object fields are shown in the table below.
columnsarrayoptional
Render column definitions.
typestringoptional
Rendering style type.
costTokenintegeroptional
The number of tokens consumed.
titlestringoptional
Product title
productIdstringoptional
Product unique identification ID.
regionstringoptional
Market area code.
pricenumberoptional
Product price.
minPricenumberoptional
lowest price.
maxPricenumberoptional
Highest price.
currencystringoptional
Currency code.
totalSaleCntintegeroptional
Cumulative total sales.
totalSale1dCntintegeroptional
1 day sales.
totalSale7dCntintegeroptional
7 day sales.
totalSale28dCntintegeroptional
28 days sales.
totalSale90dCntintegeroptional
90 Day Sales.
totalSaleGmvAmtnumberoptional
Cumulative total GMV.
totalSaleGmv7dAmtnumberoptional
7 days GMV.
totalSaleGmv28dAmtnumberoptional
28 days GMV.
totalVideoCntintegeroptional
Number of videos with goods.
totalLiveCntintegeroptional
Number of goods delivered live.
totalIflCntintegeroptional
Bring the number of people with goods.
productCommissionRatenumberoptional
Product commission ratio (decimal, `0.10`=10%).
productRatingnumberoptional
Rating
reviewCountintegeroptional
Number of comments.
skuCountintegeroptional
SKU quantity.
shopNamestringoptional
Store name.
shopSellerIdstringoptional
Seller ID.
shopTotalUnitsSoldintegeroptional
The total sales volume of the store.
isCrossBorderintegeroptional
Whether it is cross-border: `1`=cross-border, `0`=local.
isSShopTextstringoptional
Whether to fully host the store (yes/no).
freeShippingTextstringoptional
Whether shipping is free (yes/no).
availableDatestringoptional
Shelf time.
categoryNamestringoptional
Product category name.
salesTrendFlagTextstringoptional
Sales trend tag.
tiktokUrlstringoptional
TikTok merchandise link.
imageUrlstringoptional
Product image URL.

Responses

CodeDescription
200Default HTTP response for both success and many business errors. Only outer JSON code 0 indicates success or asynchronous acceptance; inspect data for the result.
429Execution admission rate limit; honor Retry-After when present.
503Execution admission is temporarily unavailable; honor Retry-After when present.
Opt-inX-Nexscope-Http-Status: semantic maps controller-handled business errors to HTTP status on run and task routes. Pre-authentication failures, such as a missing API key (code 11209), may still return HTTP 200 before this mapping. Always check the outer JSON code; malformed requests and infrastructure failures may also return non-200 HTTP responses.

Data source, freshness, and limitations

Source, freshness, coverage, rate limits, and estimation notes are not specified in this API definition unless they appear in the request or response field documentation above. Do not assume official marketplace data or real-time freshness when it is not explicitly documented.

Step 1 of 2 · Connect your MCP client

MCP

V2 recommended

Connect remote agents through the standard MCP 2025-11-25 Streamable HTTP endpoint. Use OAuth 2.1 Authorization Code with PKCE, or an API key for compatibility.

POST https://api.nexscope.ai/mcp
MCP-Protocol-Version: 2025-11-25
Content-Type: application/json
Authentication

OAuth clients request the mcp:tools scope. The endpoint's 401 response advertises protected-resource metadata for authorization discovery.

Step 2 of 2 · Call the tool

Call a tool

{
  "jsonrpc": "2.0",
  "id": "tool-call-1",
  "method": "tools/call",
  "params": {
    "name": "nexscope_tiktok_product_discovery",
    "arguments": {
      "keyword": "phone case",
      "page": 1,
      "pageSize": 10,
      "region": "US"
    }
  }
}

Legacy MCP v1

Existing API-key clients can continue using the compatibility endpoint. New integrations should use MCP v2.

GET / POST /mcp/legacy

Data Example

Request parameters

{
  "region": "US",
  "category": "Women's Suits & Overalls",
  "orderField": "day7_units_sold",
  "page": 2,
  "pageSize": 10
}

Response

{
  "code": 0,
  "msg": null,
  "data": {
    "total": 0,
    "costTime": 65,
    "columns": [
      {
        "filterable": true,
        "cellType": "text",
        "field": "title",
        "sortable": true,
        "title": "商品名称"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "imageUrl",
        "sortable": true,
        "title": "商品图片URL"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "price",
        "sortable": true,
        "title": "商品价格"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "productId",
        "sortable": true,
        "title": "TikTok产品ID"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "availableDate",
        "sortable": true,
        "title": "上架时间"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "region",
        "sortable": true,
        "title": "区域代码"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "productRating",
        "sortable": true,
        "title": "商品评分"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "productCommissionRate",
        "sortable": true,
        "title": "商品佣金比例"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "categoryIds",
        "sortable": true,
        "title": "商品品类ID列表"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "categoryName",
        "sortable": true,
        "title": "商品品类名称路径"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "coverUrl",
        "sortable": true,
        "title": "图片URL列表"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "currency",
        "sortable": true,
        "title": "货币符号"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "minPrice",
        "sortable": true,
        "title": "最低价格"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "maxPrice",
        "sortable": true,
        "title": "最高价格"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalSaleCnt",
        "sortable": true,
        "title": "总销量"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalSaleGmvAmt",
        "sortable": true,
        "title": "总销售额"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalSale1dCnt",
        "sortable": true,
        "title": "1天内总销量"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalSale7dCnt",
        "sortable": true,
        "title": "7天内总销量"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalSale28dCnt",
        "sortable": true,
        "title": "28天内总销量)"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalSale90dCnt",
        "sortable": true,
        "title": "90天内总销量"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalSaleGmv7dAmt",
        "sortable": true,
        "title": "7天内总销售额"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalSaleGmv28dAmt",
        "sortable": true,
        "title": "28天内总销售额"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalVideoCnt",
        "sortable": true,
        "title": "关联视频数"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalIflCnt",
        "sortable": true,
        "title": "关联达人数"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "totalLiveCnt",
        "sortable": true,
        "title": "关联直播数"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "reviewCount",
        "sortable": true,
        "title": "评论总数"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "salesTrendFlagText",
        "sortable": true,
        "title": "销售趋势标记"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "freeShippingText",
        "sortable": true,
        "title": "是否包邮"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "isSShopText",
        "sortable": true,
        "title": "是否全托管商品"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "sourceType",
        "sortable": true,
        "title": "商品来源"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "sourceTool",
        "sortable": true,
        "title": "来源工具"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "source",
        "sortable": true,
        "title": "商品来源标识"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "isCrossBorder",
        "sortable": true,
        "title": "是否跨境"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "skuCount",
        "sortable": true,
        "title": "SKU数量"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "tiktokUrl",
        "sortable": true,
        "title": "TikTok商品链接"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "fastmossUrl",
        "sortable": true,
        "title": "FastMoss商品链接"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "shopSellerId",
        "sortable": true,
        "title": "店铺ID"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "shopName",
        "sortable": true,
        "title": "店铺名称"
      },
      {
        "filterable": true,
        "cellType": "text",
        "field": "shopAvatar",
        "sortable": true,
        "title": "店铺头像URL"
      },
      {
        "filterable": true,
        "cellType": "number",
        "field": "shopTotalUnitsSold",
        "sortable": true,
        "title": "店铺总销量"
      }
    ],
    "pageSize": 10,
    "page": 2,
    "matchedCategoryIdPath": "31->857616->861968",
    "type": "productWorkbenches",
    "matchedCategoryNamePath": "Pre-Owned->Womenswear->Women's Suits & Overalls",
    "products": []
  }
}

Online test

Execute the current API with your API key and JSON payload. Online tests use this site's configured API environment; the Endpoint and copyable examples use the public integration address.

Recent Avg. 22 · Range 11–22 credits / callAPI usage records

Try it

Send a real request with the same contract shown in the reference.

Endpoint
/fm/productSearch
MCP method
nexscope_tiktok_product_discovery
cURL
curl -X POST \
  https://api.nexscope.ai/fm/productSearch \
  -H "Authorization: Bearer nk-..." \
  -H "Content-Type: application/json" \
  -d '{ "keyword": "phone case", "orderField": "day7_units_sold", "pageSize": 10, "region": "US" }'
Response
No response yet. Run the request to see the response here.

Related APIs