Rate Limiting

The Bitcompare API enforces per-endpoint rate limits to ensure fair usage.

Default limits

Rate limits scale with your plan. Unauthenticated requests use the Free tier by IP address; authenticated requests use the plan attached to your API key.

PlanRequests / minuteRequests / month
Free (no key, per IP)3010,000
Starter6050,000
Growth120200,000
Pro3001,000,000
EnterpriseCustomCustom

Chart endpoints are additionally capped at 30 req/min on the Free tier; paid plans use their standard per-minute limit. See pricing for the full feature comparison.

Rate-limit headers

Every response includes standard rate-limit headers so you can monitor your usage:

Rate-limit response headers

X-RateLimit-Limit: 120
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 2026-02-25T12:05:00.000Z
Retry-After: 12
  • Name
    X-RateLimit-Limit
    Type
    integer
    Description

    The maximum number of requests allowed in the current window.

  • Name
    X-RateLimit-Remaining
    Type
    integer
    Description

    The number of requests remaining in the current window.

  • Name
    X-RateLimit-Reset
    Type
    string
    Description

    ISO 8601 timestamp when the current window resets.

  • Name
    Retry-After
    Type
    integer
    Description

    Number of seconds to wait before retrying (only present on 429 responses).

Handling 429 responses

When you exceed the limit, the API returns a 429 Too Many Requests status. Implement exponential backoff or respect the Retry-After header.

429 response body

{
  "error": {
    "message": "Too many requests, please try again later",
    "code": "RATE_LIMIT_EXCEEDED"
  },
  "retryAfter": 12
}

Best practices

  1. Cache responses — prices and rates update every few seconds; there's no need to poll more frequently.
  2. Use WebSockets — for real-time price data, connect to the WebSocket endpoint instead of polling.
  3. Batch requests — the symbol resolution endpoint supports batch resolution of up to 100 symbols in a single request.
  4. Respect headers — check X-RateLimit-Remaining before making additional requests.

Was this page helpful?