Amazon Opportunity Search By Metrics
Filter Amazon niches and keywords using 30+ business metrics covering market size, growth, competition, pricing, demographics, and reviews.
Cost10 credits / call
POST ·
https://api.nexscope.ai/api/skill-api/v1/skills/amazon-opportunity-search-by-metrics/runMCP · nexscope_amazon_opportunity_search_by_metricsChoose an integration method
Amazon Marketplace Intelligence
What this API does
Filter Amazon niches and keywords using 30+ business metrics covering market size, growth, competition, pricing, demographics, and reviews.
Endpoint
https://api.nexscope.ai/api/skill-api/v1/skills/amazon-opportunity-search-by-metrics/runMCP method
nexscope_amazon_opportunity_search_by_metricsStep 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-xxxxxxxxxxxxxxxxxMissing or invalid API keys return an authentication error. Manage keys from .
Step 2 of 3 · Send a request
POST
https://api.nexscope.ai/api/skill-api/v1/skills/amazon-opportunity-search-by-metrics/runRun an API
Request parameters documented by ecommerce.amazon-opportunity-search-by-metrics.
Example request
Replace YOUR_API_KEY, then run this command in your terminal.
curl -X POST 'https://api.nexscope.ai/api/skill-api/v1/skills/amazon-opportunity-search-by-metrics/run' \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"limit": 10,
"keyword": "phone case",
"amazonDomain": "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
| Code | Description |
|---|---|
| 200 | HTTP request completed. Check JSON code; only 0 indicates business success or acceptance. |
| 400 | Request JSON or required API parameters are invalid. |
| 401 | API key is missing, invalid, or cannot be matched to a user. |
| 5xx | API execution or upstream service failed. |
All categories/ Amazon Marketplace Intelligence
POST
https://api.nexscope.ai/api/skill-api/v1/skills/amazon-opportunity-search-by-metrics/runRun this API
Send a JSON request to execute this API and receive the documented response payload.
Endpoint
| Method | POST |
| Path | https://api.nexscope.ai/api/skill-api/v1/skills/amazon-opportunity-search-by-metrics/run |
| Auth | Bearer API key |
| Content-Type | application/json |
Request parameters
| 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 |
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) |
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 |
demoPrimaryIncomeTier | string | optional | Income tier (closed enum): low / middle_low / middle / middle_upper / upper_middle / high |
demoLifeStageTagsContains | string | optional | Life stage tag fragment (snake_case, LIKE): parent, student, retiree, athlete, etc. |
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. |
featureUncommonFeatureTagsContains | string | optional | Rare differentiation feature tag fragment (snake_case, LIKE): hema_free, medical_grade_silicone, etc. |
searchTopCategory1Label | string | optional | Search traffic top category 1 label fragment (snake_case, LIKE): core_product_terms, set_kit_configurations, etc. |
reviewPositiveTop1Topic | string | optional | Positive review #1 topic fragment (snake_case, LIKE): comfort, quality_overall_generic, etc. |
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. |
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) |
reviewStrategicInsightTagsContains | string | optional | Review strategic insight tag fragment (snake_case, LIKE): sizing_clarity, material_transparency, etc. |
Code example
{
"limit": 10,
"keyword": "phone case",
"amazonDomain": "US"
}Response example
Platform response envelope. code 0 indicates success or acceptance; data contains the business result.
{
"data": {
"data": [
{
"keyword": "phone case",
"nicheRevenue360dMinUsdAtLeast": 1,
"nicheRevenue360dMaxUsdAtLeast": 1,
"nichePeakSearchVolumeAtLeast": 1,
"nichePeakMonth": 1,
"nicheSearchVolumeYoyChangePctAtLeast": 1,
"nicheBrandCount": 1,
"nicheBrandCountYoyChangePctAtLeast": 1,
"nicheTop5ProductClickSharePctAtLeast": 1,
"featureTop5BrandSharePctAtLeast": 1,
"featureTopBrands": [],
"priceMinUsd": 1,
"priceMaxUsd": 1,
"priceSweetSpotMinUsd": 1,
"priceSweetSpotMaxUsd": 1,
"priceEntryClickSharePctAtLeast": 1,
"priceMidClickSharePctAtLeast": 1,
"priceHighClickSharePctAtLeast": 1,
"demoPrimaryAgeMin": 1,
"demoPrimaryAgeMax": 1,
"demoLifeStageTags": [],
"featureNewAvgReviewCountAtLeast": 1,
"featureEstablishedAvgReviewCountAtLeast": 1,
"featureEmergingTrendTags": [],
"featureUncommonFeatureTags": [],
"reviewPositiveTop1PctAtLeast": 1,
"reviewNegativeTop1PctAtLeast": 1,
"reviewStrategicInsightTags": []
}
]
},
"code": 0,
"msg": null,
"ts": "0",
"time": "2026-01-01 00:00:00",
"cost": "-1",
"traceId": null
}Response fields
| 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[] | object | required | Item in data data. |
data.data[].amazonDomain | string | optional | Site code (currently fixed US) Example: null |
data.data[].keyword | string | optional | Original search keyword Example: phone case |
data.data[].nicheName | string | optional | Normalized niche name (snake_case) Example: null |
data.data[].nicheRevenue360dMinUsdAtLeast | number | optional | Last 360 days market revenue lower bound / upper bound (USD) Example: 1 |
data.data[].nicheRevenue360dMaxUsdAtLeast | number | optional | Last 360 days market revenue lower bound / upper bound (USD) Example: 1 |
data.data[].nichePeakSearchVolumeAtLeast | integer | optional | Peak monthly search volume Example: 1 |
data.data[].nichePeakMonth | integer | optional | Search peak month (1-12) Example: 1 |
data.data[].nicheSearchVolumeYoyChangePctAtLeast | number | optional | Search volume YoY change rate (%, signed) Example: 1 |
data.data[].nicheBrandCount | integer | optional | Active brand count and its YoY change rate Example: 1 |
data.data[].nicheBrandCountYoyChangePctAtLeast | number | optional | Active brand count YoY change rate Example: 1 |
data.data[].nicheTop5ProductClickSharePctAtLeast | number | optional | Top 5 product click share (0-100) Example: 1 |
data.data[].featureTop5BrandSharePctAtLeast | number | optional | Top 5 brand combined share (0-100) Example: 1 |
data.data[].featureTopBrands | array | optional | Top 3 brand name list (original text) Example: [] |
data.data[].priceMinUsd | number | optional | Niche overall minimum / maximum product price Example: 1 |
data.data[].priceMaxUsd | number | optional | Niche overall minimum / maximum product price Example: 1 |
data.data[].priceSweetSpotMinUsd | number | optional | Value sweet spot price range lower bound / upper bound Example: 1 |
data.data[].priceSweetSpotMaxUsd | number | optional | Value sweet spot price range lower bound / upper bound Example: 1 |
data.data[].priceEntryClickSharePctAtLeast | number | optional | Entry / Mid / High tier click share (0-100) Example: 1 |
data.data[].priceMidClickSharePctAtLeast | number | optional | Entry / Mid / High tier click share (0-100) Example: 1 |
data.data[].priceHighClickSharePctAtLeast | number | optional | Entry / Mid / High tier click share (0-100) Example: 1 |
data.data[].demoPrimaryAgeMin | integer | optional | Core audience age lower bound / upper bound Example: 1 |
data.data[].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.data[].demoLifeStageTags | array | optional | Life stage tag list Example: [] |
data.data[].featureNewAvgReviewCountAtLeast | integer | optional | New / Established product average review count Example: 1 |
data.data[].featureEstablishedAvgReviewCountAtLeast | integer | optional | New / Established product average review count Example: 1 |
data.data[].featureEmergingTrendTags | array | optional | Emerging trend / Rare differentiation feature tags Example: [] |
data.data[].featureUncommonFeatureTags | array | optional | Emerging trend / Rare differentiation feature tags Example: [] |
data.data[].searchTopCategory1Label | string | optional | Traffic top category 1 normalized label Example: null |
data.data[].reviewPositiveTop1Topic | string | optional | Positive review #1 topic Example: null |
data.data[].reviewPositiveTop1PctAtLeast | number | optional | Positive review #1 topic and its share among positive reviews Example: 1 |
data.data[].reviewNegativeTop1Topic | string | optional | Negative review #1 topic Example: null |
data.data[].reviewNegativeTop1PctAtLeast | number | optional | Negative review #1 topic, share, and secondary cause Example: 1 |
data.data[].reviewNegativeTop2Topic | string | optional | Negative review #2 topic Example: null |
data.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. |
Responses
| Code | Description |
|---|---|
| 200 | HTTP request completed. Check JSON code; only 0 indicates business success or acceptance. |
| 400 | Request JSON or required API parameters are invalid. |
| 401 | API key is missing, invalid, or cannot be matched to a user. |
| 5xx | API execution or upstream service failed. |
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 recommendedConnect 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/api/skill-api/v2/mcp
MCP-Protocol-Version: 2025-11-25
Content-Type: application/jsonAuthentication
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_amazon_opportunity_search_by_metrics",
"arguments": {
"limit": 10,
"keyword": "phone case",
"amazonDomain": "US"
}
}
}Legacy MCP v1
Existing API-key clients can continue using the compatibility endpoint. New integrations should use MCP v2.
GET / POST /api/skill-api/v1/mcpOnline test
Execute the current API with your API key and JSON payload.
10 credits / callAPI usage records
Try it
Send a real request with the same contract shown in the reference.
Endpoint
https://api.nexscope.ai/api/skill-api/v1/skills/amazon-opportunity-search-by-metrics/runMCP method
nexscope_amazon_opportunity_search_by_metricscURL
curl -X POST \
https://api.nexscope.ai/api/skill-api/v1/skills/amazon-opportunity-search-by-metrics/run \
-H "Authorization: Bearer nk-..." \
-H "Content-Type: application/json" \
-d '{ "limit": 10, "keyword": "phone case", "amazonDomain": "US" }'Response
No response yet. Run the request to see the response here.
Related APIs
Amazon ASIN Traffic Summary
Compare traffic sources and keyword changes for an ASIN.
Amazon Broad Product Search
Find Amazon products by sales, price, ratings, and fulfillment.
Amazon Category Lookup
Find Amazon category IDs by marketplace or category name.
Amazon Competitor Lookup
Compare competing Amazon products by sales, price, and growth.