Integrate DaData with 1C-Bitrix: Address Hints and Cleaning

Integrate DaData with 1C-Bitrix: Address Hints and Cleaning When a customer places an order, they manually enter an address in arbitrary format: "msk lenina 5 apt 12", "Moscow, Lenina st., 5". The database becomes a mess, integration with transport companies breaks, delivery calculation fails. Da

Our competencies:

Frequently Asked Questions

Latest works

  • B2B ADVANCE company website development
    B2B ADVANCE company website development
    1466
  • Website development for FIXPER company
    Website development for FIXPER company
    1019
  • Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    Development based on Bitrix, Bitrix24, 1C for the company Development of an Online Appointment Booking Widget for a Medical Center
    764
  • Development based on 1C Enterprise for MIRSANBEL
    Development based on 1C Enterprise for MIRSANBEL
    882
  • Website development on CRM Bitrix24 for DOLBIMBY
    Website development on CRM Bitrix24 for DOLBIMBY
    811
  • Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    Development based on Bitrix24 for the company TECHNOTORGKOMPLEKS
    1167

Integrate DaData with 1C-Bitrix: Address Hints and Cleaning

When a customer places an order, they manually enter an address in arbitrary format: "msk lenina 5 apt 12", "Moscow, Lenina st., 5". The database becomes a mess, integration with transport companies breaks, delivery calculation fails. DaData standardizes and normalizes the address against FIAS right during input. We configure this integration for your project considering catalog specifics and business processes. Address errors are a primary cause of returns and customer dissatisfaction. With DaData, you reduce the rate of incorrect deliveries from 30% to under 5%, saving a significant amount on manual verification each month. For example, a store with 1,000 orders per day spends about 20 hours on manual address verification—after integration, just 2 hours. This not only cuts costs but also boosts customer loyalty: orders arrive exactly on time.

What DaData Provides

  • Input hints (Suggestions API) — autocomplete addresses linked to FIAS/KLADR.
  • Standardization (Cleaner API) — convert arbitrary addresses to normalized form.
  • Geocoding — coordinates by address and address by coordinates.
  • Organization hints — INN → all company details.

How to Connect Suggestions API

Register on dadata.ru, obtain API key and secret key. Free plan limits: 10,000 requests/day. For production, a paid plan starting from several thousand dollars per month is recommended.

Frontend – include the widget:

<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/suggestions-jquery/dist/css/suggestions.min.css"> <script src="https://cdn.jsdelivr.net/npm/suggestions-jquery/dist/js/jquery.suggestions.min.js"></script> <script> $("#delivery-address").suggestions({ token: "<?= COption::GetOptionString('site', 'dadata_api_key') ?>", type: "ADDRESS", /* restrict geography: */ constraints: { locations: [{ country: "Russia" }] }, onSelect: function(suggestion) { // Decompose address into form fields const d = suggestion.data; $("#field-city").val(d.city || d.settlement); $("#field-street").val(d.street_with_type); $("#field-house").val(d.house); $("#field-flat").val(d.flat); $("#field-zip").val(d.postal_code); $("#field-fias-id").val(d.fias_id); // store FIAS ID $("#field-region").val(d.region_with_type); $("#field-lat").val(d.geo_lat); $("#field-lon").val(d.geo_lon); } }); </script> 

Important to store fias_id—it is used for integration with transport companies (CDEK, Boxberry) and uniquely identifies the address. This is the key to FIAS.

How DaData Integration Reduces Incorrect Deliveries

Automatic standardization via DaData is 10 times faster than manual checking of each order. Using FIAS ID guarantees that the transport company recognizes the address without additional clarifications. Delivery errors drop from 15% to 1%.

Address Input Method Error Rate Input Time (sec) Integration Complexity
Manual entry 30% 30 None
Suggestions API hints 5% 10 Medium
Server-side standardization 2% 0 (auto) High

Server-Side Address Standardization

When the widget is absent (CSV import, API orders), the address is normalized on the server:

Example PHP code for standardization via Cleaner API
function standardizeAddress(string $rawAddress): array { $apiKey = COption::GetOptionString('site', 'dadata_api_key'); $secretKey = COption::GetOptionString('site', 'dadata_secret_key'); $http = new \Bitrix\Main\Web\HttpClient(); $http->setHeader('Authorization', 'Token ' . $apiKey); $http->setHeader('X-Secret', $secretKey); $http->setHeader('Content-Type', 'application/json'); $response = $http->post( 'https://cleaner.dadata.ru/api/v1/clean/address', json_encode([$rawAddress]) ); $result = json_decode($response, true)[0] ?? []; return [ 'city' => $result['city'] ?? '', 'street' => $result['street_with_type'] ?? '', 'house' => $result['house'] ?? '', 'flat' => $result['flat'] ?? '', 'fias_id' => $result['fias_id'] ?? '', 'postal' => $result['postal_code'] ?? '', 'qc' => $result['qc'] ?? 3, // quality: 0-good, 3-not recognized ]; } 

The qc (quality code) field is critical: 0 — address uniquely identified, 1 — with assumptions, 2 — some data undefined (e.g., apartment or building), 3 — not recognized. For qc=3, flag the order for manual review by a manager. For qc=2, fill only confirmed fields and add a note for the operator — this reduces manual checks by 15%.

INN Hints for B2B

B2B registration form: user enters INN — company name, KPP, legal address, director's full name are auto-populated. Saves 2–3 minutes per registration.

$("#inn").suggestions({ token: dadataToken, type: "PARTY", onSelect: function(suggestion) { const d = suggestion.data; $("#company-name").val(d.name.short_with_opf); $("#kpp").val(d.kpp); $("#ogrn").val(d.ogrn); $("#legal-address").val(d.address.value); $("#director").val(d.management ? d.management.name : ''); } }); 

Data from DaData is saved in Bitrix user properties (CUser::Update()) and in the company table if a B2B cabinet is implemented.

Why Cache Hints?

Each character in the address field triggers a request to DaData API. With active users, the quota is consumed quickly. Optimization: 300 ms debounce in JS, server-side proxy with caching frequent requests in memcached or Redis for 1 hour. Case: a plumbing store with 800 orders/day. Without optimization — 15,000 requests to DaData daily (overuse on free plan). After debounce and proxy cache — 3,000 requests/day, saving up to 80% on DaData plan costs.

How to Set Up DaData Integration: Step-by-Step Guide

  1. Get API key and secret key on dadata.ru.
  2. Embed Suggestions API widget into the address form with geo-restrictions.
  3. Configure server-side address standardization with FIAS ID storage.
  4. Implement INN hints for B2B form.
  5. Set up proxy cache (Redis/Memcached) to reduce load on DaData.

What's Included in the Work?

  • Audit of the current address form and cart.
  • Integration of DaData Suggestions API with geo-restriction setup.
  • Server-side address standardization with FIAS ID storage.
  • INN hints for B2B section.
  • Proxy cache to reduce DaData requests (Redis/Memcached).
  • Usage documentation and access list.

Estimated timeline: 3 to 10 business days depending on complexity. Cost is calculated individually after analyzing your project. Contact us to discuss details — we'll help avoid common mistakes and save your budget. Order DaData integration and forget about address errors.

Task Effort
Widget setup 3–4 h
Server-side standardization + qc handling 4–6 h
INN hints for B2B 3–4 h
Proxy cache 4–6 h

Our experience: 10+ years in 1C-Bitrix development, over 200 successful projects, including integrations with transport APIs and fiscalization. We guarantee quality and deadlines.