дата быстрый ввод адреса

API подсказок по адресам

Ищет адреса по любой части адреса от региона до дома («тверская нижний 12» → «Нижегородская обл, г Нижний Новгород, ул Тверская, д 12»). Также ищет по почтовому индексу («105568» → «г Москва, ул Магнитогорская»).

Что умеет и не умеет

✔️ Работает по всем странам мира (по России до квартиры, по Белоруссии до дома, по остальным странам — до города). Ищет и показывает результаты как на русском языке («Самара, пр-кт Металлургов»), так и на английском («Russia, gorod Samara, prospekt Metallurgov»).

✔️ Находит актуальные адреса по историческим названиям (Свердловск → Екатеринбург) и синонимам (Питер → Санкт-Петербург).

✔️ Ищет по частичному совпадению («москва болот» → «г Москва, Болотная наб»), но только в последнем слове запроса («мос болот» не найдет).

✔️ Исправляет опечатки («самара авиционная») и запросы в неправильной раскладке («vjcrdf» → «москва»).

✔️ Раскладывает выбранный адрес на гранулярные части (от региона до квартиры).

✔️ Поддерживает гранулярные подсказки по отдельным частям адреса (регионы, города, улицы, дома).

✔️ Подсказывает адреса в конкретных регионах, районах, городах и населенных пунктах. Понимает названия («Петергоф»), коды КЛАДР («7800000800000») и ФИАС («8f238984-812b-4bb1-850b-49749fb5c56d»).

✔️ Учитывает, где вы находитесь (в связке с методом город по IP-адресу).

❌ Автоматически (без участия человека) обработать адреса из базы или файла.

❌ Транслитерировать (moskva suhonskaja 11 → 127642, г Москва, ул Сухонская, д 11).

Подсказки не подходят для автоматической обработки адресов. Они предлагают варианты, но не гарантируют, что угадали правильно. Поэтому окончательное решение всегда должен принимать человек.

Для автоматической обработки и транслитерации используйте API Стандартизации

Как вызвать

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

Укажите при вызове:

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

Название Тип Обяз.? По умолч. Описание
query string Текст запроса
count number 10 Количество результатов (максимум — 20)
language string ru На каком языке вернуть результат (ru / en)
locations array [object] Ограничение по родителю (страна, регион, район, город, улица)
locations_geo array [object] Ограничение по радиусу окружности
locations_boost array [object] Приоритет города при ранжировании
from_bound
to_bound
object Гранулярные подсказки по адресу

Что в ответе

Объект с массивом подсказок в поле suggestions :

Идентификатор OpenStreetMap для Белоруссии.
Для остальных стран — не заполняется.

data.fias_level Уровень детализации, до которого адрес найден в ФИАС: data.kladr_id Код КЛАДР data.geoname_id Идентификатор объекта в базе GeoNames. Для российских адресов не заполняется. data.capital_marker Признак центра района или региона: data.okato Код ОКАТО data.oktmo Код ОКТМО data.tax_office Код ИФНС для физических лиц data.tax_office_legal Код ИФНС для организаций data.history_values[ ] Список исторических названий объекта нижнего уровня.
Если подсказка до улицы — это прошлые названия этой улицы, если до города — города. Дополнительные поля, заполняются в зависимости от тарифа
Заполняются при выборе конкретной подсказки. До этого они пустые. Все тарифы data.geo_lat Координаты: широта data.geo_lon Координаты: долгота data.qc_geo Код точности координат: data.fias_code Иерархический код адреса в ФИАС (СС+РРР+ГГГ+ППП+СССС+УУУУ+ДДДД) data.fias_actuality_state Признак актуальности адреса в ФИАС data.city_area Административный округ (только для Москвы) «Расширенный» и «Максимальный» data.beltway_hit Внутри кольцевой? data.beltway_distance Расстояние от кольцевой в километрах Только «Максимальный» data.flat_area Площадь квартиры data.square_meter_price Рыночная стоимость м² data.flat_price Рыночная стоимость квартиры data.timezone Часовой пояс data.metro[ ] Список ближайших станций метро (до трёх штук) └ name — название станции └ line — название линии └ distance — расстояние до станции в километрах Зарезервированы для автоматической обработки адресов через API стандартизации data.qc_complete не заполняется data.qc_house не заполняется data.qc не заполняется data.source не заполняется data.unparsed_parts не заполняется

Координаты есть у 97% домов в Москве, 91% в Санкт-Петербурге, 69% в других городах-миллиониках и 47% по остальной России.

Площадь и стоимость есть у 70% квартир в России.

Коды ответа на запрос

HTTP-код ответа Описание
200 Запрос успешно обработан
400 Некорректный запрос (невалидный JSON или XML)
401 В запросе отсутствует API-ключ
403 В запросе указан несуществующий API-ключ
Или не подтверждена почта
Или исчерпан дневной лимит по количеству запросов
405 Запрос сделан с методом, отличным от POST
413 Слишком большая длина запроса или слишком много условий
429 Слишком много запросов в секунду или новых соединений в минуту
5xx Произошла внутренняя ошибка сервиса

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

Гранулярные подсказки (отдельно регион, отдельно город, отдельно улица)

Ограничения

Для иностранных адресов заполнен ограниченный набор полей, вне зависимости от тарифного плана: почтовый индекс, страна, регион, населенный пункт, часовой пояс и геокоординаты. Прочие поля — пустые.

Количество условий в параметрах locations и locations_boost — не более 10.

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

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

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

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

Частые вопросы

По адресам

Да, есть подсказки по всем городам мира. Чтобы их включить, передайте параметр country = «*» :

Как включить подсказки на английском языке (транслитом)?

Передайте параметр language = «en» :

Как часто обновляется справочник адресов (ФИАС)?

Один раз в неделю, на выходных.

Почему индекс неправильный — не такой, как у Почты России?

Дадата работает по объединенному справочнику налоговой службы (ФИАС) и Почты России. В нем исправлены более 7 000 некорректных и отсутствующих индексов.

К сожалению, справочник индексов Почты детализирован только до населенных пунктов. Привязки к улицам и домам нет. Поэтому все-все индексы исправить не удалось.

Если получили от Дадаты неправильный индекс — отправьте адрес через специальную форму. Мы исправляем ошибки ежемесячно.

Почему подсказки не возвращают геокоординаты и район города?

Подсказки возвращают геокоординаты и район после того, как человек выбрал конкретный адрес из списка.

Почему подсказки не возвращают площадь квартиры, ближайшее метро и часовой пояс?

Эти поля возвращаются только для тарифа «Максимальный».

Почему подсказки не возвращают коды качества?

Подсказки в принципе не возвращают коды качества, потому что не занимаются разбором адресов. Для этого есть стандартизация.

Почему на картах дом есть, а в подсказках — нет?

Подсказки используют справочник адресов налоговой службы (ФИАС). В нем нет некоторых реально существующих домов и строений. К сожалению, более полной базы, чем ФИАС, просто не существует.

Чтобы добавить дом в подсказки, отправьте его через специальную форму. Мы пополняем справочник ежемесячно.

Общие

Подсказки перестанут подсказывать ツ До начала нового дня, затем снова заработают.

10 000 запросов считаются суммарно по всем видам подсказок: адреса, ФИО, организации, банки, емейлы.

Стоимость

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

Источник

Как устроены адресные подсказки «Дадаты»

«Дадата» с 2014 года пилит «Подсказки». Они помогают быстро и без ошибок вводить контактные данные: адреса, реквизиты банков и компаний, емейлы — вот это все.

Штука устроена затейливо, и мы решили о ней рассказать. Возьмем подсказки по адресам, потому что они самые сложные.

Справочники и индексация

«Подсказки» знают, что подсказывать, потому что у них есть гигантские справочники. Хоть статья эта о подсказках по адресам, для пользы дела перечислю и другие справочники «Дадаты».

Искать что-то в неподготовленном справочнике — дело долгое и неблагодарное. Поэтому мы берем чудесную библиотеку Lucene и превращаем исходные данные в поисковый индекс.

Поисковый индекс — такой формат, при котором находить информацию можно оооочень быстро.

Физически индекс представляет из себя набор двух типов файлов:

Индекс и данные по адресам в сумме занимают 20 гигабайт. По компаниям примерно столько же, а остальные весят меньше.

Из официальных справочников для экономии убираем данные, по которым не ищем и которые не возвращаем. Также вычищаем дубли и очевидные ошибки. Например, в индексе по адресам нет:

Поиск адекватных подсказок

«Подсказки» работают довольно заковыристо. Для простоты разобью процесс на этапы и расскажу о каждом подробнее. Если останутся вопросы, спрашивайте в комментариях.

1. Поехали: человек вводит символы в поле «Подсказок».

Каждый новый символ запускает серверный запрос с новыми параметрами. Частоту запросов можно подкрутить, об этом дальше

2. Плагин «Подсказок» собирает запрос. Между человеком и сервером трудится диспетчер — jQuery-плагин «Подсказок» (исходный код на GitHub).

Плагин принимает данные для поиска, упаковывает в запрос и передает на сервер.

От себя плагин добавляет, сколько адресов вернуть. Число задают как параметр при интеграции «Подсказок». Если количество не указали, «Подсказки» возвращают 10 результатов. Больше 20 просить бесполезно — вернутся только 20 вариантов.

Также плагин передает параметры фильтрации, их тоже задают при интеграции «Подсказок». Вот какие фильтры существуют:

А еще есть такая штука как geoboost. Похожа на ограничение по родителю, но влияет только на ранжирование адресов. Хотите, чтобы омские улицы стояли выше московских — пожалуйста.

«Яндекс.Деньги» по умолчанию предлагают улицы Москвы. Ограничение на город настраивают через параметры фильтрации «Подсказок»

По умолчанию в плагине включена геолокация: он передает на сервер местоположение пользователя. Это тоже параметр поиска.

При интеграции можно регулировать задержку запросов к серверу. Например, поставили задержку 100 миллисекунд. Если некий виртуоз за 100 миллисекунд вбил четыре символа, на сервер уйдет один запрос с четырьмя новыми символами. А не четыре запроса по одному.

Плагин работает в IE начиная с версии 10 и всех нормальных браузерах. Еще ему нужен jQuery 1.10+.

3. Проверяем кэш. Когда запрос приходит на сервер, «Подсказки» первым делом смотрят в кэш. Ищут там совпадение по всем параметрам запроса до единого.

Кэширование спасает от коротких запросов вроде «М», «Мо», «С». Таких однотипных комбинаций приходит колоссальное количество. Поскольку каждая буква — это отдельный запрос, кэширование защищает сервер от миллионов обращений к поисковому индексу.

Кэш целиком помещается в оперативной памяти, в нем лежит 100 000 результатов.

4. Ищем подходящие подсказки в индексе. Если в кэше ничего подходящего нет, «Подсказки» направляются в поисковый индекс.

«Подсказки» ищут адреса́ по:

Алгоритм подразумевает, что неполное или ошибочное в запросе только последнее слово. Если человек написал «Москва Турч», «Подсказки» ищут «Москва Турч*».

Запросы вроде «москв турч» не пройдут. Проблем это не создает, потому что люди набирают адреса́ последовательно, и «Подсказки» последовательно предлагают правильное написание каждой части а́дреса

Если в плагине отключили геолокацию, по запросам в 1-2 символа «Подсказки» ищут только регионы, муниципальные районы и города. Дома́ сервис ищет со второго слова в запросе.

Каждому результату «Подсказки» назначают вес. Вес нужен, потому что алгоритм порой находит тысячи вариантов, особенно для коротких запросов. А вернуть можно максимум 20 штук. Поэтому «Подсказки» сортируют результаты по весу и возвращают топовые.

Алгоритм ранжирования результатов — ноу-хау «Дадаты». Это такая серьезная штука, что описывать ее подробно я не могу: проклянут разработчики.

5. Сортируем результаты. Если у результатов поиска одинаковый вес, «Подсказки» их сортируют. Алгоритм сортировки тоже самописный, поэтому снова сохраняю таинственность.

6. Готовим ответ. Адреса, которые возвращают «Подсказки», по формату немного отличаются от ФИАС:

7. Кэшируем. Прежде чем вернуть результат, «Подсказки» кэшируют запрос со всеми параметрами и с ответом.

Кэш ограничен 100 000 записей по алгоритму LRU, поэтому сервис выкидывает оттуда редкие запросы. Популярные же вроде «Мо» висят в кэше вечно.

8. Плагин рисует подсказки. Он принимает ответ от сервера, показывает адреса́ на экране и подсвечивает совпадения. Если во время ввода нажать Enter, плагин сравнит текст с найденными подсказками и подставит в поле самую подходящую.

Источник

API стандартизации адресов

✔️ Разбивает адрес по отдельным полям (регион, город, улица, дом, квартира).

✔️ Рассчитывает корректный индекс по данным Почты России.

✔️ Определяет координаты.

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

✔️ Достает коды КЛАДР, ФИАС, ОКАТО, ОКТМО и ИФНС.

Как вызвать

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

Укажите при вызове:

Что в ответе

Пример ответа

Название Длина Описание
source 250 Исходный адрес одной строкой
result 500 Стандартизованный адрес одной строкой
postal_code 6 Индекс
country 120 Страна
country_iso_code 2 ISO-код страны
federal_district 20 Федеральный округ
region_fias_id 36 ФИАС-код региона
region_kladr_id 19 КЛАДР-код региона
region_iso_code 6 ISO-код региона
region_with_type 131 Регион с типом
region_type 10 Тип региона (сокращенный)
region_type_full 50 Тип региона
region 120 Регион
area_fias_id 36 ФИАС-код района
area_kladr_id 19 КЛАДР-код района
area_with_type 131 Район в регионе с типом
area_type 10 Тип района в регионе (сокращенный)
area_type_full 50 Тип района в регионе
area 120 Район в регионе
city_fias_id 36 ФИАС-код города
city_kladr_id 19 КЛАДР-код города
city_with_type 131 Город с типом
city_type 10 Тип города (сокращенный)
city_type_full 50 Тип города
city 120 Город
city_area 120 Административный округ (только для Москвы)
city_district_fias_id 36 ФИАС-код района города (заполняется, только если район есть в ФИАС)
city_district_kladr_id 19 КЛАДР-код района города (не заполняется)
city_district_with_type 131 Район города с типом
city_district_type 10 Тип района города (сокращенный)
city_district_type_full 50 Тип района города
city_district 120 Район города
settlement_fias_id 36 ФИАС-код населенного пункта
settlement_kladr_id 19 КЛАДР-код населенного пункта
settlement_with_type 131 Населенный пункт с типом
settlement_type 10 Тип населенного пункта (сокращенный)
settlement_type_full 50 Тип населенного пункта
settlement 120 Населенный пункт
street_fias_id 36 ФИАС-код улицы
street_kladr_id 19 КЛАДР-код улицы
street_with_type 131 Улица с типом
street_type 10 Тип улицы (сокращенный)
street_type_full 50 Тип улицы
street 120 Улица
house_fias_id 36 ФИАС-код дома
house_kladr_id 19 КЛАДР-код дома
house_type 10 Тип дома (сокращенный)
house_type_full 50 Тип дома
house 50 Дом
block_type 10 Тип корпуса/строения (сокращенный)
block_type_full 50 Тип корпуса/строения
block 50 Корпус/строение
entrance 10 Подъезд
floor 10 Этаж
flat_fias_id 36 ФИАС-код квартиры
flat_type 10 Тип квартиры (сокращенный)
flat_type_full 50 Тип квартиры
flat 50 Квартира
flat_area 50 Площадь квартиры
square_meter_price 50 Рыночная стоимость м²
flat_price 50 Рыночная стоимость квартиры
postal_box 50 Абонентский ящик
fias_id 36 ФИАС-код адреса (идентификатор ФИАС)
fias_code Иерархический код адреса в ФИАС (СС+РРР+ГГГ+ППП+СССС+УУУУ+ДДДД)
fias_level 2 Уровень детализации, до которого адрес найден в ФИАС
fias_actuality_state Признак актуальности адреса в ФИАС
kladr_id 19 КЛАДР-код адреса
capital_marker 1 Признак центра района или региона
okato 11 Код ОКАТО
oktmo 11 Код ОКТМО
tax_office 4 Код ИФНС для физических лиц
tax_office_legal 4 Код ИФНС для организаций
timezone 50 Часовой пояс города для России, часовой пояс страны — для иностранных адресов. Если у страны несколько поясов, вернёт минимальный и максимальный через слеш: UTC+5/UTC+6
geo_lat 12 Координаты: широта
geo_lon 12 Координаты: долгота
beltway_hit 8 Внутри кольцевой?
beltway_distance 3 Расстояние от кольцевой в км.
Заполнено, только если beltway_hit = OUT_MKAD или OUT_KAD, иначе пустое
qc_geo 5 Код точности координат
qc_complete 5 Код пригодности к рассылке
qc_house 5 Признак наличия дома в ФИАС
qc 5 Код проверки адреса
unparsed_parts 250 Нераспознанная часть адреса.
Для адреса «Москва, Митинская улица, 40, вход с торца»
вернет «ВХОД, С, ТОРЦА»
metro Список ближайших станций метро (до трёх штук)

Координаты есть у 97% домов в Москве, 91% в Санкт-Петербурге, 69% в других городах-миллиониках и 47% по остальной России.

Площадь и стоимость есть у 70% квартир в России.

Коды качества

Код проверки qc

Нужно ли вручную проверить распознанный адрес:

Остались «лишние» части. Пример: «109341 Тверская область Москва Верхние Поля» — здесь лишняя «Тверская область».

Либо в исходном адресе недостаточно данных для уверенного разбора. Пример: «Сходня Красная 12» — здесь нет региона и города.

Код qc Описание Нужно проверить вручную?
0 Адрес распознан уверенно Нет
2 Адрес пустой или заведомо «мусорный» Нет
1 Да
3 Есть альтернативные варианты. Пример: «Москва Тверская-Ямская» — в Москве четыре Тверских-Ямских улицы. Да

Код пригодности к рассылке qc_complete

Годится ли адрес для доставки корреспонденции:

Код qc_complete Подходит для рассылки? Описание
0 Да Пригоден для почтовой рассылки
10 Под вопросом Дома нет в ФИАС
5 Под вопросом Нет квартиры. Подходит для юридических лиц или частных владений
8 Под вопросом До почтового отделения — абонентский ящик или адрес до востребования. Подходит для писем, но не для курьерской доставки.
9 Под вопросом Сначала проверьте, правильно ли Дадата разобрала исходный адрес
1 Нет Нет региона
2 Нет Нет города
3 Нет Нет улицы
4 Нет Нет дома
6 Нет Адрес неполный
7 Нет Иностранный адрес

Признак наличия дома в ФИАС qc_house и код точности координат qc_geo

Уточняют вероятность успешной доставки письма:

Код qc_house Код qc_geo Вероятность доставки Описание
2 любой Высокая Дом найден в ФИАС
10 0 Высокая Дом не найден в ФИАС, но есть на картах
10 1 Средняя Дом не найден в ФИАС, но есть похожий на картах
10 ≥ 2 Низкая Дом не найден в ФИАС и на картах

Код точности координат qc_geo

Точность координат адреса для курьерской доставки:

Код qc_geo Описание
0 Точные координаты
1 Ближайший дом
2 Улица
3 Населенный пункт
4 Город
5 Координаты не определены

Коды ответа на запрос

HTTP-код ответа Описание
200 Запрос успешно обработан
400 Некорректный запрос
401 В запросе отсутствует API-ключ или секретный ключ
Или в запросе указан несуществующий ключ
403 Не подтверждена почта
Или недостаточно средств для обработки запроса, пополните баланс
405 Запрос сделан с методом, отличным от POST
429 Слишком много запросов в секунду или новых соединений в минуту
5xx Произошла внутренняя ошибка сервиса

Примеры и интеграции

Ограничения

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

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

Дадата не поддерживает вызов этого метода из браузерного JavaScript. Иначе злоумышленник мог бы похитить секретный ключ и использовать API за ваш счет.

Источник

Читайте также:  как узнать площадь застройки
Советы мастера