Reverse Keyword Lookup
Retrieve Amazon traffic keywords, organic and ad positions, demand, PPC, and traffic share for an ASIN.
/v1 /amazon /keywords /reverse-lookupAPI data samples
Inspect the request body and complete response shape used by this endpoint.
{
"marketplace": "US",
"asin": "B08CK5Z5Q1",
"month": "202507",
"page": 1,
"size": 20
}{
"request_id": "8fb43e59-4ff9-4dc8-a4b7-2ed164e45ab8",
"data": {
"marketplace": "US",
"asin": "B07Z82895W",
"total": 1023,
"items": [
{
"keyword": "phone accessory",
"keywordCn": "手机配件",
"searches": 530,
"products": 144065,
"purchases": 3,
"purchaseRate": 0.007,
"bid": 0.77,
"bidMax": 0.96,
"bidMin": 0.58,
"badges": [
"naturalSearching"
],
"rankPosition": {
"page": 3,
"pageSize": 17,
"index": 4,
"position": 52,
"updatedTime": 1753349221000
},
"adPosition": {
"page": 3,
"pageSize": 20,
"index": 20,
"position": 73,
"updatedTime": 1752120219000
},
"updatedTime": 1753349221000,
"searchesRank": 2443672,
"searchesRankTimeFrom": 1752940800000,
"searchesRankTimeTo": 1753459200000,
"latest1daysAds": 0,
"latest7daysAds": 48,
"latest30daysAds": 170,
"supplyDemandRatio": 0,
"trafficPercentage": 0,
"trafficKeywordType": null,
"conversionKeywordType": null,
"calculatedWeeklySearches": 0,
"titleDensity": 1,
"spr": 1,
"monopolyClickRate": 0.2307,
"top3ClickingRate": 0.2307,
"top3ConversionRate": 0,
"clicks": 229,
"impressions": 13957,
"naturalRatio": 0.98009,
"adRatio": 0.01991,
"topAsins": null,
"searchesTrend": null
}
],
"stats": [
{
"keywords": "phone",
"total": 1
}
]
}
}Availability: Available
This endpoint is active in the v1 gateway, OpenAPI, and subscription catalog. A successful call consumes 1 billing unit.
POST /v1/amazon/keywords/reverse-lookup
The request and response fields below match the current public contract.
Quick call
First create an API key, then store it in a server-side environment variable:
export ECOMMERCE_DATA_API_KEY="your_api_key"curl --request POST \
--url https://ecommercedataapi.com/v1/amazon/keywords/reverse-lookup \
--header "Content-Type: application/json" \
--header "X-API-Key: ${ECOMMERCE_DATA_API_KEY}" \
--data '{
"marketplace": "US",
"asin": "B08CK5Z5Q1",
"month": "202507",
"page": 1,
"size": 20
}'Integrate with an AI CLI
Copy for your AI CLI
Paste this task into Codex, Claude Code, Gemini CLI, or another coding agent.
Integrate the "Reverse Keyword Lookup" endpoint from Ecommerce Data API into the current repository. Make the changes directly instead of only returning sample code.
API documentation: https://ecommercedataapi.com/en/docs/amazon/keywords/reverse-lookup
Endpoint: POST https://ecommercedataapi.com/v1/amazon/keywords/reverse-lookup
API key environment variable: ECOMMERCE_DATA_API_KEY
Example request:
{
"marketplace": "US",
"asin": "B08CK5Z5Q1",
"month": "202507",
"page": 1,
"size": 20
}
Requirements:
1. Read the API documentation first, then inspect the repository's language, framework, HTTP client, directory structure, and environment-variable conventions.
2. Reuse the existing API client and error-handling patterns. If none exist, add the smallest reusable Ecommerce Data API client and an endpoint-specific wrapper.
3. Read the key from the server-side ECOMMERCE_DATA_API_KEY environment variable and send Content-Type: application/json plus the X-API-Key header. Never write a real key into source code, browser code, logs, test snapshots, or Git.
4. If the environment variable is missing, tell me to configure ECOMMERCE_DATA_API_KEY myself. Do not request, print, or invent the real key, and continue implementing code and tests that do not require a live request.
5. Implement request and response types from the documentation. Handle non-2xx responses, request_id, error.code, error.message, and 429 rate limits.
6. Add a minimal usage example or test that follows the repository's conventions. Run one minimal live request only when the key is already configured and external requests are allowed; otherwise use mocks or static validation.
7. Run the relevant formatter, type checker, and tests. Report changed files, usage, verification results, and any environment variable I still need to configure.Open this request in Postman
Download the preconfigured collection for this endpoint, then import it into Postman.
Node.js example
const response = await fetch(
'https://ecommercedataapi.com/v1/amazon/keywords/reverse-lookup',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-API-Key': process.env.ECOMMERCE_DATA_API_KEY,
},
body: JSON.stringify({
marketplace: 'US',
asin: 'B08CK5Z5Q1',
month: '202507',
page: 1,
size: 20,
}),
}
);
const result = await response.json();
if (!response.ok) {
throw new Error(`${result.error?.code}: ${result.error?.message}`);
}
console.log(result.data);Python example
import os
import requests
response = requests.post(
"https://ecommercedataapi.com/v1/amazon/keywords/reverse-lookup",
headers={
"Content-Type": "application/json",
"X-API-Key": os.environ["ECOMMERCE_DATA_API_KEY"],
},
json={
"marketplace": "US",
"asin": "B08CK5Z5Q1",
"month": "202507",
"page": 1,
"size": 20,
},
timeout=30,
)
response.raise_for_status()
print(response.json()["data"])Request body
Send the fields below directly in the JSON body without an extra wrapper. Undefined fields are rejected.
| Field | Type | Required | Description | Example |
|---|---|---|---|---|
marketplace | String | No | Amazon marketplace code. Supported values are listed in the schema. | US |
asin | String | Yes | Amazon Standard Identification Number. | B07Z82895W |
month | String | No | Data month. Use the format documented for this endpoint, usually yyyyMM. | 202308 |
page | Integer | No | Page number starting at 1. | 1 |
size | Integer | No | Number of results per page. | 50 |
Response structure
| Field | Type | Description |
|---|---|---|
request_id | String | Unique identifier for this request. |
data | Object | Endpoint business data. |
The fields below are inside data. For array endpoints they describe one array item; for paginated endpoints they describe one record in items[].
Response fields
| Field | Type | Description | Example |
|---|---|---|---|
marketplace | String | Marketplace. | 见表 1.2 |
asin | String | ASIN. | B07Z82895W |
total | Integer | Total. | 2685 |
items | Array | Items. | 1848 |
items.keyword | String | Keyword. | 该ASIN近30天或某个自然月进入过亚马逊搜索结果前3页的词 |
items.keywordCn | String | Keyword cn. | 手机支架 |
items.searches | String | Searches. | 指的是一个自然月的月搜索量,比如2025年8月,该关键词在亚马逊站内的搜索总次数 |
items.products | String | Products. | 指搜索该关键词后出现了多少个相关的产品 |
items.purchases | String | Purchases. | 在亚马逊站内搜索该关键词后产生购买的次数,比如:某用户搜索iphone charger,然后1次购买了1个iphone充电器,2条数据线(关联推荐的商品),则购买量=1 |
items.purchaseRate | String | Purchase rate. Percentage or ratio value as documented. | 指买家输入该搜索词并点击此细分市场中的任意商品后,买家的购买次数占买家输入该搜索词总次数的比例 |
items.bid | String | Bid. | 亚马逊站内广告Bid价格,系统提供【词组匹配】的Bid建议价格以及范围 |
items.bidMax | Number | Bid max. | - |
items.bidMin | Number | Bid min. | - |
items.badges | Array | Badges. | ASIN在对应关键词的搜索结果下曝光的具体位置, 见表1.10 |
items.rankPosition | String | Rank position. | - |
items.rankPosition.page | Integer | Page. | 3 |
items.rankPosition.pageSize | Integer | Page size. | 60 |
items.rankPosition.index | Integer | Index. | 10 |
items.rankPosition.position | Integer | Position. | 106 |
items.rankPosition.updatedTime | Integer | Updated time. Date or timestamp value. | - |
items.adPosition | String | Ad position. | - |
items.adPosition.page | Integer | Page. | 2 |
items.adPosition.pageSize | Integer | Page size. | 63 |
items.adPosition.index | Integer | Index. | 37 |
items.adPosition.position | Integer | Position. | 85 |
items.adPosition.updatedTime | Integer | Updated time. Date or timestamp value. | - |
items.searchesRank | String | Searches rank. | 数据来源于亚马逊ABA数据的关键词搜索频率排名(Search Frequency Rank),数字越小表示排名越靠前,搜索量越高 |
items.searchesRankTimeFrom | Integer | Searches rank time from. Date or timestamp value. | - |
items.searchesRankTimeTo | Integer | Searches rank time to. | - |
items.latest1daysAds | String | Latest1days ads. | 表示近1天内进入过该关键词搜索结果前3页的广告产品总数,包括SP广告、HR广告、品牌广告和视频广告 |
items.latest7daysAds | String | Latest7days ads. | 表示近7天内进入过该关键词搜索结果前3页的广告产品总数,包括SP广告、HR广告、品牌广告和视频广告 |
items.latest30daysAds | String | Latest30days ads. | 表示近30天内进入过该关键词搜索结果前3页的广告产品总数,包括SP广告、HR广告、品牌广告和视频广告 |
items.supplyDemandRatio | String | Supply demand ratio. | 搜索量(需求) / 商品数(供应),在同类市场中,需供比值越高,则代表该市场需求越强劲 |
items.trafficPercentage | String | Traffic percentage. Percentage or ratio value as documented. | 指的是产品通过不同流量词获得的曝光量占比 |
items.trafficKeywordType | String | Traffic keyword type. Percentage or ratio value as documented. | 见表2.0 |
items.conversionKeywordType | String | Conversion keyword type. | 见表2.1 |
items.calculatedWeeklySearches | String | Calculated weekly searches. | 指的是该关键词本周内给产品带来的预估曝光量,非该词在亚马逊的总搜索量 |
items.impressions | String | Impressions. | 指一个自然月,比如2024年3月,在某个关键词搜索结果页中所有ASIN的总展示次数,非单个ASIN在关键词下的曝光量 |
items.updatedTime | Integer | Updated time. Date or timestamp value. | - |
items.clicks | String | Clicks. | 指一个自然月,比如2024年3月,在某个关键词搜索结果页中被点击的总次数,非单个ASIN在关键词下的点击量 |
items.naturalRatio | Number | Natural ratio. Percentage or ratio value as documented. | 0.9312 |
items.adRatio | Number | Ad ratio. Percentage or ratio value as documented. | 0.0688 |
stats | Array | Stats. | - |
stats.keywords | String | Keywords. | phone |
stats.total | Integer | Total. | 90 |
stats.total.page | Integer | Page. | 2 |
stats.total.pageSize | Integer | Page size. | 63 |
stats.total.index | Integer | Index. | 37 |
stats.total.position | Integer | Position. | 85 |
stats.total.updatedTime | Integer | Updated time. Date or timestamp value. | - |
Response example
{
"request_id": "8fb43e59-4ff9-4dc8-a4b7-2ed164e45ab8",
"data": {
"marketplace": "US",
"asin": "B07Z82895W",
"total": 1023,
"items": [
{
"keyword": "phone accessory",
"keywordCn": "手机配件",
"searches": 530,
"products": 144065,
"purchases": 3,
"purchaseRate": 0.007,
"bid": 0.77,
"bidMax": 0.96,
"bidMin": 0.58,
"badges": ["naturalSearching"],
"rankPosition": {
"page": 3,
"pageSize": 17,
"index": 4,
"position": 52,
"updatedTime": 1753349221000
},
"adPosition": {
"page": 3,
"pageSize": 20,
"index": 20,
"position": 73,
"updatedTime": 1752120219000
},
"updatedTime": 1753349221000,
"searchesRank": 2443672,
"searchesRankTimeFrom": 1752940800000,
"searchesRankTimeTo": 1753459200000,
"latest1daysAds": 0,
"latest7daysAds": 48,
"latest30daysAds": 170,
"supplyDemandRatio": 0,
"trafficPercentage": 0,
"trafficKeywordType": null,
"conversionKeywordType": null,
"calculatedWeeklySearches": 0,
"titleDensity": 1,
"spr": 1,
"monopolyClickRate": 0.2307,
"top3ClickingRate": 0.2307,
"top3ConversionRate": 0,
"clicks": 229,
"impressions": 13957,
"naturalRatio": 0.98009,
"adRatio": 0.01991,
"topAsins": null,
"searchesTrend": null
}
],
"stats": [
{
"keywords": "phone",
"total": 1
}
]
}
}See Errors and rate limits for error payloads, request tracing, and rate-limit headers.