Клуб API Карт

Ограничения API Яндекс.Карт для пользователей геокодера и маршрутизатора

ymapsapi
28 июля 2015, 16:52

Сегодня речь пойдёт об изменениях в работе HTTP и JS Геокодера, а также об условиях использования API Яндекс.Карт.

В сентябре для пользователей HTTP Геокодера, отправляющих запросы без ключа, а также для пользователей JS Геокодера, не передающих реферер или ключ, вступят в силу территориальные ограничения. Геокодирование будет доступно в пределах России, Украины, Беларуси, Казахстана, Грузии, Абхазии, Южной Осетии, Армении, Азербайджана, Молдовы, Туркмении, Таджикистана, Узбекистана, Киргизии и Турции. Если вам нужен поиск за границами этих стран, необходимо получить ключ и отправлять запросы с ним.

Для тех, кто внимательно читал Пользовательское соглашение API Яндекс.Карт, не секрет, что существует ограничение на количество запросов к функции геокодирования и построения маршрутов. Максимально допустимо делать в сутки не более 25 000 запросов к JavaScript и HTTP геокодеру в сумме и не более 25 000 запросов к маршрутизатору.

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

При правильной реализации интеграции с Яндекс.Картами превысить лимит в 25 000 запросов к геокодеру в сутки достаточно сложно. Ваш сайт должен быть очень популярным, а интеграция достаточно сложной, чтобы вы не укладывались в лимит. Например, сайт Райффайзенбанка укладывается в лимит, несмотря на то, что отображает множество отделений банка, банкоматов и терминалов по России.

Мы рекомендуем кэшировать запросы к геокодеру на срок до 30 дней. Обратите внимание — пользовательское соглашение запрещает сохранять координаты и адреса в базу навсегда. Мы, как и вы, стараемся отвечать за качество предоставляемой подложки карт и геообъектов, поэтому для нас очень важно, чтобы посетители любых сайтов видели свежую и актуальную информацию на картах.

Евангелист API Яндекс.Карт Дмитрий Поклонский написал пример проксирования запросов к геокодеру через собственный сервер с кэшированием результатов. Вы можете разработать свою реализацию или воспользоваться готовым кодом. Пример доступен на Github.

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

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

15 комментариев

Здравствуйте!

 

Максимально допустимо делать в сутки не более 25 000 запросов к JavaScript и HTTP геокодеру в сумме и не более 25 000 запросов к маршрутизатору.

Каким способом можно определить количество сделанных запросов и/или сколько осталось до окончания лимита?

Здравствуйте! Отслеживать статистику вы можете на своей стороне, для пользователей бесплатного API Яндекс, к сожалению, не предоставляет статистику по запросам.
Добрый день!

А как будет вести себя сервер в случае превышения допустимого лимита? Будет ли возвращаться сообщения с соответствующей ошибкой?
В случае превышения придёт письмо с предупреждением и предложением перейти на платную версию, если превышение по бесплатной версии API сохранится, доступ будет заблокирован.
Добрый день. Делаю сервис отзывов о жилье. Жельё идентифицируется по адресу с использованием геокодера (для поддержки различных написаний, а также устарешвих названий). Могу ли я в случае превышения платить, например, за каждую 1000 запросов?
Oleg,
на данный момент есть только те тарифы, которые описаны на нашем сайте. Рекомендуем Вам оценить ожидаемые объемы запросов и попробовать оптимизировать код (в частности для геокодера разрешено временное кеширование).
Если Вы не уложитесь в 25 000 запросов в сутки, обратитесь с Вашим вопросом по адресу: paid-api-maps@yandex-team.ru и мы поможем подобрать оптимальные условия.
ymapsapi,
с тарифами уже ознакомлен, но для моего скромного стартапа они пока неподъёмны. Если будет превышение, напишу на почту. Спасибо!
Добрый вечер!
В случае блокировки, через сколько она снимется? Через 24 часа?
Здравствуйте! IP-адрес нашей организации (роутера, через который мы выходим в интернет, а не нашего сайта) блокирован за превышение лимита по запросам к Яндекс.Картам. Но непонятно, каким образом можно было превысить лимит в 25000 запросов с двух десятков компьютеров? И это при том, что напрямую на сайт Яндекс.Карты заходов практически нет.
Солтан Бийгишиев
4 мая, 20:00
Почему приходят запросы на превышение  лимита запросов к сервису карте яндекс хотя у нас запросы составляют от 300-500 запросов в сутки (для бесплатной версии).  
Солтан Бийгишиев,
какие операции учитываются в лимите, Вы можете прочитать в документации. Если после этого у Вас останутся вопросы, пожалуйста, напишите нам через форму обратной связи или по адресу, указанному на той же странице: в письме потребуется больше деталей: адрес сервиса, IP адреса и какую ошибку Вы видите. Так мы сможем предоставить Вам расширенную статистику и посоветовать способы решения проблемы. 
Вы пишете, что запрещено сохранять адреса и координаты в базу данных навсегда. А на какое время можно?
papuska,
 В базу сохранять вообще не желательно. Лучше проксировать запросы в геокодер через свой сервер с кешированием. т.е. на клиенте всегда вызывается geocode, но с кастомным провайдером. Этот провайдер мультиплексирует запросы (собирает все вызовы geocode по таймауту в один и отправляет на ваш сервер). Ваш сервер разбирает запрос и смотрит какие из запросов есть в кеше, а каких нет, запрашивает отсутствующие в кеше адреса у Яндекса и кладет в кеш, затем возвращает клиенту.


Вот пример такой реализации.
Кешировать рекомендуется не более чем на месяц
dimik,
так запрещено или нежелательно?
Просто тут написано:

"Данные, полученные средствами API, нельзя сохранять. Например, нельзя один раз получить данные геокодера и затем сохранить их для дальнейшего использования."
Правильно я понимаю, я могу кешировать результаты в течение 30 дней. А могу ли я хранить в базе данных 30 дней?
papuska,
Мы не регламентируем, где именно хранить кеш. Использовать базу для кеширования, как мне кажется, неудобно. Мало в каких базах есть поддержка TTL для записей. Обычно для кеширования лучше использовать специализированные инструменты типа Redis или Memcached, но не БД