Адресні підказки ФІАС: як реалізувати в мобільному застосунку
Користувач вводить адресу, припускається помилки або використовує нестандартний формат. Бекенд відхиляє запит, оскільки очікує структуровані дані з кодом КЛАДР або ФІАС. В одному з наших проєктів для кур'єрського сервісу доопрацювання адресного введення скоротило кількість помилок при замовленні на 35% та прискорило заповнення форми на 40%. Ми інтегрували адресні підказки на основі ФІАС — і ось як це працює.
Як працюють адресні підказки на основі ФІАС?
ФІАС (Федеральна Інформаційна Адресна Система) — державний реєстр адрес Росії. Безпосередньо інтегруватися з ФІАС у мобільному застосунку недоцільно: база важить десятки гігабайт, оновлюється щотижня, і прямого API для пошуку немає. На практиці використовують сервіси, які індексують ФІАС та надають зручний API пошуку. Ми працюємо з кількома провайдерами та підбираємо оптимальний під задачу.
Порівняння популярних сервісів адресних підказок
| Сервіс | Особливості | Ліміти | Підтримка ФІАС-кодів |
|---|---|---|---|
| DaData.ru | Suggest API, стандартизація, геокодування | 10000 запитів/день безкоштовно, далі за тарифами | Повна (коди ФІАС та КЛАДР на кожному рівні) |
| 2GIS Geocoder | Комерційна нерухомість, організації | Безкоштовно до 5000 запитів/міс | Обмежена (тільки для міст присутності) |
| Яндекс Геокодер | Широке геопокриття, інтеграція з картами | Безкоштовно 25000 запитів/день | Часткова (код району, але не вулиці/будинку) |
Чому DaData — оптимальний вибір?
DaData повертає повністю розібрану адресу з кодами ФІАС на кожному рівні: регіон, район, місто, вулиця, будинок. Крім того, сервіс пропонує стандартизацію адреси — якщо користувач вводить неповну адресу, DaData доповнить її за своєю базою. Ми використовуємо DaData в 90% проєктів завдяки стабільності та точності. Наприклад, у згаданому кур'єрському проєкті ми обробляли до 100 000 запитів на день, і час відповіді API не перевищував 200 мс.
Реалізація з DaData Suggest API
POST https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address Authorization: Token {api_key} Content-Type: application/json { "query": "Москва Леніна", "count": 5, "locations": [{"country": "*"}] } Відповідь містить список підказок з полем data — повністю розібрана адреса з кодами ФІАС на кожному рівні.
Важливо: запит на підказки робимо не на кожен символ, а через debounce 300-400ms. На швидкому введенні без debounce отримуємо 10+ запитів на секунду — і швидко вичерпуємо ліміт.
Покрокова реалізація інтеграції
- Аналіз вимог — визначаємо, чи потрібна офлайн-підтримка, скільки рівнів ієрархії, чи потрібне геокодування.
- Вибір провайдера — на основі лімітів, вартості та якості даних. Зазвичай DaData підходить для 95% задач.
- Розробка клієнта — підключаємо REST API, реалізуємо debounce, кешування останніх запитів.
- UX-дизайн — проєктуємо поле введення з випадним списком, ієрархічний вибір (місто → вулиця → будинок) або розумну автозаміну.
- Валідація та стандартизація — після вибору підказки заповнюємо допоміжні поля (індекс, місто, вулиця, будинок) і передаємо структурований об'єкт на бекенд.
- Геокодування та карти — якщо потрібно відобразити адресу на карті, використовуємо координати з DaData (
geo_lat/geo_lon). На iOS рендеримо черезMapKitзMKPointAnnotation, на Android — Google Maps SDK або Yandex MapKit. - Тестування — перевіряємо на реальних адресах, граничних випадках (порожні поля, неповні адреси).
- Деплой та моніторинг — налаштовуємо логування та алерти при перевищенні ліміту API.
Що входить у роботу
- Підключення та налаштування обраного сервісу (DaData, 2GIS або Яндекс).
- Розробка клієнтської логіки з debounce та кешуванням.
- Інтеграція з бекендом для передачі структурованих адрес.
- Опціонально: офлайн-база ФІАС (SQLite) для роботи без інтернету.
- Документація по API та інструкція для підтримки.
- Гарантія на код протягом 3 місяців — безкоштовне виправлення знайдених помилок.
Що робити, якщо потрібен офлайн?
Для застосунків з повноцінним офлайн-режимом (наприклад, кур'єрський застосунок поза зоною покриття) DaData не підходить — API потребує інтернет. У цьому випадку вбудовуємо локальну базу ФІАС: SQLite з індексуванням за n-gram. База для регіону важить 50-200 МБ, для всієї Росії — кілька гігабайт. Реалістично тільки для обмеженої географії.
Порівняння онлайн та офлайн підходів
| Параметр | Онлайн (DaData) | Офлайн (SQLite) |
|---|---|---|
| Швидкість відповіді | 100-300 мс | <50 мс (локально) |
| Актуальність даних | Щоденне оновлення | Залежить від частоти оновлення бази |
| Вимоги до мережі | Постійне інтернет-з'єднання | Не потрібно |
| Розмір застосунку | 0 МБ (тільки API-запити) | +50-200 МБ на регіон |
Типові помилки при інтеграції
- Ігнорування debounce — призводить до вичерпання ліміту API та блокування.
- Одне поле для всієї адреси — користувачі плутаються, падає конверсія. Краще поетапне введення.
- Відсутність валідації на клієнті — бекенд отримує сміття і не може обробити.
- Забувають про геокодування — якщо адреса потрібна на карті, без координат з DaData доведеться робити додатковий запит.
Ми — команда мобільних розробників з більш ніж 5-річним досвідом інтеграції адресних сервісів. Учасники проєктів з навантаженням до 100 000 запитів на день. Зв'яжіться з нами, щоб обговорити ваше завдання — підберемо оптимальне рішення та терміни. Отримайте консультацію: ми оцінимо проєкт і запропонуємо прозорий кошторис.
Терміни та вартість
Терміни інтеграції: від 3-5 днів (базовий варіант) до 2 тижнів (з офлайн-базою та картами). Вартість розраховується індивідуально після аналізу вимог. Замовте консультацію — ми оцінимо проєкт і запропонуємо прозорий кошторис.
Детальніше про ФІАС можна прочитати на Wikipedia.







