Лимиты при работе с API

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

Чтобы сделать работу лимитов более предсказуемой для партнёров, введено два показателя:

  • максимальное количество запросов в пять минут;
  • максимальное количество запросов в один час. 

Это позволяет: 

  • скорректировать пиковые нагрузки (например, когда на сайт партнёра пришло сразу много посетителей, а обращения к API завязаны на каждый заход на сайт);
  • оптимизировать в целом работу с API (например, использование партнёрами кэша и распределение обращений к API равномерно по дню).

В таблице приведены лимиты для всех методов API данных Авиасейлс и статистики Travelpayouts. 

Метод

Лимит количества запросов в пять минут

Лимит количества запросов в один час

/v1/prices/calendar

7800

72000

/v1/prices/cheap

3900

36000

/v1/prices/direct

5850

54000

/v1/prices/monthly

3900

36000

/v1/airline-directions

3900

36000

/v1/city-directions

3900

36000

/v2/prices/latest

31200

288000

/v2/prices/month-matrix

15600

144000

/v2/prices/nearest-places-matrix

3900

36000

/v2/prices/week-matrix

3900

36000

/v2/prices/special-offers

3900

36000

/data/something.json

3900

36000

/v2/statistics/balance

3900

36000

/v2/statistics/detailed-sales

3900

36000

/v2/statistics/sales

3900

36000

/v3/prices_for_dates

3900

36000

/v3/grouped_prices

3900

36000

/v3/get_special_offers

3900

36000

/statistics/v1/execute_query*

100

-

/graphql/v1/

300

2500

* execute_query имеет дополнительное ограничение в 30 запросов в минуту.

При превышении лимита в ответ на запрос придёт ошибка с кодом 429.

Например, вы используете запросы со следующими лимитами:

  • 3 900 запросов в 5 минут;
  • 36 000 запросов в 60 минут.

Если вы пошлёте больше 3 900 запросов за две минуты, то доступ к API будет заблокирован на три минуты. Если послать более 36 000 запросов за 40 минут, то доступ заблокируется на 20 минут. При этом вы будете получать ошибку с кодом 429 до тех пор, пока не пройдёт указанное время, и блокировка не будет снята. После чего доступ к API будет автоматически разблокирован. 

Настоятельно рекомендуем использовать на своей стороне кэширование данных, чтобы сократить количество запросов к API. Если вам важно знать количество отправленных запросов, реализовать это необходимо самостоятельно на вашей стороне.

Вот несколько советов, как оптимизировать запросы к API:

  • Убедитесь, что вы не отправляете лишних запросов.
  • Оптимизируйте свой код, чтобы исключить вызовы API, ответы на которые не содержат нужной информации.
  • Кэшируйте часто используемые данные на сервере или на клиенте, используя DOM хранилище. Вы также можете сохранять полученную информацию в базе данных или записывать её в файл.

Если вы давно работаете с API, перейдите на новые методы api/v3, которые содержат больше данных (а значит, вы сможете отправлять меньше запросов).

Если вы провели работы по оптимизации, а превышение лимитов всё равно происходит, напишите в нашу службу поддержки.