> ## Documentation Index
> Fetch the complete documentation index at: https://docs.polyhistorical.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Rate Limits

> Understanding API rate limits and how to handle them

# Rate Limits

API rate limits vary by plan. Limits are enforced on a per-day basis and reset at midnight UTC.

## Limits by plan

| Plan           | Requests/min | Requests/day |
| -------------- | ------------ | ------------ |
| Starter (Free) | 60           | 1,000        |
| Pro            | 300          | 50,000       |
| Enterprise     | Custom       | Unlimited    |

## Rate limit headers

Every API response includes rate limit headers:

| Header                  | Description                                         |
| ----------------------- | --------------------------------------------------- |
| `X-RateLimit-Limit`     | Your daily request limit                            |
| `X-RateLimit-Remaining` | Requests remaining today                            |
| `X-RateLimit-Reset`     | Unix timestamp when the limit resets (midnight UTC) |
| `X-Tier`                | Your current plan tier                              |

<Note>
  Binance Spot and Binance Futures endpoints are available on Pro and Suite plans only, and are tracked against the same plan rate limits as the rest of the API.
</Note>

## Feature access by plan

| Feature                        | Starter (Free)         | Pro      | Enterprise |
| ------------------------------ | ---------------------- | -------- | ---------- |
| Polymarket BTC markets         | Limited recent markets | Included | Included   |
| Polymarket ETH and SOL markets | --                     | Included | Included   |
| Binance Spot APIs              | --                     | Included | Included   |
| Binance Futures APIs           | --                     | Included | Included   |

## Handling 429 responses

When you exceed the rate limit, the API returns a `429 Too Many Requests` status with a `Retry-After` header.

```json theme={null}
{
  "success": false,
  "error": {
    "code": "RATE_LIMIT_EXCEEDED",
    "message": "Daily request limit exceeded. Upgrade your plan for higher limits."
  }
}
```

### Best practices

<AccordionGroup>
  <Accordion title="Respect the Retry-After header">
    The `Retry-After` header tells you how many seconds to wait before retrying. Implement exponential backoff.
  </Accordion>

  <Accordion title="Cache responses">
    Market data doesn't change between snapshots. Cache responses for the snapshot interval (e.g., 5 minutes for 5m markets).
  </Accordion>

  <Accordion title="Use pagination wisely">
    Fetch only the data you need. Use `limit` and `offset` to paginate through large result sets.
  </Accordion>

  <Accordion title="Monitor your usage">
    Check your usage in the [Dashboard](https://polyhistorical.com/dashboard) or read the rate limit headers.
  </Accordion>
</AccordionGroup>

## Need higher limits?

[Upgrade to Pro](https://polyhistorical.com/pricing) for 50x more daily requests, or [contact us](mailto:enterprise@polyhistorical.com) for custom Enterprise limits.
