Amazon Marketplace Intelligence
Amazon Opportunity Search By Metrics MCP Tool
Amazon reverse product selection: filter Amazon niches and keywords by 30+ business dimensions (market size & growth, price tiers & share, competition density & top concentration, demographics such as age/gender/income, review highlights & pain points) from a metrics pool aggregated from historical business insight reports.
MCP tool name
nexscope_amazon_opportunity_search_by_metricsLegacy MCP endpoint
/api/skill-api/v1/mcpJSON-RPC method
tools/callAuthentication
Send the user API key as a bearer token on every MCP JSON-RPC request.
Authorization: Bearer nk-xxxxxxxxxxxxxxxxxIf authentication is missing or invalid, ask the user to open API Access and copy a valid key before calling this tool.
Call this MCP tool
Use tools/call with the MCP tool name below. The arguments object should match the table on this page.
{
"jsonrpc": "2.0",
"id": "amazon-opportunity-search-by-metrics-1",
"method": "tools/call",
"params": {
"name": "nexscope_amazon_opportunity_search_by_metrics",
"arguments": {
"amazonDomain": "US",
"keyword": "phone case",
"limit": 10
}
}
}Legacy endpoint
POST /api/skill-api/v1/mcpCanonical detail URL
https://www.nexscope.ai/mcp-map/amazon-opportunity-search-by-metricsArguments
| Name | Type | Required | Meaning |
|---|---|---|---|
amazonDomain | string | optional | Amazon site code (closed enum), currently only supports US. Defaults to US only if not specified Example: {} |
limit | integer | optional | Maximum number of results to return (1-200), default 25. No page parameter; returns the most recent N records sorted by collection time descending Example: 1 |
keyword | string | optional | Search keyword text fragment (LIKE fuzzy match) Example: phone case |
nicheName | string | optional | Normalized niche name fragment (LIKE, snake_case lowercase), suitable for niche time-series comparison Example: {} |
nicheRevenue360dMinUsdAtLeastGte | number | optional | Minimum 360-day market revenue lower bound (USD) Example: 1 |
nicheRevenue360dMinUsdAtLeastLte | number | optional | Maximum 360-day market revenue lower bound (USD) Example: 1 |
nicheRevenue360dMaxUsdAtLeastGte | number | optional | Minimum 360-day market revenue upper bound (USD) Example: 1 |
nicheRevenue360dMaxUsdAtLeastLte | number | optional | Maximum 360-day market revenue upper bound (USD) Example: 1 |
nichePeakSearchVolumeAtLeastGte | integer | optional | Peak monthly search volume minimum (non-negative integer) Example: 1 |
nichePeakSearchVolumeAtLeastLte | integer | optional | Peak monthly search volume maximum (non-negative integer) Example: 1 |
nicheSearchVolumeYoyChangePctAtLeastGte | number | optional | Search volume YoY change rate minimum (%, signed) Example: 1 |
nicheSearchVolumeYoyChangePctAtLeastLte | number | optional | Search volume YoY change rate maximum (%, signed) Example: 1 |
nichePeakMonthGte | integer | optional | Search peak month minimum (1-12) Example: 1 |
nichePeakMonthLte | integer | optional | Search peak month maximum (1-12) Example: 1 |
nicheBrandCountGte | integer | optional | Active brand count minimum Example: 1 |
nicheBrandCountLte | integer | optional | Active brand count maximum Example: 1 |
nicheBrandCountYoyChangePctAtLeastGte | number | optional | Brand count YoY change rate minimum (%, signed) Example: 1 |
nicheBrandCountYoyChangePctAtLeastLte | number | optional | Brand count YoY change rate maximum (%, signed) Example: 1 |
nicheTop5ProductClickSharePctAtLeastGte | number | optional | Top 5 product click share minimum (0-100) Example: 1 |
nicheTop5ProductClickSharePctAtLeastLte | number | optional | Top 5 product click share maximum (0-100) Example: 1 |
featureTop5BrandSharePctAtLeastGte | number | optional | Top 5 brand combined share minimum (0-100) Example: 1 |
featureTop5BrandSharePctAtLeastLte | number | optional | Top 5 brand combined share maximum (0-100) Example: 1 |
featureTopBrandsContains | string | optional | Top 3 brand name fragment (original text LIKE, case-sensitive) Example: {} |
priceMinUsdGte | number | optional | Niche minimum product price lower bound (USD) Example: 1 |
priceMinUsdLte | number | optional | Niche minimum product price upper bound (USD) Example: 1 |
priceMaxUsdGte | number | optional | Niche maximum product price lower bound (USD) Example: 1 |
priceMaxUsdLte | number | optional | Niche maximum product price upper bound (USD) Example: 1 |
priceSweetSpotMinUsdGte | number | optional | Sweet spot lower bound minimum (USD) Example: 1 |
priceSweetSpotMinUsdLte | number | optional | Sweet spot lower bound maximum (USD) Example: 1 |
priceSweetSpotMaxUsdGte | number | optional | Sweet spot upper bound minimum (USD) Example: 1 |
priceSweetSpotMaxUsdLte | number | optional | Sweet spot upper bound maximum (USD) Example: 1 |
priceEntryClickSharePctAtLeastGte | number | optional | Entry tier click share minimum (0-100) Example: 1 |
priceEntryClickSharePctAtLeastLte | number | optional | Entry tier click share maximum (0-100) Example: 1 |
priceMidClickSharePctAtLeastGte | number | optional | Mid tier click share minimum (0-100) Example: 1 |
priceMidClickSharePctAtLeastLte | number | optional | Mid tier click share maximum (0-100) Example: 1 |
priceHighClickSharePctAtLeastGte | number | optional | High tier click share minimum (0-100) Example: 1 |
priceHighClickSharePctAtLeastLte | number | optional | High tier click share maximum (0-100) Example: 1 |
demoPrimaryAgeMinGte | integer | optional | Primary audience age lower bound minimum (0-120 years) Example: 1 |
demoPrimaryAgeMinLte | integer | optional | Primary audience age lower bound maximum (0-120 years) Example: 1 |
demoPrimaryAgeMaxGte | integer | optional | Primary audience age upper bound minimum (0-120 years) Example: 1 |
demoPrimaryAgeMaxLte | integer | optional | Primary audience age upper bound maximum (0-120 years) Example: 1 |
demoGenderDominant | string | optional | Dominant gender (closed enum): female / male / mixed / unspecified Example: {} |
demoPrimaryIncomeTier | string | optional | Income tier (closed enum): low / middle_low / middle / middle_upper / upper_middle / high Example: {} |
demoLifeStageTagsContains | string | optional | Life stage tag fragment (snake_case, LIKE): parent, student, retiree, athlete, etc. Example: {} |
featureNewAvgReviewCountAtLeastGte | integer | optional | New product average review count minimum (non-negative integer) Example: 1 |
featureNewAvgReviewCountAtLeastLte | integer | optional | New product average review count maximum (non-negative integer) Example: 1 |
featureEstablishedAvgReviewCountAtLeastGte | integer | optional | Established product average review count minimum (non-negative integer) Example: 1 |
featureEstablishedAvgReviewCountAtLeastLte | integer | optional | Established product average review count maximum (non-negative integer) Example: 1 |
featureEmergingTrendTagsContains | string | optional | Emerging trend feature tag fragment (snake_case, LIKE): cordless, portable, smart, etc. Example: {} |
featureUncommonFeatureTagsContains | string | optional | Rare differentiation feature tag fragment (snake_case, LIKE): hema_free, medical_grade_silicone, etc. Example: {} |
searchTopCategory1Label | string | optional | Search traffic top category 1 label fragment (snake_case, LIKE): core_product_terms, set_kit_configurations, etc. Example: {} |
reviewPositiveTop1Topic | string | optional | Positive review #1 topic fragment (snake_case, LIKE): comfort, quality_overall_generic, etc. Example: {} |
reviewPositiveTop1PctAtLeastGte | number | optional | Positive review #1 topic share minimum (0-100, share among positive reviews) Example: 1 |
reviewPositiveTop1PctAtLeastLte | number | optional | Positive review #1 topic share maximum (0-100) Example: 1 |
reviewNegativeTop1Topic | string | optional | Negative review #1 topic fragment (snake_case, LIKE): size, quality, durability, etc. Example: {} |
reviewNegativeTop1PctAtLeastGte | number | optional | Negative review #1 topic share minimum (0-100, share among negative reviews) Example: 1 |
reviewNegativeTop1PctAtLeastLte | number | optional | Negative review #1 topic share maximum (0-100) Example: 1 |
reviewNegativeTop2Topic | string | optional | Negative review #2 topic fragment (snake_case, LIKE) Example: {} |
reviewStrategicInsightTagsContains | string | optional | Review strategic insight tag fragment (snake_case, LIKE): sizing_clarity, material_transparency, etc. Example: {} |
Response fields
Treat structuredContent as the programmatic API response payload.
| Name | Type | Required | Description |
|---|---|---|---|
data | any | required | Data value used by this API operation. |
code | integer | required | 0 means accepted or successful; nonzero is a platform error. |
msg | string | null | required | Msg value used by this API operation. |
ts | string | required | Epoch milliseconds. |
time | string | required | Server local time: yyyy-MM-dd HH:mm:ss. |
cost | string | required | Elapsed milliseconds, never credits; -1 outside web requests. |
traceId | string | null | required | Trace id value used by this API operation. |
Any of option 1
| Name | Type | Required | Description |
|---|---|---|---|
data | object | required | Data value used by this API operation. |
data.data | array | optional | Array of keyword metric records, each corresponding to a (site, keyword) combination, approximately 37 fields, sorted by collection time descending Example: [] |
data.data[].amazonDomain | string | optional | Site code (currently fixed US) Example: null |
data.keyword | string | optional | Original search keyword Example: phone case |
data.data[].nicheName | string | optional | Normalized niche name (snake_case) Example: null |
data.nicheRevenue360dMinUsdAtLeast/nicheRevenue360dMaxUsdAtLeast | number | optional | Last 360 days market revenue lower bound / upper bound (USD) Example: 1 |
data.nichePeakSearchVolumeAtLeast | integer | optional | Peak monthly search volume Example: 1 |
data.nichePeakMonth | integer | optional | Search peak month (1-12) Example: 1 |
data.nicheSearchVolumeYoyChangePctAtLeast | number | optional | Search volume YoY change rate (%, signed) Example: 1 |
data.nicheBrandCount/nicheBrandCountYoyChangePctAtLeast | integer | optional | Active brand count and its YoY change rate Example: 1 |
data.nicheTop5ProductClickSharePctAtLeast | number | optional | Top 5 product click share (0-100) Example: 1 |
data.featureTop5BrandSharePctAtLeast | number | optional | Top 5 brand combined share (0-100) Example: 1 |
data.featureTopBrands | array | optional | Top 3 brand name list (original text) Example: [] |
data.priceMinUsd/priceMaxUsd | number | optional | Niche overall minimum / maximum product price Example: 1 |
data.priceSweetSpotMinUsd/priceSweetSpotMaxUsd | number | optional | Value sweet spot price range lower bound / upper bound Example: 1 |
data.priceEntryClickSharePctAtLeast/priceMidClickSharePctAtLeast/priceHighClickSharePctAtLeast | number | optional | Entry / Mid / High tier click share (0-100) Example: 1 |
data.demoPrimaryAgeMin/demoPrimaryAgeMax | integer | optional | Core audience age lower bound / upper bound Example: 1 |
data.data[].demoGenderDominant | string | optional | Dominant gender (female / male / mixed / unspecified) Example: null |
data.data[].demoPrimaryIncomeTier | string | optional | Core audience income tier Example: null |
data.demoLifeStageTags | array | optional | Life stage tag list Example: [] |
data.featureNewAvgReviewCountAtLeast/featureEstablishedAvgReviewCountAtLeast | integer | optional | New / Established product average review count Example: 1 |
data.featureEmergingTrendTags/featureUncommonFeatureTags | array | optional | Emerging trend / Rare differentiation feature tags Example: [] |
data.data[].searchTopCategory1Label | string | optional | Traffic top category 1 normalized label Example: null |
data.reviewPositiveTop1Topic/reviewPositiveTop1PctAtLeast | number | optional | Positive review #1 topic and its share among positive reviews Example: 1 |
data.reviewNegativeTop1Topic/reviewNegativeTop1PctAtLeast/reviewNegativeTop2Topic | number | optional | Negative review #1 topic, share, and secondary cause Example: 1 |
data.reviewStrategicInsightTags | array | optional | Review strategic insight tags Example: [] |
data.type | string | optional | Provider-specific render or payload type. Example: null |
data.title | string | optional | Provider-specific response title. Example: null |
data.sourceType | string | optional | Provider-specific source platform type. Example: null |
data.sourceTool | string | optional | Provider-specific source tool name. Example: null |
data.costToken | integer | optional | Token cost reported by the upstream provider. Example: null |
data.costTime | integer | optional | Execution time reported by the upstream provider. Example: null |
data.page | integer | optional | Current page returned by the upstream provider. Example: null |
data.pageSize | integer | optional | Page size returned by the upstream provider. Example: null |
data.pageItemCount | integer | optional | Item count on the current page returned by the upstream provider. Example: null |
data.totalPage | integer | optional | Total page count returned by the upstream provider. Example: null |
data.dataSnapshotMonth | string | optional | Data snapshot month returned by the upstream provider. Example: null |
Any of option 2
| Name | Type | Required | Description |
|---|---|---|---|
data | null | required | Data value used by this API operation. |
Examples
Example arguments
{
"amazonDomain": "US",
"keyword": "phone case",
"limit": 10
}Example structuredContent
{
"data": {
"data": [],
"keyword": "phone case",
"nicheRevenue360dMinUsdAtLeast/nicheRevenue360dMaxUsdAtLeast": 1,
"nichePeakSearchVolumeAtLeast": 1,
"nichePeakMonth": 1,
"nicheSearchVolumeYoyChangePctAtLeast": 1,
"nicheBrandCount/nicheBrandCountYoyChangePctAtLeast": 1,
"nicheTop5ProductClickSharePctAtLeast": 1,
"featureTop5BrandSharePctAtLeast": 1,
"featureTopBrands": [],
"priceMinUsd/priceMaxUsd": 1,
"priceSweetSpotMinUsd/priceSweetSpotMaxUsd": 1,
"priceEntryClickSharePctAtLeast/priceMidClickSharePctAtLeast/priceHighClickSharePctAtLeast": 1,
"demoPrimaryAgeMin/demoPrimaryAgeMax": 1,
"demoLifeStageTags": [],
"featureNewAvgReviewCountAtLeast/featureEstablishedAvgReviewCountAtLeast": 1,
"featureEmergingTrendTags/featureUncommonFeatureTags": [],
"reviewPositiveTop1Topic/reviewPositiveTop1PctAtLeast": 1,
"reviewNegativeTop1Topic/reviewNegativeTop1PctAtLeast/reviewNegativeTop2Topic": 1,
"reviewStrategicInsightTags": []
},
"code": 0,
"msg": null,
"ts": "0",
"time": "2026-01-01 00:00:00",
"cost": "-1",
"traceId": null
}