Appendix API
Usage statistics
Requests, tasks and cost per day and per endpoint for a date range.
https://api.screamingdata.dev/v1/appendix/usage- Authentication
- API key (HTTP Basic)
- Cost
- Free
- Body
- No request body
Overview
Returns your usage between two dates (UTC, inclusive): one row per day — days without usage included as zeros — and totals per endpoint. The dashboard chart is built from this endpoint.
The range can span at most 366 days. A date_from after date_to fails with 40501.
Cost
Request
GET /v1/appendix/usage.
Query parameters
date_fromFirst day, YYYY-MM-DD. Defaults to 29 days before date_to.
- Example
2026-09-22
date_toLast day, YYYY-MM-DD. Defaults to today (UTC).
- Example
2026-09-24
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/ appendix/ usage?date_from=2026-09-22&date_to=2026-09-24" \
--user "$API_LOGIN:$API_KEY"import os
import requests
response = requests.get(
"https://api.screamingdata.dev/ v1/ appendix/ usage",
auth=(os.environ["API_LOGIN"], os.environ["API_KEY"]),
params={"date_from": "2026-09-22", "date_to": "2026-09-24"},
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/ appendix/ usage?date_from=2026-09-22&date_to=2026-09-24", {
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.0249 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "09241251-2c4e-4a8b-9d1f-6b3e7a0c5d92",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0114 sec.",
"cost": 0,
"result_count": 1,
"path": [
"v1",
"appendix",
"usage"
],
"data": {
"api": "appendix",
"function": "usage",
"date_from": "2026-09-22",
"date_to": "2026-09-24"
},
"result": [
{
"date_from": "2026-09-22",
"date_to": "2026-09-24",
"days": [
{
"date": "2026-09-22",
"requests": 1775,
"tasks": 3335,
"cost": 2.425
},
{
"date": "2026-09-23",
"requests": 1853,
"tasks": 3491,
"cost": 2.536
},
{
"date": "2026-09-24",
"requests": 1622,
"tasks": 3104,
"cost": 2.314
}
],
"endpoints": [
{
"endpoint": "amazon/product/task_post",
"requests": 120,
"tasks": 4800,
"cost": 7.2
},
{
"endpoint": "amazon/product/live",
"requests": 15,
"tasks": 15,
"cost": 0.06
},
{
"endpoint": "amazon/product/history",
"requests": 30,
"tasks": 30,
"cost": 0.015
},
{
"endpoint": "amazon/product/task_get",
"requests": 4770,
"tasks": 4770,
"cost": 0
},
{
"endpoint": "amazon/product/tasks_ready",
"requests": 252,
"tasks": 252,
"cost": 0
},
{
"endpoint": "appendix/user_data",
"requests": 63,
"tasks": 63,
"cost": 0
}
],
"totals": {
"requests": 5250,
"tasks": 9930,
"cost": 7.275
}
}
]
}
]
}Result fields
Each element of tasks[].result is a usage object. Usage between two dates, inclusive, in UTC.
date_fromFirst day of the period.
date_toLast day of the period.
daysOne row per day of the period, oldest first, including days without usage: date, requests, tasks, cost.
endpointsTotals per endpoint for the period, most expensive first: endpoint (for example amazon/product/task_post), requests, tasks, cost.
totalsTotals for the period: requests, tasks, cost.
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. |