Amazon ABA & Business Insights
Amazon Opportunity Search By Metrics
Filter Amazon niches and keywords using 30+ business metrics covering market size, growth, competition, pricing, demographics. Available via REST API or MCP.
MCP tool name
nexscope_amazon_opportunity_search_by_metricsMCP 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": "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
}
}
}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 |
|---|---|---|---|
amazonDomain | string | optional | Amazon site code (closed enum), currently only supports US. Defaults to US only if not specified Example: US |
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: 25 |
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 |
|---|---|---|---|
code | string | optional | Response code, `200` is successful. Example: {} |
msg | string | optional | Prompt information, success is `ok`, failure is error description. Example: {} |
data | array | optional | Keyword indicator record array, each corresponding to a (site, keyword) combination, about 37 fields, in reverse order of collection time. Example: {} |
amazonDomain | string | optional | Site code, currently fixed to `US`. Example: {} |
keyword | string | optional | Original search keyword. Example: {} |
nicheName | string | optional | Track normalized name (snake_case). Example: {} |
nichePeakSearchVolumeAtLeast | integer | optional | Peak monthly search volume. Example: {} |
nichePeakMonth | integer | optional | Peak search months (1-12). Example: {} |
nicheSearchVolumeYoyChangePctAtLeast | number | optional | Search volume year-over-year change rate (%, signed). Example: {} |
nicheTop5ProductClickSharePctAtLeast | number | optional | Top5 product click share (0-100). Example: {} |
featureTop5BrandSharePctAtLeast | number | optional | Total share of top 5 brands (0-100). Example: {} |
featureTopBrands | array | optional | Top3 brand name list (original text). Example: {} |
demoGenderDominant | string | optional | Gender Dominant (`female` / `male` / `mixed` / `unspecified`). Example: {} |
demoPrimaryIncomeTier | string | optional | Income bracket of the core population. Example: {} |
demoLifeStageTags | array | optional | List of life stage tags. Example: {} |
searchTopCategory1Label | string | optional | Normalized label of the first category of traffic. Example: {} |
reviewStrategicInsightTags | array | optional | Comment policy suggestion tags. Example: {} |
Examples
Example arguments
{
"amazonDomain": "US",
"keyword": "phone case",
"limit": 10
}Example structuredContent
{}