HTTP 429 Too Many Requests — как обойти лимит запросов

  • Обновлено
  • Чтение ≈ 2 минуты
  • Нужны права администратора

Краткий ответ

Сократите частоту запросов, используйте Retry-After и кэш.

В этой статье
  1. Что означает ошибка
  2. Причины и решения
  3. Пошаговое решение
  4. Как работает лимит
  5. Рекомендации для пользователей
  6. Рекомендации для разработчиков

#Что означает ошибка

Сообщение
429

Код 429 Too Many Requests сообщает: клиент отправил слишком много запросов за короткое время, и сервер временно отказывается их обрабатывать. Это не поломка, а защитный механизм — ограничение частоты запросов (rate limit), которое есть у большинства API, поисковых систем, CDN и защит от ботов.

Для обычного пользователя 429 чаще всего встречается при частом обновлении страницы, использовании расширений, автоматически запрашивающих данные, или VPN, на котором много людей делят один IP. Для разработчика — при интеграции с чужим API без учёта лимитов.

Сократите частоту запросов, используйте Retry-After и кэш.

#Причины и решения

Возможная причинаКак узнатьЧто делать
Лимит APIПревышен.Проявляется как «429» или близкий по смыслу сбой.Замедлитесь.
Нет кэшаЛишние запросы.Проявляется как «429» или близкий по смыслу сбой.Кэшируйте.
Много клиентовIP.Проявляется как «429» или близкий по смыслу сбой.Очередь.
БотЗащита.Проявляется как «429» или близкий по смыслу сбой.Проверьте.

#Пошаговое решение

  1. Прочитайте Retry-AfterРазработчику API: откройте терминал на своём компьютере и выполните curl -i https://api.example.com/resource, заменив адрес на ваш разрешённый endpoint. Найдите статус HTTP 429 и заголовок Retry-After; он может быть числом секунд или датой. Не повторяйте запрос до указанного срока. Дополнительные заголовки лимитов (RateLimit-*, X-RateLimit-*) зависят от API и могут отсутствовать.
  2. Добавьте паузыВ клиенте API реализуйте обработку 429: если есть Retry-After, дождитесь указанного времени; иначе примените ограниченные повторы с нарастающей задержкой и случайной добавкой, с верхним пределом попыток. Для запросов, создающих или оплачивающих ресурсы, используйте предусмотренные API ключи идемпотентности, чтобы не создать дубли. Не отправляйте запросы в бесконечном цикле и не пытайтесь обойти ограничения чужого сервиса.
  3. Кэшируйте ответыТолько при разрешении API и соблюдении правил обработки данных: сохраняйте ответы на срок, разрешённый поставщиком, чтобы не повторять одинаковые GET-запросы. Если API поддерживает ETag, отправляйте If-None-Match с ранее полученным значением. Уменьшите параллельность и объединяйте запросы, только если это предусмотрено документацией. Успех — меньше ответов 429 при сохранении корректности данных.

#Как работает лимит

Сервер считает запросы с вашего IP-адреса, ключа API или токена в окне времени (например, 60 запросов в минуту). При превышении он возвращает 429 и, как правило, заголовок Retry-After с числом секунд ожидания, а также X-RateLimit-Remaining и X-RateLimit-Reset с остатком лимита.

#Рекомендации для пользователей

Подождите минуту-две и не обновляйте страницу повторно: каждая попытка может продлевать блокировку. Отключите расширения, массово обращающиеся к сайту. Если вы за общим NAT или VPN, смените сервер, так как лимит делят все, кто выходит через тот же адрес.

#Рекомендации для разработчиков

Реализуйте экспоненциальную задержку с джиттером (1, 2, 4, 8 секунд плюс случайная добавка), кешируйте ответы, объединяйте мелкие запросы в пакетные и читайте документацию API про лимиты. На своей стороне ограничивайте нагрузку через nginx (limit_req) и отдавайте Retry-After, чтобы клиенты понимали, когда повторить.

Linux · Терминал (Bash)Команда
Показывает заголовки ответа, включая Retry-After и X-RateLimit-*.
curl -I https://api.example.com/resource
NginxС осторожностьюПрава администратора
Пример ограничения частоты запросов в nginx: 10 запросов в секунду с всплеском до 20.
limit_req_zone $binary_remote_addr zone=api:10m rate=10r/s;
limit_req zone=api burst=20 nodelay;

Команда может изменить состояние системы или её настройки. Проверьте параметры и последствия перед запуском.

Так эту ошибку тоже называют

Источники и обновления

Последнее обновление статьи: 1 ноября 2026. Версии программ и интерфейсы меняются — если шаги не совпадают с вашей версией, сверяйтесь с документацией производителя.