API: город по IP-адресу
✔️ Определяет город по IP-адресу в России. Использует IP-адрес клиента, значение из параметра ip
или заголовок X-Forwarded-For
.
✔️ Поддерживает как IPv4, так и IPv6 адреса.
✔️ Возвращает детальную информацию о городе, в том числе почтовый индекс.
Это документация для разработчиков. Определить город в демоформе, посмотреть сценарии использования и варианты подключения сервиса можно на странице «Узнать город по IP-адресу»
Как вызвать
Чтобы вызвать метод, и подтвердите почту.
Пример запроса:
POST http://suggestions.dadata.ru/suggestions/api/4_1/rs/iplocate/address{ "ip": "46.226.227.20" }
Укажите при вызове:
Content-Type: application/json
.Accept: application/json
.${API_KEY}
— API-ключ.
Тело запроса передавайте в кодировке UTF-8
.
Параметры запроса
Название | Тип | Обяз.? | По умолч. | Описание |
---|---|---|---|---|
ip | string | ✓ | IP-адрес | |
language | string | ru | На каком языке вернуть результат (ru / en) | |
division | string | ADMINISTRATIVE | Административное либо муниципальное деление |
Что в ответе
Ответ:
{ "location": { "value": "г Краснодар", "unrestricted_value": "350000, Краснодарский край, г Краснодар", "data": { "postal_code": "350000", "country": "Россия", "country_iso_code": "RU", "federal_district": "Южный", "region_fias_id": "d00e1013-16bd-4c09-b3d5-3cb09fc54bd8", "region_kladr_id": "2300000000000", "region_iso_code": "RU-KDA", "region_with_type": "Краснодарский край", "region_type": "край", "region_type_full": "край", "region": "Краснодарский", "area_fias_id": null, "area_kladr_id": null, "area_with_type": null, "area_type": null, "area_type_full": null, "area": null, "city_fias_id": "7dfa745e-aa19-4688-b121-b655c11e482f", "city_kladr_id": "2300000100000", "city_with_type": "г Краснодар", "city_type": "г", "city_type_full": "город", "city": "Краснодар", ... } } }
Если город не удалось определить, ответ будет таким:
{ "location": null }
Точность определения города
Определение города по IP-адресу — не слишком надёжный способ. Точность составляет 60–80%. Если «Дадата» неправильно определила город или не определила его вовсе — сообщите об этом через специальную форму. Мы исправляем ошибки регулярно.
Как не исчерпать лимит запросов
Если просто подключить API «город по IP» на сервере, можно очень быстро выйти за бесплатный лимит в 10 000 запросов в сутки. Причины у этого две:
- Когда человек ходит по страницам сайта, каждая страница заново пытается определить город.
- Большое количество запросов генерируют поисковые боты (Яндекс, Гугл, Бинг).
Чтобы решить обе проблемы, мы рекомендуем:
- Запоминать результат, который вернула «Дадата» — и не делать повторных вызовов на других страницах.
- Вызывать API из браузера, а не с сервера — это защитит от ботов.
Примеры вызова
Ограничения
Длина запроса (параметр query
) — не более 300 символов.
Количество запросов в день — в соответствии с тарифным планом.
Максимальная частота запросов — 30 в секунду с одного IP-адреса.
Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.
Стоимость
Метод бесплатный до 10 000 запросов в день. Больше — в составе годовой подписки.