Amazon Rank Tracking API
List tracked keywords
Your tracked keywords with the latest position of each.
https://api.screamingdata.dev/v1/amazon/rank_tracking/list- Authentication
- API key (HTTP Basic)
- Cost
- Free
- Body
- No request body
Overview
Returns your active and paused tracked keywords, oldest first, each with its latest position (a position record, or null before the first check). Page with limit and offset.
Cost
Request
GET /v1/amazon/rank_tracking/list.
Query parameters
limitMaximum number of tracked keywords to return.
- Default
100 - Range1 – 1000
- Example
100
offsetNumber of tracked keywords to skip, for paging.
- Default
0 - Range≥ 0
- Example
0
Request example
The examples read your credentials from the API_LOGIN and API_KEY environment variables.
curl --request GET \
--url "https://api.screamingdata.dev/ v1/ amazon/ rank_tracking/ list?limit=100&offset=0" \
--user "$API_LOGIN:$API_KEY"import os
import requests
response = requests.get(
"https://api.screamingdata.dev/ v1/ amazon/ rank_tracking/ list",
auth=(os.environ["API_LOGIN"], os.environ["API_KEY"]),
params={"limit": 100, "offset": 0},
timeout=30,
)
data = response.json()
print(data["status_code"], data["status_message"], "cost:", data["cost"])
for task in data["tasks"]:
print(task["id"], task["status_code"], task["status_message"])const auth = Buffer.from(`${process.env.API_LOGIN}:${process.env.API_KEY}`).toString("base64");
const response = await fetch("https://api.screamingdata.dev/ v1/ amazon/ rank_tracking/ list?limit=100&offset=0", {
headers: {
Authorization: `Basic ${auth}`,
},
});
const data = await response.json();
console.log(data.status_code, data.status_message, "cost:", data.cost);
for (const task of data.tasks) {
console.log(task.id, task.status_code, task.status_message);
}Response
HTTP 200. The body is the standard response envelope; check status_code at the top level and in every task.
{
"version": "1.0.0",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0032 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "10031502-4e8a-4c2d-b7f1-0a9c3e5d2b61",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0032 sec.",
"cost": 0,
"result_count": 2,
"path": [
"v1",
"amazon",
"rank_tracking",
"list"
],
"data": {
"api": "amazon",
"function": "rank_tracking",
"limit": 100,
"offset": 0
},
"result": [
{
"id": 5120,
"asin": "B0EXAMPLE1",
"marketplace": "com",
"keyword": "wireless earbuds",
"status": "active",
"created_at": "2026-10-03T08:14:20Z",
"last_checked_at": "2026-10-03T05:02:41Z",
"next_check_at": "2026-10-04T05:00:00Z",
"latest": {
"asin": "B0EXAMPLE1",
"marketplace": "com",
"keyword": "wireless earbuds",
"observed_at": "2026-10-03T05:02:41Z",
"organic_rank": 7,
"organic_page": 1,
"checked_depth": 100,
"total_results": 27435,
"matched_asin": "B0EXAMPLE1",
"matched_format": null
}
},
{
"id": 5121,
"asin": "B0EXAMPLE1",
"marketplace": "com",
"keyword": "noise cancelling headphones",
"status": "active",
"created_at": "2026-10-03T08:14:20Z",
"last_checked_at": "2026-10-03T05:02:44Z",
"next_check_at": "2026-10-04T05:00:00Z",
"latest": {
"asin": "B0EXAMPLE1",
"marketplace": "com",
"keyword": "noise cancelling headphones",
"observed_at": "2026-10-03T05:02:44Z",
"organic_rank": null,
"organic_page": null,
"checked_depth": 100,
"total_results": 18204,
"matched_asin": null,
"matched_format": null
}
}
]
}
]
}Result fields
Each element of tasks[].result is a tracked keyword. One ASIN tracked for one keyword on one marketplace. rank_tracking/add returns it without latest.
idTracking id. Use it with rank_tracking/delete.
asinTracked ASIN.
marketplaceMarketplace code.
keywordThe keyword as you sent it (trimmed).
statusactive, or paused_balance while the balance cannot cover checks (resumes automatically once balance is added).
created_atWhen tracking started, ISO 8601 in UTC.
last_checked_atThe latest check delivered, ISO 8601 in UTC; null before the first one.
next_check_atWhen the keyword is due to be checked next, ISO 8601 in UTC; null while paused.
latestThe latest position record, or null before the first check. Returned by rank_tracking/list only.
Status codes
Codes this endpoint can return, at the request or task level. See Status codes for handling advice.
| Code | Message | HTTP | Level | When |
|---|---|---|---|---|
| 20000 | Ok. | 200 | Request / task | The request, or the individual task, was processed successfully. |
| 40100 | Authentication failed. | 401 | Request | The Authorization header is missing or malformed, or the login and API key do not match. |
| 40101 | API key revoked. | 401 | Request | The API key was revoked. Use another active key or create a new one. |
| 40102 | Account disabled. | 401 | Request | The account is disabled. Contact support. |
| 40202 | Rate limit exceeded. | 429 | Request | Too many requests or tasks per minute for this account, or too many access requests from one IP address. The Retry-After header says how many seconds to wait. |
| 40501 | Invalid field: `<name>`. | 400 / 200 | Request / task | A field has a wrong type, format or value; the message names the field, for example "Invalid field: `priority`." |
| 40600 | Feature not available on your plan. | 403 | Request | The requested feature is not enabled for this account. |
| 50000 | Internal error. | 500 | Request | Unexpected server error. The request can be retried; contact support if it persists. |