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 Dadata token = "${API_KEY}" dadata = Dadata(token) result = 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 Dadata token = "${API_KEY}" dadata = Dadata(token) result = 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 символов.
Количество запросов в день — в соответствии с тарифным планом.
Максимальная частота запросов — 30 в секунду с одного IP-адреса.
Максимальная частота создания новых соединений — 60 в минуту с одного IP-адреса.
Стоимость
Бесплатно до 10 тысяч запросов в день. Больше — в составе годовой подписки.