Appendix API
Account data
Balance, limits, rates, usage today and this month, and active API keys.
https://api.screamingdata.dev/v1/appendix/user_data- Authentication
- API key (HTTP Basic)
- Cost
- Free
- Body
- No request body
Overview
Returns your account: login, e-mail, prepaid balance, plan, rate limits, the rates that apply to your account, usage today and this month (UTC), your active API keys and the secret that signs your webhooks.
Full API keys are never returned again after creation — only prefix and last4 for display.
Cost
Request
GET /v1/appendix/user_data.
This endpoint takes no parameters.
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/ user_data" \
--user "$API_LOGIN:$API_KEY"import os
import requests
response = requests.get(
"https://api.screamingdata.dev/ v1/ appendix/ user_data",
auth=(os.environ["API_LOGIN"], os.environ["API_KEY"]),
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/ user_data", {
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.0212 sec.",
"cost": 0,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "09241250-7b1e-4c3d-9f2a-8e6d4c0b1a57",
"status_code": 20000,
"status_message": "Ok.",
"time": "0.0063 sec.",
"cost": 0,
"result_count": 1,
"path": [
"v1",
"appendix",
"user_data"
],
"data": {
"api": "appendix",
"function": "user_data"
},
"result": [
{
"login": "acme-analytics",
"email": "dev@example.com",
"name": "Jane Doe",
"company": "Acme Analytics",
"plan": "payg",
"billing_mode": "prepaid",
"balance": 48.2515,
"currency": "USD",
"rate_limits": {
"requests_per_minute": 600,
"tasks_per_request": 100,
"tasks_per_minute": 2000
},
"rates": [
{
"key": "amazon.product.task_post.normal",
"price": 0.0015,
"currency": "USD",
"unit": "task",
"endpoint": "POST /v1/amazon/product/task_post",
"description": "Product task, normal priority"
},
{
"key": "amazon.product.task_post.high",
"price": 0.003,
"currency": "USD",
"unit": "task",
"endpoint": "POST /v1/amazon/product/task_post",
"description": "Product task, high priority (priority: 2)"
},
{
"key": "amazon.product.live",
"price": 0.004,
"currency": "USD",
"unit": "request",
"endpoint": "POST /v1/amazon/product/live",
"description": "Live product data"
},
{
"key": "amazon.product.history",
"price": 0.0005,
"currency": "USD",
"unit": "product",
"endpoint": "POST /v1/amazon/product/history",
"description": "Observation history of one product (each element of the request body), up to 1,000 rows"
},
{
"key": "amazon.monitoring.observation",
"price": 0.0006,
"currency": "USD",
"unit": "observation",
"endpoint": "Amazon Monitoring",
"description": "Each delivered observation of a monitored product"
}
],
"usage": {
"today": {
"requests": 1622,
"tasks": 3104,
"cost": 2.314
},
"this_month": {
"requests": 41380,
"tasks": 78920,
"cost": 58.9425
}
},
"keys": [
{
"id": 17,
"prefix": "sd_live_Qm3x",
"last4": "9fZk",
"label": "production",
"created_at": "2026-08-02T09:14:00Z",
"last_used_at": "2026-09-24T12:49:58Z",
"revoked_at": null
},
{
"id": 21,
"prefix": "sd_live_b7Tn",
"last4": "Lw2c",
"label": "staging",
"created_at": "2026-09-10T16:02:11Z",
"last_used_at": null,
"revoked_at": null
}
],
"webhook_secret": "1449feda7568be9f1d93e7c6746a26a5498be734c682c1143d41bb74a38b067f",
"created_at": "2026-08-02T09:13:41Z"
}
]
}
]
}Result fields
Each element of tasks[].result is a account object. Your account, balance, limits, rates, usage, active keys and webhook secret.
loginAPI login.
emailAccount e-mail.
nameContact name.
companyCompany name.
planPlan name.
billing_modeprepaid for accounts billed from a prepaid balance.
balancePrepaid balance in USD.
currencyBalance currency, always USD.
rate_limitsYour limits: requests_per_minute, tasks_per_request, tasks_per_minute.
ratesThe rates that apply to your account: key, price (USD), currency, unit, endpoint, description. Keys are the API's price keys, for example amazon.product.live.
usageTotals for today and this_month (UTC), each with requests, tasks and cost.
keysActive API keys: id, prefix, last4, label, created_at, last_used_at, revoked_at. Full keys are never returned again.
webhook_secretSecret used to sign postbacks and pingbacks. See Webhooks.
created_atWhen the account was created, ISO 8601 in UTC.
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. |
| 50000 | Internal error. | 500 | Request | Unexpected server error. The request can be retried; contact support if it persists. |