Amazon Monitoring API
List monitored products
Your subscriptions with the latest observation of each product.
https://api.screamingdata.dev/v1/amazon/monitoring/list- Authentication
- API key (HTTP Basic)
- Cost
- Free
- Body
- No request body
Overview
Returns your active and paused subscriptions, each with the latest observation delivered to it (a product object, or null before the first delivery). Filter by tag and page with limit and offset.
Cost
Request
GET /v1/amazon/monitoring/list.
Query parameters
limitMaximum number of subscriptions to return.
- Default
100 - Range1 – 1000
- Example
100
offsetNumber of subscriptions to skip, for paging.
- Default
0 - Range≥ 0
- Example
0
tagReturn only subscriptions with this tag.
- Max length255 characters
- Example
client-42
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/ monitoring/ list?limit=100&offset=0&tag=client-42" \
--user "$API_LOGIN:$API_KEY"import os
import requests
response = requests.get(
"https://api.screamingdata.dev/ v1/ amazon/ monitoring/ list",
auth=(os.environ["API_LOGIN"], os.environ["API_KEY"]),
params={"limit": 100, "offset": 0, "tag": "client-42"},
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/ monitoring/ list?limit=100&offset=0&tag=client-42", {
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.0305 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "09241320-4a8d-4e6f-b3c2-7f1e9d5a0c26",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0142 sec.",
"cost": 0,
"result_count": 2,
"path": [
"v1",
"amazon",
"monitoring",
"list"
],
"data": {
"api": "amazon",
"function": "monitoring",
"limit": 100,
"offset": 0,
"tag": "client-42"
},
"result": [
{
"id": 3051,
"asin": "B0EXAMPLE1",
"marketplace": "com",
"frequency": "daily",
"tag": "client-42",
"external_user_id": "u_8f3a2c",
"status": "active",
"created_at": "2026-09-24T13:02:11Z",
"latest_observation": {
"asin": "B0EXAMPLE1",
"marketplace": "com",
"url": "https://www.amazon.com/ dp/ B0EXAMPLE1",
"observed_at": "2026-09-24T12:35:41Z",
"status": "ok",
"title": "Acme Wireless Noise Cancelling Headphones, Black",
"byline": [
"Acme"
],
"variant": "Black",
"variants": [
{
"name": "Black",
"asin": "B0EXAMPLE1"
},
{
"name": "White",
"asin": "B0EXAMPLE2"
},
{
"name": "Navy Blue",
"asin": "B0EXAMPLE3"
}
],
"price": {
"amount": 59.99,
"currency": "USD"
},
"bsr": {
"rank": 1432,
"category": "Electronics",
"subcategories": [
{
"rank": 12,
"category": "Over-Ear Headphones"
},
{
"rank": 31,
"category": "Noise-Cancelling Headphones"
}
]
},
"rating": 4.5,
"ratings_count": 2318,
"image_url": "https://m.media-amazon.com/ images/ I/ example._AC_SL1500_.jpg",
"details": {
"brand": "Acme",
"color": "Black",
"connectivity_technology": "Wireless",
"date_first_available": "March 4, 2025",
"item_model_number": "AC-WH400",
"item_weight": "8.8 ounces",
"manufacturer": "Acme",
"product_dimensions": "7.3 x 6.5 x 3.1 inches"
},
"parser_version": "2026.09.2"
}
},
{
"id": 3060,
"asin": "B0EXAMPLE3",
"marketplace": "com",
"frequency": "daily",
"tag": "client-42",
"external_user_id": "u_8f3a2c",
"status": "active",
"created_at": "2026-09-24T13:19:30Z",
"latest_observation": null
}
]
}
]
}Result fields
Each element of tasks[].result is a subscription object. A monitored product. monitoring/add returns it without latest_observation.
idSubscription id. Use it with monitoring/delete.
asinMonitored ASIN.
marketplaceMarketplace code.
frequencyhourly, every_6h or daily.
tagYour tag.
external_user_idYour opaque end-user id.
statusactive, or paused_balance while the balance cannot cover observations (resumes automatically once balance is added).
created_atWhen the subscription was created, ISO 8601 in UTC.
latest_observationThe latest observation delivered to this subscription (a product object, same shape as in task_get), or null before the first delivery. Returned by monitoring/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`." |
| 50000 | Internal error. | 500 | Request | Unexpected server error. The request can be retried; contact support if it persists. |