Запрос

Чтобы получить ответ о местоположении мобильного устройства, отправьте POST-запрос к ресурсу geolocation. Передайте данные в формате JSON:

Яндекс Локатор обработает данные из запроса в следующей последовательности:

  1. Точки доступа Wi-Fi.
  2. Сигналы сетей мобильной связи.
  3. IP-адрес.

Если Яндекс Локатор успешно определит местоположение, он вернет ответ с координатами точки и радиусом погрешности. В противном случае вы получите сообщение об ошибке.

Для API Яндекс Локатора установлен лимит на количество запросов в секунду (RPS): до 1800. Считается как сумма запросов со стороны клиента и со стороны сервера.

Стандартный запрос

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

Host: api.lbs.yandex.net
POST /geolocation

json={
   "common": {
      "version": "1.0",
      "api_key": "ABC1WU0BAAAANfFuIQIAV1pUEYIBeogyUNvVbhNaJPWeM-AAAAAAAAAAAACRXgDsaYNpZWpBczn4Lq6QmkwK6g==",
      "device_manufacturer": "samsung",
      "device_model": "SM-A125F"
   },
   "gsm_cells": [
       {
          "countrycode": 250,
          "operatorid": 2,
          "cellid": 197403650,
          "lac": 9900,
          "signal_strength": -80,
          "age": 1000
       }
   ],
   "wifi_networks": [
       {
          "mac": "2CD02D814C80",
          "signal_strength": -68,
          "age": 500,
       },
       {
          "mac": "E4AA5DE28CD0",
          "signal_strength": -60,
          "age": 500,
       }
   ],
   "ip": {
     "address_v4": "95.108.173.231"
   }
}

curl -X POST 'http://api.lbs.yandex.net/geolocation' -d 'json={"common": {"version": "1.0", "api_key": "ABC1WU0BAAAANfFuIQIAV1pUEYIBeogyUNvVbhNaJPWeM-AAAAAAAAAAAACRXgDsaYNpZWpBczn4Lq6QmkwK6g=="}, "gsm_cells": [ { "countrycode": 250, "operatorid": 2, "cellid": 197403650, "lac": 9900, "signal_strength": -80, "age": 1000} ], "wifi_networks": [ {"mac": "2CD02D814C80", "signal_strength": -68, "age": 500}, {"mac": "E4AA5DE28CD0", "signal_strength": -60, "age": 500} ], "ip": {"address_v4": "95.108.173.231"}}'

Ключи

Объект Описание Обязателен
common Метаданные запроса. Да
version Версия API Яндекс Локатора: 1.0. Да
api_key Ключ доступа к API Яндекс Локатора. Да
device_manufacturer Наименование производителя мобильного устройства. Нет
device_model Наименование модели мобильного устройства. Нет
gsm_cells Массив объектов, каждый из которых описывает одну соту. Необходим хотя бы один объект в массиве. Нет
countrycode Код страны. Да
operatorid Код сети мобильной связи. Да
cellid Идентификатор соты. Да
lac Код местоположения. Да
signal_strength Уровень сигнала, измеренный в месте нахождения мобильного устройства. Отрицательное число, выраженное в децибелах к милливатту — dBm. Элемент зарезервирован для будущего использования. Нет
age Время в миллисекундах с момента получения данных через программный интерфейс мобильного устройства. Элемент зарезервирован для будущего использования. Нет
wifi_networks Массив объектов, каждый из которых описывает одну точку доступа Wi-Fi. Необходим хотя бы один объект. Нет
mac MAC-адрес в символьном представлении без разделителей. Например: 123456789ABC. Да
signal_strength Уровень сигнала, измеренный в месте нахождения мобильного устройства. Отрицательное число, выраженное в децибелах к милливатту — dBm. Элемент зарезервирован для будущего использования. Нет
age Время в миллисекундах с момента получения данных через программный интерфейс мобильного устройства. Элемент зарезервирован для будущего использования. Нет
ip Содержит IP-адрес. Нет
address_v4 IP-адрес мобильного устройства, назначенный оператором мобильного интернета. Если IP-адрес отсутствует или некорректен, Яндекс Локатор будет использовать адрес отправителя из заголовка IP-пакета. Этот адрес может быть подменен прокси-сервером, через который прошел IP-пакет. Да

Запрос c сжатыми данными

Сожмите JSON с данными утилитой gzip и передайте его в запросе, указав заголовок Content-Type: multipart/from-data и параметр gzip с любым непустым значением.

Включите в запрос с типом multipart/from-data две части:

  1. gzip — индикатор запроса с сжатыми данными;
  2. json — параметр, содержащий сжатые данные JSON.

В каждой части запроса укажите значение одного параметра после разделителя boundary и заголовка Content-Disposition с именем параметра. Значение параметра отделите от предшествующих заголовков пустой строкой.

Отправьте POST-запрос к ресурсу geolocation.

POST /geolocation?gzip=1
Host: api.lbs.yandex.net
Accept-Encoding: identity
Content-Type: multipart/form-data; boundary=YANDEXLOCATORBOUNDARY
Content-length: 538

--YANDEXLOCATORBOUNDARY
Content-Disposition: form-data; name="gzip"

1
--YANDEXLOCATORBOUNDARY
Content-Disposition: form-data; name="json"
Content-Type: application/octet-stream
Content-Transfer-Encoding: binary

СЖАТЫЕ ДАННЫЕ
--YANDEXLOCATORBOUNDARY--

curl -X POST 'http://api.lbs.yandex.net/geolocation?gzip=1' -H 'Content-Type: multipart/form-data' -F json=@data.json.gz

Ключи

Заголовок Описание
Accept-Encoding: identity Обозначает, что содержимое запроса следует принимать в любой кодировке.
Content-Type: multipart/form-data; boundary=_разделитель_ Тип запроса для передачи файлов внутри HTTP-запроса. Разделитель boundary — произвольная строка из латинских букв и цифр.
Content-length: _целое число_ Длина запроса в байтах начиная со второй строки после этого заголовка.
Content-Disposition: form-data; name="_имя_параметра_" Начало части запроса для передачи параметра, объявленного в name. Предваряется разделителем. Значение параметра указывается после дочерних заголовков и пустой строки.
Content-Type: application/octet-stream Обозначает, что вложенные данные представляют собой файл неуказанного типа.
Content-Transfer-Encoding: binary Обозначает, что содержимое — это бинарные данные.
Предыдущая
Следующая