FIAS Address Suggestion Service Integration into Mobile Application
User enters address manually and makes typo. Or enters correctly, but in non-standard format. Backend rejects address because it expects structured data with KLADR or FIAS code. Here you need address suggestions.
FIAS and Services Based on It
FIAS (Federal Information Address System)—Russia's state address registry. Integrating directly with FIAS in mobile app impractical: database weighs dozens of GB, updates weekly, no direct search API.
In practice, use services that index FIAS and provide convenient search API:
DaData.ru — most popular option. Address cleaning and standardization API, suggestions on input (Suggest API), geocoding. Address standardization returns full structure: region, city, street, building with FIAS and KLADR codes, coordinates, postal code.
2GIS Geocoder — alternative focusing on commercial real estate and organizations.
Yandex Geocoder — widely available, but less accurate for FIAS codes than DaData.
Implementation with DaData Suggest API
POST https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/address
Authorization: Token {api_key}
Content-Type: application/json
{
"query": "Moscow Lenin",
"count": 5,
"locations": [{"country": "*"}]
}
Response contains list of suggestions with data field—fully parsed address with FIAS codes at each level (region, district, city, street, building).
Important: don't make request on every character, use debounce 300-400ms. On fast input without debounce you get 10+ requests/second—quickly exhaust limit.
UX Pattern for Address Field
Standard implementation: TextField with suggestion dropdown. On suggestion selection, fill helper fields (index, city, street, building)—or send whole object to server.
One nuance: DaData suggestions work hierarchically. If user enters "Moscow, Lenin St", first they select city, then specify street. More convenient than one field for whole address, but requires complex UX—several steps or smart replacement.
Geocoding and Map Display
After selecting address from suggestions, DaData returns coordinates geo_lat / geo_lon. If you need to show address on map—coordinates already there, no additional geocoder request needed.
On iOS render via MapKit with MKPointAnnotation, on Android—Google Maps SDK or Yandex MapKit (latter relevant for Russian market since Google Maps in Russia works without organizations layer).
Offline Variant
For apps with full offline mode (e.g., courier app outside coverage), DaData not suitable—API requires internet. Embed local FIAS database: SQLite with n-gram indexing. Regional database weighs 50-200 MB, all Russia—several GB. Realistic only for limited geography.
Timeline: basic suggestions integration via DaData with basic UX—3-5 days. With hierarchical input, map display, validation—1-2 weeks.







