↑ Все API

Город по IP-адресу

✔️ Определяет город по IP-адресу в России. Использует IP-адрес клиента, значение из параметра ip или заголовок X-Forwarded-For.

✔️ Поддерживает как IPv4, так и IPv6 адреса.

✔️ Возвращает детальную информацию о городе, в том числе почтовый индекс.

Как вызвать

Чтобы вызвать метод, зарегистрируйтесь и подтвердите почту.

Пример запроса:

curl -X GET \
  -H "Accept: application/json" \
  -H "Authorization: Token ${API_KEY}" \
  https://suggestions.dadata.ru/suggestions/api/4_1/rs/iplocate/address?ip=46.226.227.20
// https://github.com/hflabs/dadata-csharp

var token = "${API_KEY}";
var api = new SuggestClientAsync(token);
var result = await api.Iplocate("46.226.227.20");
// https://github.com/webdeskltd/dadata

token := "${API_KEY}"
dadata := dadata.NewDaData(token, "")
result, err := dadata.GeoIP("46.226.227.20")
var url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/iplocate/address?ip=";
var token = "${API_KEY}";
var query = "46.226.227.20";

var options = {
    method: "GET",
    mode: "cors",
    headers: {
        "Content-Type": "application/json",
        "Accept": "application/json",
        "Authorization": "Token " + token
    }
}

fetch(url + query, options)
.then(response => response.text())
.then(result => console.log(result))
.catch(error => console.log("error", error));
// https://github.com/hflabs/dadata-php

$token = "${API_KEY}";
$dadata = new \Dadata\DadataClient($token, null);
$result = $dadata->iplocate("46.226.227.20");
# https://github.com/hflabs/dadata-py

from dadata import DadataAsync
token = "${API_KEY}"
dadata = DadataAsync(token)
result = await dadata.iplocate("46.226.227.20")

Параметры запроса

Название Тип Обяз.? По умолч. Описание
query string Текст запроса
count number 10 Количество результатов (максимум — 20)
language string ru На каком языке вернуть результат (ru / en)

Что в ответе

Ответ:

{
    "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 запросов в сутки. Причины у этого две:

  1. Когда человек ходит по страницам сайта, каждая страница заново пытается определить город.
  2. Большое количество запросов генерируют поисковые боты (Яндекс, Гугл, Бинг).

Чтобы решить обе проблемы, мы рекомендуем:

  1. Запоминать результат, который вернула «Дадата» — и не делать повторных вызовов на других страницах.
  2. Вызывать API из браузера, а не с сервера — это защитит от ботов.

Примеры вызова

Ограничения

Длина запроса (параметр query) — не более 300 символов.

Количество запросов в день — в соответствии с тарифным планом.

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

Максимальная частота создания новых соединений — 60 в минуту.

Стоимость

Метод бесплатный до 10 000 запросов в день. Больше — в составе годовой подписки.

ajax-spinner

Зарегистрируйтесь, чтобы подключить API

до 10 тыс. запросов в день — бесплатно

чтобы обращаться к вам в письмах

Регистрируясь, вы принимаете публичную оферту

Уже зарегистрированы? Войти