Лимиты запросов
Как работают лимиты запросов, доступ к данным по тарифам и как обрабатывать ответы 429.
GET /api/v1/limits, чтобы программно проверить свой текущий тариф и лимиты.| Тариф | Запросов / мин | Всплеск / с |
|---|---|---|
| Builder (включая 3-дневный бесплатный пробный период) | 250 | 12 |
| Pro | 750 | 40 |
| Enterprise | Индивидуально | Индивидуально |
Поминутный лимит использует скользящее окно. Всплески — алгоритм token bucket.
На тарифе Builder — включая 3-дневный бесплатный пробный период, который полностью соответствует Builder, — доступ ограничен самыми свежими рынками. У тарифов Pro и Enterprise неограниченный доступ ко всем рынкам и снимкам.
| Тип рынка | Builder | Pro / Enterprise |
|---|---|---|
| 5m | 4,100 | Без ограничений |
| 15m | 1,400 | Без ограничений |
| 1hr | 350 | Без ограничений |
| 4hr | 85 | Без ограничений |
| 24hr | 14 | Без ограничений |
Если запрос списка превышает ограничение вашего тарифа, лимит в ответе урезается и добавляется поле warning.
Количество активных API-ключей зависит от вашего тарифа. Отозванные и истёкшие ключи в лимит не засчитываются.
Каждый ответ содержит заголовки лимитов запросов, чтобы вы могли отслеживать использование в реальном времени.
X-RateLimit-Limit: 250
X-RateLimit-Remaining: 237
X-RateLimit-Reset: 1740800060Обработка ответов 429
При превышении лимита запросов API возвращает код статуса 429 с заголовком Retry-After, указывающим, сколько секунд нужно подождать. Тело ответа содержит поля error, message и retry_after.
import time
import requests
def fetch_with_retry(url, headers, max_retries=3):
for attempt in range(max_retries):
response = requests.get(url, headers=headers)
if response.status_code == 429:
wait = int(response.headers.get("Retry-After", 2 ** attempt))
time.sleep(wait)
continue
return response
raise Exception("Rate limit exceeded after retries")Если вы обращаетесь к рынку или его снимкам за пределами окна данных вашего тарифа, API возвращает 403 Forbidden. Повысьте тариф или обратитесь к более свежему рынку.
{
"error": "Forbidden",
"message": "Your builder plan only includes the most recent markets for this type. Upgrade for full access.",
"tier": "builder"
}