Pagination & parameters

These conventions apply across every endpoint, so once you've integrated one you've effectively integrated them all.

Pagination

List endpoints are paginated. Pass `page` and `per_page` query parameters; the response reports the current position and totals under `meta`.

Pagination parameters
ParameterTypeDescription
pageinteger1-based page number. Defaults to `1`.
per_pageintegerItems per page. Defaults to `50`, maximum `100`.
JSON
{
  "data": [ /* ... */ ],
  "meta": {
    "page": 1,
    "per_page": 50,
    "total": 318,
    "total_pages": 7
  }
}

Sorting & filtering

  • Sorting - pass `sort` with a field name and `order` (`asc` or `desc`). Supported sort fields are listed on each endpoint.
  • Filtering - most list endpoints accept a `q` free-text filter plus endpoint-specific filters (for example, `min_score` or `dofollow`).

Country & language

Search-data endpoints accept `country` (2-letter ISO 3166 code, e.g. `us`, `gb`, `pk`) and `language` (2-letter ISO 639 code, e.g. `en`). Both default to `us` / `en` when omitted.

Timestamps

All timestamps are returned as ISO-8601 strings in UTC, for example `2026-06-15T09:30:00Z`.

Asynchronous jobs

Some operations (keyword ideas, SERP analysis, rank checks, backlink-gap runs, AI-visibility checks, site audits) run as background jobs. These endpoints return immediately with a `status` of `pending` or `running`. Poll the job's detail endpoint until `status` is `completed` (or `failed`), then read the results.

JSON
{
  "data": {
    "id": "job_3f9a2c",
    "status": "running",
    "progress": 42
  },
  "meta": { "request_id": "req_8f2c1a" }
}
Poll politely

Poll job status every few seconds with backoff, not in a tight loop - polling counts toward your rate limit. Status reads are free of credits.