↑ Все API

API: отделения Почты России

Если интернет-магазин доставляет покупки почтой по России, хорошо бы подсказать человеку, где и когда он может забрать посылку. В этом поможет справочник почтовых отделений — в нём есть точный адрес, координаты и часы работы отделения, а ещё отметка, если оно временно закрыто.

«Дадата» помогает найти точное отделение по индексу или ближайшее — по координатам.

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

Полнотекстовый поиск (suggest)

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

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Token ${API_KEY}" \
  -d '{ "query": "дежнева 2а" }' \
  https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/postal_unit
var url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/postal_unit";
var token = "${API_KEY}";
var query = "дежнева 2а";

var options = {
    method: "POST",
    mode: "cors",
    headers: {
        "Content-Type": "application/json",
        "Accept": "application/json",
        "Authorization": "Token " + token
    },
    body: JSON.stringify({query: query})
}

fetch(url, 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->suggest("postal_unit", "дежнева 2а");
# https://github.com/hflabs/dadata-py

from dadata import DadataAsync
token = "${API_KEY}"
dadata = DadataAsync(token)
result = await dadata.suggest("postal_unit", "дежнева 2а")

Поиск работает по полям:

  • postal_code
  • address_str

Запись справочника по идентификатору (findById)

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

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Token ${API_KEY}" \
  -d '{ "query": "127642" }' \
  https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/postal_unit
var url = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/postal_unit";
var token = "${API_KEY}";
var query = "127642";

var options = {
    method: "POST",
    mode: "cors",
    headers: {
        "Content-Type": "application/json",
        "Accept": "application/json",
        "Authorization": "Token " + token
    },
    body: JSON.stringify({query: query})
}

fetch(url, 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->findById("postal_unit", "127642");
# https://github.com/hflabs/dadata-py

from dadata import DadataAsync
token = "${API_KEY}"
dadata = DadataAsync(token)
result = await dadata.find_by_id("postal_unit", "127642")

Выборка по идентификатору работает по полям:

  • postal_code

Поиск ближайшего по координатам (geolocate)

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

curl -X POST \
  -H "Content-Type: application/json" \
  -H "Accept: application/json" \
  -H "Authorization: Token ${API_KEY}" \
  -d '{ "lat": 55.878, "lon": 37.653, "radius_meters": 1000 }' \
  https://suggestions.dadata.ru/suggestions/api/4_1/rs/geolocate/postal_unit

Фильтрация

Фильтрация работает по полям is_closed, type_code и address_kladr_id.

Фильтрация по address_kladr_id позволяет выбрать отделения из указанного города:

{
  "query": "Молодогвардейская",
  "filters": [
    {
      "address_kladr_id": "6300000100000"
    }
  ]
}

Фильтрация по is_closed позволяет отсеять закрытые отделения:

{
  "query": "105",
  "filters": [
    {
      "is_closed": false
    }
  ]
}

Поля справочника

Название Описание
value Значение одной строкой (как показывается в списке подсказок)
unrestricted_value Адрес отделения одной строкой
data.postal_code Почтовый индекс
data.is_closed true, если отделение закрыто, иначе false
data.type_code Тип отделения
data.address_str Адрес одной строкой
data.address_kladr_id КЛАДР-код населённого пункта
data.address_qc Код проверки адреса
data.geo_lat Широта
data.geo_lon Долгота
data.schedule_mon Режим работы в понедельник
data.schedule_tue Режим работы во вторник
data.schedule_wed Режим работы в среду
data.schedule_thu Режим работы в четверг
data.schedule_fri Режим работы в пятницу
data.schedule_sat Режим работы в субботу
data.schedule_sun Режим работы в воскресенье

Источник данных: Почта России

Ограничения

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

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

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

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

Стоимость

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

ajax-spinner

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

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

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

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

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