Walmart Intelligence ST
Walmart Keyword Research
Research Walmart keywords and the products associated with them. Call the Walmart Keyword Research API via REST or MCP in your app or AI agent.
MCP tool name
nexscope_walmart_keyword_researchMCP 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": "walmart-keyword-research-1",
"method": "tools/call",
"params": {
"name": "nexscope_walmart_keyword_research",
"arguments": {
"name": "wireless earbuds",
"operation": "searchByName",
"pageIndex": 1
}
}
}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
operation: marketQuery
| Name | Type | Required | Description |
|---|---|---|---|
operation | string | required | Walmart keyword research operation Constant: marketQuery |
pageIndex | integer | optional | Page number, starting at 1 Default: 1 Minimum: 1 |
pageSize | integer | optional | Page size from 20 to 200 Default: 20 Minimum: 20 Maximum: 200 |
pattern | object | optional | Optional marketQuery filter object |
pattern.keyword | string | optional | Keyword filter inside pattern Minimum length: 1 |
pattern.rankCondition | array | optional | One- or two-value rank range Minimum items: 1 Maximum items: 2 |
pattern.rankCondition[] | integer | required | One- or two-value rank range Minimum: 0 |
pattern.searchVolumeCondition | array | optional | One- or two-value search-volume range Minimum items: 1 Maximum items: 2 |
pattern.searchVolumeCondition[] | integer | required | One- or two-value search-volume range Minimum: 0 |
operation: searchByName
| Name | Type | Required | Description |
|---|---|---|---|
name | string | required | Keyword name required by searchByName Minimum length: 1 |
operation | string | required | Walmart keyword research operation Constant: searchByName |
pageIndex | integer | optional | Page number, starting at 1 Default: 1 Minimum: 1 |
operation: searchProducts
| Name | Type | Required | Description |
|---|---|---|---|
keyword | string | required | Keyword required by searchProducts, detail, or relatedKeywords Minimum length: 1 |
operation | string | required | Walmart keyword research operation Constant: searchProducts |
pageIndex | integer | optional | Page number, starting at 1 Default: 1 Minimum: 1 |
pageSize | integer | optional | Page size from 20 to 200 Default: 20 Minimum: 20 Maximum: 200 |
operation: detail
| Name | Type | Required | Description |
|---|---|---|---|
keyword | string | required | Keyword required by searchProducts, detail, or relatedKeywords Minimum length: 1 |
operation | string | required | Walmart keyword research operation Constant: detail |
operation: productKeywords
| Name | Type | Required | Description |
|---|---|---|---|
operation | string | required | Walmart keyword research operation Constant: productKeywords |
pageIndex | integer | optional | Page number, starting at 1 Default: 1 Minimum: 1 |
pageSize | integer | optional | Page size from 20 to 200 Default: 20 Minimum: 20 Maximum: 200 |
productId | string | required | Product ID required by productKeywords Minimum length: 1 |
operation: relatedKeywords
| Name | Type | Required | Description |
|---|---|---|---|
keyword | string | required | Keyword required by searchProducts, detail, or relatedKeywords Minimum length: 1 |
operation | string | required | Walmart keyword research operation Constant: relatedKeywords |
pageIndex | integer | optional | Page number, starting at 1 Default: 1 Minimum: 1 |
pageSize | integer | optional | Page size from 20 to 200 Default: 20 Minimum: 20 Maximum: 200 |
operation: favoriteList
| Name | Type | Required | Description |
|---|---|---|---|
command | any | required | Read-only favoriteList command: all, dict, or dict=<value> |
operation | string | required | Walmart keyword research operation Constant: favoriteList |
pageIndex | integer | optional | Page number, starting at 1 Default: 1 Minimum: 1 |
One of option 1
| Name | Type | Required | Description |
|---|---|---|---|
command | any | required | Read-only favoriteList command: all, dict, or dict=<value> Allowed: all, dict |
One of option 2
| Name | Type | Required | Description |
|---|---|---|---|
command | string | required | Read-only favoriteList command: all, dict, or dict=<value> Pattern: ^dict=.+$ |
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Description |
|---|---|---|---|
errcode | integer | optional | Gateway framework layer status code; `200` indicates that the request successfully entered the business response Example: {} |
errmsg | string | optional | Gateway framework layer status message; typically `ok` on success Example: {} |
code | integer | optional | `200` indicates success Example: {} |
msg | string | optional | Response message; when there is no data, it may be "query successful, but no data" Example: {} |
data | object | optional | Fixed response container; actual business results are in `data.value` Example: {} |
operation | string | optional | The actual operation performed this time Example: {} |
requestConsumed | integer | optional | This upstream consumption; when the upstream is missing or returns 0, it is completed according to the document consumption of the operation; when ST explicitly returns `Code=11`, it remains 0 Example: {} |
costTime | integer | optional | Time taken, unit is milliseconds Example: {} |
costToken | integer / absent | optional | Production gateway response header `X-Cost-Token`; the entry script will be copied to this field, and this field is currently missing when parsing the JSON body directly. Example: {} |
costCredit | integer / absent | optional | Production gateway response header `X-Cost-Credit`, which is the actual computing power deducted this time; the entry script will be copied to this field Example: {} |
sourceType | string | optional | `st` Example: {} |
marketQuery | array<object> | optional | keyword summary array Example: {} |
searchByName | array<object> | optional | Keyword summary array related to product or category name Example: {} |
searchProducts | array<object> | optional | Product summary array in search results for the keyword in the past 15 days Example: {} |
detail | object | optional | Single keyword summary object Example: {} |
productKeywords | array<object> | optional | Records of the keywords that the product has been exposed on the first three pages of search results in the past 30 days Example: {} |
relatedKeywords | array<object> | optional | Related keyword summary array Example: {} |
favoriteAdd | integer | optional | Favorite result code Example: {} |
favoriteChange | integer | optional | Delete or move result codes Example: {} |
favoriteList | array<string> | optional | Array of keywords or directory names, the specific content is determined by `command` Example: {} |
Keyword | string | optional | keywords Example: {} |
KeywordCNName | string | optional | Keyword Chinese name Example: {} |
Images | array<string> | optional | Keyword search results Top 10 product image URL Example: {} |
Update | string | optional | Keyword last updated time, usually `yyyyMMdd` Example: {} |
Rank | integer | optional | Weekly search ranking Example: {} |
SearchVolume | number | optional | Last 30 days search volume; may be transmitted by upstream as a JSON number with decimals Example: {} |
ProductCount | integer | optional | Number of competing products displayed on Walmart search page Example: {} |
SearchFirstPageAvgPrice | integer | optional | The average price of natural products on the first page of search results; the unit on the US site is cents Example: {} |
SearchFirstPageAvgReviews | number | optional | Average number of reviews for natural products on the first page of search results Example: {} |
SearchFirstPageAvgStar | number | optional | Average rating of natural products on the first page of search results Example: {} |
ShowShare | number | optional | The proportion of exposure traffic this keyword brings to the product Example: {} |
RecentlyPosition | string | optional | The most recently exposed position, such as `1,2/18` means page 1, position 2, 18 positions in total Example: {} |
OrganicPosition | string | optional | The most recent natural exposure position, the encoding is the same as `RecentlyPosition` Example: {} |
AdPosition | string | optional | The most recent ad exposure position, coded the same as `RecentlyPosition` Example: {} |
Keyword | object | optional | Complete keyword summary object; see "Keyword Summary Field" for fields Example: {} |
Title | string | optional | Product title Example: {} |
Photo | array<string> | optional | Product image URL array Example: {} |
ListingSalesVolumeOfMonth | integer | optional | Estimated sales volume in the last 30 days in the Listing dimension, without distinguishing between variants Example: {} |
ListingSalesOfMonth | integer | optional | Estimated sales in the past 30 days in the Listing dimension; the unit for the US site is cents Example: {} |
ProductId | string | optional | Walmart ProductId Example: {} |
ParentProductId | string | optional | Parent product ProductId Example: {} |
Price | integer | optional | Selling price; the US site unit is cents, such as `1999` means `$19.99` Example: {} |
Brand | string | optional | brand Example: {} |
Seller | string | optional | Seller name at the time of collection Example: {} |
Shipedby | string | optional | The delivery method at the time of collection; the field name is the original spelling of the upstream Example: {} |
WFSFee | integer | optional | WFS fee; US site unit is cents Example: {} |
Attribute | array<string> / null | optional | Product attributes, interleaved encoding according to `[attribute name, attribute value, ...]` Example: {} |
FirstReviewsDate | string / null | optional | Date of first comment in the format `yyyy-MM-dd` Example: {} |
ReviewsCount | integer | optional | Number of comments Example: {} |
Ratings | number | optional | Rating, like `4.8` Example: {} |
NodePath | array<string\|null> | optional | Category and ranking records are grouped and coded according to `[category name, NodeId, ranking date, ranking, ...]`; when the ranking on a certain day is missing, the corresponding position is `null` Example: {} |
Label | array<string> | optional | Product tags, such as `pickup`, `savewith`, `bestsell` Example: {} |
PopularPick | integer | optional | Popular Pick tag; `1` indicates existence Example: {} |
Clearance | integer | optional | Clearance tag; `1` indicates existence Example: {} |
ReducedPrice | integer | optional | Reduced Price tag; `1` indicates existence Example: {} |
Rollback | integer | optional | Rollback token; `1` indicates existence Example: {} |
FlashDeal | integer | optional | Flash Deal tag; `1` indicates existence Example: {} |
Size | array<string> / null | optional | Outer packaging size `[longest side, second longest side, shortest side]`, unit is cm Example: {} |
Weight | number | optional | Product weight in grams Example: {} |
Variants | array<object> / null | optional | Variation list, fields are shown in the table below Example: {} |
NumberOfStar | array<number\|string> / null | optional | The number of reviews for each star rating, according to `[star rating, number of reviews, ...]` staggered coding Example: {} |
VariantId | string | optional | Variant ProductId Example: {} |
Url | string | optional | Variant product URL Example: {} |
Property | array<string> | optional | Variant attributes, encoded by `[attribute name, attribute value, ...]` Example: {} |
PriceUpdate | string / null | optional | Price update time, usually `yyyy-MM-dd` Example: {} |
DetailUpdate | string / null | optional | Details update time, usually `yyyy-MM-dd`; when there is no valid date, upstream placeholders such as `--` may be used Example: {} |
operation | `data.value` | optional | Description Example: {} |
favoriteAdd | `0` | optional | Collection successful Example: {} |
favoriteAdd | `1` | optional | Keyword already exists Example: {} |
favoriteAdd | `9` | optional | Collection failed Example: {} |
favoriteChange | `0` | optional | Delete or move successfully Example: {} |
favoriteChange | `9` | optional | Keyword does not exist Example: {} |
favoriteList | array<string> | optional | `dict` returns the directory name; `all` or `dict=<directory>` returns the keyword Example: {} |
Examples
Example arguments
{
"name": "wireless earbuds",
"operation": "searchByName",
"pageIndex": 1
}Example structuredContent
{
"code": 0,
"cost": "-1",
"data": {},
"msg": null,
"time": "2026-01-01 00:00:00",
"traceId": null,
"ts": "0"
}