Запрос
Чтобы получить ответ о местоположении мобильного устройства, отправьте POST-запрос к ресурсу geolocation
. Передайте данные в формате JSON:
Яндекс Локатор обработает данные из запроса в следующей последовательности:
- Точки доступа Wi-Fi.
- Сигналы сетей мобильной связи.
- 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
две части:
gzip
— индикатор запроса с сжатыми данными;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 |
Обозначает, что содержимое — это бинарные данные. |
Описание
Метаданные запроса.
Обязателен
Да
Описание
Версия API Яндекс Локатора: 1.0
.
Обязателен
Да
Описание
Ключ доступа к API Яндекс Локатора.
Обязателен
Да
Описание
Наименование производителя мобильного устройства.
Обязателен
Нет
Описание
Наименование модели мобильного устройства.
Обязателен
Нет
Описание
Массив объектов, каждый из которых описывает одну соту. Необходим хотя бы один объект в массиве.
Обязателен
Нет
Описание
Код страны.
Обязателен
Да
*Описание
Код сети мобильной связи.
Обязателен
Да
Описание
Идентификатор соты.
Обязателен
Да
Описание
Код местоположения.
Обязателен
Да
Описание
Уровень сигнала, измеренный в месте нахождения мобильного устройства. Отрицательное число, выраженное в децибелах к милливатту — dBm. Элемент зарезервирован для будущего использования.
Обязателен
Нет
Описание
Время в миллисекундах с момента получения данных через программный интерфейс мобильного устройства. Элемент зарезервирован для будущего использования.
Обязателен
Нет
Описание
Массив объектов, каждый из которых описывает одну точку доступа Wi-Fi. Необходим хотя бы один объект.
Обязателен
Нет
Описание
MAC-адрес в символьном представлении без разделителей. Например: 123456789ABC
.
Обязателен
Да
Описание
Содержит IP-адрес.
Обязателен
Нет
Описание
IP-адрес мобильного устройства, назначенный оператором мобильного интернета.
Если IP-адрес отсутствует или некорректен, Яндекс Локатор будет использовать адрес отправителя из заголовка IP-пакета. Этот адрес может быть подменен прокси-сервером, через который прошел IP-пакет.
Обязателен
Да
Обозначает, что содержимое запроса следует принимать в любой кодировке.
Тип запроса для передачи файлов внутри HTTP-запроса.
Разделитель boundary
— произвольная строка из латинских букв и цифр.
Длина запроса в байтах начиная со второй строки после этого заголовка.
Начало части запроса для передачи параметра, объявленного в name
. Предваряется разделителем.
Значение параметра указывается после дочерних заголовков и пустой строки.
Обозначает, что вложенные данные представляют собой файл неуказанного типа.
Обозначает, что содержимое — это бинарные данные.