Skip to main content
Rate limits ensure fair usage and platform stability. Limits are applied per API token.

Current Limits

PlanRate Limit
Business100 requests per minute
Enterprise100 requests per minute (contact us for higher limits)
Rate limits are applied per API token, not per IP address.

Rate Limit Headers

Every API response includes headers to help you track your usage:
HeaderDescription
X-RateLimit-LimitMaximum requests allowed per minute
X-RateLimit-RemainingRequests remaining in current window
X-RateLimit-ResetISO 8601 timestamp when the limit resets

Example Headers

X-RateLimit-Limit: 100
X-RateLimit-Remaining: 73
X-RateLimit-Reset: 2025-01-06T10:30:00.000Z

Handling Rate Limits

When you exceed the rate limit, the API returns a 429 Too Many Requests status:
{
  "error": "Rate limit exceeded"
}

Best Practices

Monitor Headers

Check X-RateLimit-Remaining to anticipate limits.

Implement Backoff

Wait until X-RateLimit-Reset before retrying.

Cache Responses

Store and reuse data that doesn’t change frequently.

Batch Requests

Combine multiple data needs into fewer API calls.

Retry Logic Example

async function fetchWithRetry(url, options, maxRetries = 3) {
  for (let i = 0; i < maxRetries; i++) {
    const response = await fetch(url, options);

    if (response.status === 429) {
      const resetTime = response.headers.get('X-RateLimit-Reset');
      const waitMs = new Date(resetTime) - Date.now();

      console.log(`Rate limited. Waiting ${waitMs}ms...`);
      await new Promise(resolve => setTimeout(resolve, Math.max(waitMs, 1000)));
      continue;
    }

    return response;
  }

  throw new Error('Max retries exceeded');
}

Optimizing API Usage

Use Filtering Parameters

Instead of fetching all data and filtering client-side, use query parameters:
# Bad: Fetch all answers, filter in code
GET /api/v1/brands/{brandId}/answers

# Good: Filter at the API level
GET /api/v1/brands/{brandId}/answers?provider=chatgpt&hasSelfMention=true&limit=50

Cache Static Data

Some data changes infrequently and can be cached:
  • Brands list: Changes rarely
  • Competitors list: Changes when you add/remove competitors
  • Topics/Tags: Changes when you modify your workspace

Use Date Ranges

Limit data retrieval to relevant time periods:
# Fetch only last 7 days instead of default 30
GET /api/v1/brands/{brandId}/performance?period=7

Need Higher Limits?

Enterprise customers can request increased rate limits. Contact us at [email protected] with your use case.