Интеграция подсказок ИНН/ОГРН/БИК через DaData на сайте
DaData — де-факто стандарт для автоподстановки реквизитов организаций на российских сайтах. Сервис умеет по неполному ИНН или названию организации вернуть список компаний с полными реквизитами: ОГРН, КПП, юрадрес, ФИО директора, статус (действующая/ликвидирована). Аналогично для банков — по БИК возвращает наименование банка, корсчёт, адрес.
Получение токена
Регистрация на dadata.ru, раздел «Личный кабинет» → «API-ключи». Два ключа: Token (для запросов) и Secret (для некоторых методов, например стандартизации). Для подсказок хватает только Token.
Бесплатный тариф: 10 000 запросов в день. Для большинства форм регистрации/заявок этого достаточно.
Подсказки по организациям
Эндпоинт: POST https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party
function suggestParty(string $query): array
{
$response = Http::withHeaders([
'Authorization' => 'Token ' . config('services.dadata.token'),
'Content-Type' => 'application/json',
])->post('https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/party', [
'query' => $query,
'count' => 5,
'status' => ['ACTIVE'], // только действующие
]);
return $response->json('suggestions', []);
}
Ответ для одной организации:
{
"value": "ООО \"ЯНДЕКС\"",
"unrestricted_value": "ООО \"ЯНДЕКС\"",
"data": {
"inn": "7736207543",
"kpp": "770401001",
"ogrn": "1027700229193",
"name": {
"full_with_opf": "ОБЩЕСТВО С ОГРАНИЧЕННОЙ ОТВЕТСТВЕННОСТЬЮ \"ЯНДЕКС\""
},
"management": {
"name": "ВОЛОЖ АРКАДИЙ ЮРЬЕВИЧ",
"post": "ГЕНЕРАЛЬНЫЙ ДИРЕКТОР"
},
"address": {
"value": "г Москва, ул Льва Толстого, д 16"
},
"state": {
"status": "ACTIVE"
}
}
}
При выборе компании из списка форма автозаполняется: ИНН, КПП, ОГРН, юрадрес, ФИО директора — всё из одного ответа.
Поиск по точному ИНН или ОГРН
Когда пользователь вводит цифры (ИНН — 10 или 12 знаков, ОГРН — 13), DaData распознаёт тип автоматически. Для точного запроса по ИНН:
$response = Http::withHeaders([
'Authorization' => 'Token ' . config('services.dadata.token'),
'Content-Type' => 'application/json',
])->post('https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/party', [
'query' => '7736207543', // точный ИНН
]);
$party = $response->json('suggestions.0.data');
Метод findById возвращает расширенный ответ — включая историю смены директора, все КПП для головной организации и т.д.
Подсказки по банкам (БИК)
Эндпоинт аналогичный: /suggest/bank или /findById/bank.
$response = Http::withHeaders([
'Authorization' => 'Token ' . config('services.dadata.token'),
'Content-Type' => 'application/json',
])->post('https://suggestions.dadata.ru/suggestions/api/4_1/rs/suggest/bank', [
'query' => '044525225',
]);
$bank = $response->json('suggestions.0.data');
// $bank['bic'] => '044525225'
// $bank['correspondent_account'] => '30101810400000000225'
// $bank['name']['payment'] => 'Сбербанк'
Фронтенд без бэкенд-прокси
DaData поддерживает прямые запросы из браузера. Для этого в настройках кабинета нужно добавить домен в список разрешённых источников. Тогда запрос идёт напрямую из JS:
import { DaDataSuggestions } from 'react-dadata';
import 'react-dadata/dist/react-dadata.css';
<DaDataSuggestions
token="ВАШ_ТОКЕН"
type="party"
onChange={(suggestion) => {
setInn(suggestion?.data?.inn ?? '');
setKpp(suggestion?.data?.kpp ?? '');
setOgrn(suggestion?.data?.ogrn ?? '');
}}
/>
Библиотека react-dadata — готовый компонент для React, не нужно писать UI с нуля. Аналоги есть для Vue и ванильного JS.
Минус прямых запросов из браузера: токен виден в клиентском коде. Если это неприемлемо — делается прокси на бэкенде (контроллер с кешированием), который не раскрывает ключ.
Кеширование
Подсказки по ИНН имеет смысл кешировать — данные организации меняются редко. Простой вариант на Laravel:
$data = Cache::remember("party_{$inn}", now()->addHours(24), function () use ($inn) {
return $this->fetchFromDadata($inn);
});
Кеш снижает расход лимита и ускоряет повторные запросы. Срок хранения 24 часа — разумный компромисс.
Типовой сценарий внедрения
Форма регистрации юрлица на сайте: поле «ИНН или название компании» с подсказками DaData. При выборе из списка остальные поля (КПП, ОГРН, адрес, директор) заполняются автоматически. Это убирает ошибки ввода и сокращает время заполнения формы с 3–5 минут до 30 секунд.
Интеграция занимает 2–4 часа: получение токена, написание прокси-контроллера, подключение компонента на фронтенде, тестирование граничных случаев (ИП vs ООО, ликвидированные компании).







