NEWWorld's first AI visibility audit tool for Web3 is live.Run free audit →
Docs · Rate Limits · Per-tier quotas

Rate limits and tier quotas.

Rate limits scale with account tier. Audit quota is the binding constraint; result retrieval calls are unlimited within reason. Rate-limit headers are returned on every API response so your code can react gracefully to approaching limits.

// Section 01 · Per-tier limits

Audit quotas by tier.

TierAudits / monthResult retrievalUse case
Free5UnlimitedPersonal projects, evaluation, single-domain teams
Pro50UnlimitedSolo agencies, in-house SEO leads, multi-project consultants
Team200UnlimitedMarketing agencies, multi-tenant platforms, larger SEO teams
EnterpriseCustomUnlimitedDedicated infrastructure, SLA, custom integration support

Audit quotas reset on the first of each month at 00:00 UTC. Unused quota does not roll over. Hitting the quota returns HTTP 429 with error code audit_quota_exceeded; result retrieval calls (GET /audits, GET /audits/{audit_id}) continue working normally.

// Section 02 · Rate-limit headers

Headers returned on every response.

Every API response includes three rate-limit headers. Use these to track approaching limits and back off proactively rather than waiting for 429 responses.

response-headers
X-RateLimit-Limit: 200
X-RateLimit-Remaining: 147
X-RateLimit-Reset: 1717200000
X-RateLimit-Limit
Your tier limit. 5 for free, 50 for pro, 200 for team, custom for enterprise.
X-RateLimit-Remaining
Audits remaining in the current period. Decrements per audit triggered. Does not decrement for result retrieval calls.
X-RateLimit-Reset
Unix timestamp when the limit resets (start of next month). Use this for scheduling automation that waits until quota refreshes.

// Section 03 · Burst limits

Per-second protections on top of monthly quota.

In addition to monthly audit quota, all tiers have a burst limit of 10 audits per minute. This prevents accidental loops or buggy automation from exhausting a month of quota in seconds. Burst limit returns HTTP 429 with error code burst_limit_exceeded and resets after 60 seconds.

Result retrieval calls have a burst limit of 100 requests per minute per workspace. This is generous for normal dashboard usage but will throttle aggressive polling. Use webhooks instead of polling whenever possible.

// Section 04 · Handling 429 responses

Recommended retry pattern.

retry-on-429.js
async function auditWithRetry(domain, maxRetries = 3) {
  for (let attempt = 0; attempt < maxRetries; attempt++) {
    const res = await fetch("https://api.crawlux.com/v1/audits", {
      method: "POST",
      headers: {
        Authorization: `Bearer ${process.env.CRAWLUX_API_KEY}`,
        "Content-Type": "application/json"
      },
      body: JSON.stringify({ domain })
    });

    if (res.status === 429) {
      const resetAt = parseInt(res.headers.get("x-ratelimit-reset"));
      const waitMs = Math.min((resetAt * 1000) - Date.now(), 60000);
      await sleep(waitMs);
      continue;
    }

    return res.json();
  }
  throw new Error("max retries exceeded");
}

// Section 05 · Increasing limits

When you outgrow your tier.

Upgrading tier instantly increases your quota and resets remaining count to the new tier maximum. Downgrade also takes effect immediately but does not refund the difference for the current period.

Enterprise tier offers custom audit quotas (1,000+ per month is typical), dedicated infrastructure, custom integration support and an SLA. Contact [email protected] for pricing.

// Related docs

Where to go from here.

Run a free audit and download the JSON

The fastest way to evaluate the audit JSON for integration: run a real audit on your own domain and inspect the output. Free first audit per domain.

Join API waitlist
JSON output live · Webhooks live · API Q4 2026 · 2-week early access window