Docs Sign inGet started
API reference

Pagination and limits

Paging through answers, list sizes, rate limits and request IDs.

Replace YOUR_API_KEY with a key from Settings → API and MCP. Keys are shown once when you create them.

Paging through answers

List answers is the only endpoint with many pages. It uses limit (1 to 200, default 50) and offset:

JSON
{ "total": 444, "offset": 0, "next_offset": 50, "answers": [ … ] }

Pass next_offset as offset to get the next page. It's null on the last page.

Every answer
import requests

url = "https://getonym.com/api/v1/domains/acme.example/answers"
H = {"Authorization": "Bearer YOUR_API_KEY"}
offset, answers = 0, []
while offset is not None:
    page = requests.get(url, headers=H, params={"limit": 200, "offset": offset}).json()
    answers += page["answers"]
    offset = page["next_offset"]
print(len(answers))

Answers are sorted newest run first. New answers arriving mid-way can shift pages, so for a complete export, narrow range or page between runs.

List sizes

Other lists return everything in one response, with these caps:

Endpoint Returns
/sources Up to 200 sites, each with its top 8 URLs
/timeseries You and up to 8 competitors
/competitors Every tracked competitor, plus the top 15 untracked brands
/changes The latest limit runs (default 8, at most 50)

Rate limits

Each key can make 600 requests a minute. MCP tool calls count toward the same limit. Every authenticated response tells you where you stand:

Header Meaning
X-RateLimit-Limit Requests allowed per minute
X-RateLimit-Remaining Requests left in the current minute
X-RateLimit-Reset Seconds until the oldest request leaves the window

Over the limit, the API returns 429 with code rate_limited and a Retry-After header in seconds. Wait that long, then retry.

Request IDs

Every response has an X-Request-Id, like req_3f9c2a1e6b7d4e8f. Log it with errors and include it when you contact us.