nexqdata/ docs

Rate limits

What's limited, how much, and what to do when you hit a limit.

Starting work is rate-limited, per user. Reading — status, history, data — is not.

LimitedEndpointsDefault
Starting jobs and runsPOST /api/scraper-agents/{externalAgentId}/start-job, /run, POST /api/search-groups/{groupId}/run, POST /api/pipelines/{pipelineId}/run60 per minute, per user

The limit is a fixed one-minute window, counted separately for each user — so each integration with its own user and key gets its own budget.

Bulk exports have a separate limit: one at a time per account and company. A second concurrent export also returns 429, with Retry-After: 5.

When you're limited

You get 429 Too Many Requests, with a Retry-After header saying how many seconds to wait:

HTTP/1.1 429 Too Many Requests
Retry-After: 23

Wait that long, then retry the same request.

async function withRetry(send) {
  for (;;) {
    const response = await send()
    if (response.status !== 429) return response
    const seconds = Number(response.headers.get("Retry-After") ?? 1)
    await new Promise((resolve) => setTimeout(resolve, seconds * 1000))
  }
}

Need more?

If your integration needs a higher limit, talk to us — it's a platform setting, not a hard cap.

On this page