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

# Requests & Limits

> Blockscout API rate limits and environment variables for per-instance API keys, including IP-based defaults and plan-specific request limits.

<Info>
  PER INSTANCE API WILL BE DEPRECATED JULY 1.\
  The Blockscout PRO API is a multichain API with enhanced limits based on your plan (5 rps included in the free plan). Check our [PRO API docs](/devs/pro-api) for more info. Note that per-instance API access will be deprecated soon.
</Info>

| **Type of API key** | **Rate limit value, req/sec** | **API key is defined by env variable (if applicable)** | **Rate limit for the API key managed by env variable** | **Description** |
| - | - | - | - | - |
| No API key (by IP) | 300 req/min (default) | | `API_RATE_LIMIT_BY_IP` & `API_RATE_LIMIT_BY_IP_TIME_INTERVAL` | The default rate limit is 300 requests per minute per IP (`API_RATE_LIMIT_BY_IP=300`, `API_RATE_LIMIT_BY_IP_TIME_INTERVAL=1m`). Older instances used 3 requests per minute. This limit applies to all requests that are not from whitelisted addresses and do not use an API key. |
| Temp token | 3 | | `API_RATE_LIMIT_UI_V2_WITH_TOKEN` & `API_RATE_LIMIT_UI_V2_WITH_TOKEN_TIME_INTERVAL` | When a frontend user reaches the default IP limit, they must solve a captcha to obtain a temporary token. This token provides a personal (not per-IP) rate limit of 5 req/sec. Token TTL is configured via `API_RATE_LIMIT_UI_V2_TOKEN_TTL` |
| Individual API key | 10 | | `API_RATE_LIMIT_BY_ACCOUNT_API_KEY_TIME_INTERVAL` | An API key can be [created by the user in the My Account section](/using-blockscout/my-account/api-keys) |
| Rate limit, if IP is whitelisted | 25 | `API_RATE_LIMIT_WHITELISTED_IPS` | `API_RATE_LIMIT_BY_WHITELISTED_IP` & `API_RATE_LIMIT_BY_WHITELISTED_IP_TIME_INTERVAL` | Rate limit for requests from whitelisted IPs |
| Per explorer instance API key | 10 | `API_RATE_LIMIT_STATIC_API_KEY` | `API_RATE_LIMIT_BY_KEY` & `API_RATE_LIMIT_BY_KEY_TIME_INTERVAL` | A per-instance API key (*this feature was created before individual API keys existed and may have limited utility*) |
| No rate limit API key | ♾️ | `API_NO_RATE_LIMIT_API_KEY` | | Administrator API key |

<Check>
  The default rate limit config of each API endpoint is described [in the codebase](https://github.com/blockscout/blockscout/blob/master/apps/block_scout_web/priv/rate_limit_config.json) and can be re-defined via `API_RATE_LIMIT_CONFIG_URL` env variable. [Here](https://github.com/blockscout/blockscout/blob/master/apps/block_scout_web/rate_limits.md) you can find details on the rate limits config.
</Check>

Some of the API endpoints have their own rate limit before showing captcha to the user:

| **API endpoint** | **Number of requests per period** | **Period** |
| - | - | - |
| `api/v2/key` | ♾️ | |
| `api/v2/import/token-info` | ♾️ | |
| `api/v2/import/smart-contracts/:param` | ♾️ | |
| `api/account/v2/authenticate_via_wallet` | 1 | 1 hour |
| `api/account/v2/send_otp` | 1 | 1 hour |
| `api/v2/tokens/:param/instances/:param/refetch-metadata` | 50 | 1 hour |
| `api/v2/advanced-filters/csv` | 50 | 1 hour |
| `api/v2/tokens/:param/holders/csv` | 50 | 1 hour |
| `api/v2/addresses/:param/transactions/csv` | 50 | 1 hour |
| `api/v2/addresses/:param/token-transfers/csv` | 50 | 1 hour |
| `api/v2/addresses/:param/internal-transactions/csv` | 50 | 1 hour |
| `api/v2/addresses/:param/logs/csv` | 50 | 1 hour |
| `api/v2/addresses/:param/election-rewards/csv` | 50 | 1 hour |
| `api/v2/smart-contracts/:param/audit-reports` | 50 | 1 hour |
| `api/health/*` | 5 | 1 second |

## Disable or bypass rate limits on a self-hosted instance

If you run your own instance, you can change how rate limiting is applied:

* Set `API_RATE_LIMIT_DISABLED=true` to ignore all rate limits (available since v5.1.0). This is useful for ruling out rate limiting as the cause of intermittent frontend errors.
* Set `API_NO_RATE_LIMIT_API_KEY` to define an administrator API key that bypasses rate limits entirely (available since v6.8.0). Requests that pass this key are never throttled.
* Add trusted IPs to `API_RATE_LIMIT_WHITELISTED_IPS` to give them the higher whitelisted-IP limit.

Rate limits apply per API key type and IP, not per consumer. There is no separate toggle for frontend traffic versus external REST API traffic. To keep public API callers rate limited while exempting your own services, give your services the `API_NO_RATE_LIMIT_API_KEY` key or whitelist their IPs, and leave the default IP-based limits in place for everyone else.

See the [backend ENV variables](/setup/env-variables/backend-env-variables) page for the full list of `API_RATE_LIMIT_*` variables.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.