API пошуку компаній для JavaScript: автодоповнення назви з ЄДР
Оновлено 26.09.2026
Автодоповнення назви компанії на JavaScript будується на одному ендпоінті: `GET https://dani.initask.com/v1/company/search?q=` повертає до 10 компаній з ЄДР за назвою, частиною назви або кодом. У відповіді код ЄДРПОУ, повна і скорочена назва та стан. Нижче приклад з fetch, кодування кирилиці, пауза між запитами і обробка крайніх випадків.
Приклад з fetch
```javascript const r = await fetch("https://dani.initask.com/v1/company/search?q=%D0%BF%D1%80%D0%B8%D0%B2%D0%B0%D1%82%D0%B1%D0%B0%D0%BD%D0%BA", { headers: { Authorization: `Bearer ${process.env.INITASK_KEY}` }, }); const { ok, data, error } = await r.json(); console.log(r.headers.get("X-RateLimit-Remaining"), data); ```
Дивний рядок після `q=` це слово «приватбанк», закодоване для адреси. Кирилицю в параметрі запиту завжди кодують, і стандартні засоби мови роблять це самі. Ключ береться зі змінної середовища, тож запит виконує сервер. У браузері ключ світити не можна: сторінка звертається до вашого сервера, а він до API.
Що приходить у data
Усередині лежить запит, як його прочитав пошук, і масив до 10 збігів. Кожен збіг містить код ЄДРПОУ, повну назву, скорочену назву і стан латиницею. Цього досить, щоб показати зрозумілу підказку і відрізнити однойменні компанії. Найточніші збіги йдуть першими. Пошук дивиться і повну, і скорочену назву, регістр літер значення не має.
Для «приватбанк» першим прийде АТ КБ «ПРИВАТБАНК» з кодом 14360570 і станом `active`. У тому самому списку може бути і ТОВ з кодом 46379669 у стані `cancelled`, тож стан варто показувати в підказці.
Пауза між запитами
Якщо відправляти запит на кожну натиснуту клавішу, слово з десяти літер коштує десять запитів, девʼять з яких нікому не потрібні. Стандартний прийом: відкладати запит на кілька сотень мілісекунд після останнього натискання і скасовувати попередній, якщо користувач продовжує друкувати. Друге правило: не відправляти запит, поки в полі менше двох символів.
Крайні випадки
| Ситуація | Відповідь | Що показати |
|---|---|---|
| нічого не знайдено | 200 з порожнім items | «нічого не знайдено» |
| запит коротший за 2 символи або довший за 120 | 400 bad_request | нічого, просто не відправляти такий запит |
| ліміт вичерпано | 429 з Retry-After | залишити поле працювати без підказок |
Порожній масив і помилка це різні речі. Компонент, який показує «помилка» на кожен порожній результат, лякає користувача без причини.
Код 429 варто обробляти мʼяко: поле вводу продовжує працювати, просто без підказок, а сервер повторить запит після паузи з `Retry-After`. Користувач у гіршому разі введе назву вручну, і форма все одно збережеться.
Доступність компонента
Підказки мають працювати і з клавіатури: стрілки вгору і вниз переміщують вибір, Enter підтверджує, Escape закриває список. Кожна підказка містить назву, код і стан текстом, а не лише кольором, щоб людина з порушенням кольорового зору теж бачила припинену компанію. Ці дрібниці роблять форму зручною для всіх, хто заводить контрагентів щодня.
Ліміти і кеш
Шлюз кешує відповіді пошуку на 10 хвилин. Власний кеш на сервері, наприклад на кілька хвилин для однакових запитів, ще більше економить ліміт, бо популярні назви вводять багато користувачів.
| План | Запитів | Ціна, грн на місяць |
|---|---|---|
| Безкоштовний | 100 на добу | 0 |
| Старт | 10000 на місяць | 990 |
| Про | 100000 на місяць | 2990 |
Заголовки `X-RateLimit-Limit`, `X-RateLimit-Remaining` і `X-RateLimit-Reset` приходять у кожній відповіді. Сервер може писати в журнал попередження, коли залишок наближається до нуля.
Після вибору
Пошук повертає лише назву, код і стан. Коли користувач обрав компанію, сервер запитує картку компанії за кодом і заповнює решту форми: форму власності, керівника, дату реєстрації. Для порталів закупівель за тим самим кодом доступні тендери Prozorro.
Що робити
- Запустіть приклад на сервері з ключем у змінній середовища.
- Додайте в компонент вводу паузу після останнього натискання і мінімум два символи.
- Розрізняйте порожній результат і помилку.
- Після вибору викликайте картку компанії за кодом.
- Деталі у документації пошуку, тарифи на сторінці Ціни і ліміти.
Питання і відповіді
Як зробити автодоповнення назви компанії на JavaScript?
Сервер робить fetch до https://dani.initask.com/v1/company/search?q= з назвою від 2 символів і повертає компоненту до 10 збігів з кодом, назвою і станом.
Як передати кирилицю в запиті пошуку?
Кирилицю в параметрі q кодують для адреси, стандартні засоби мови роблять це самі. Регістр літер значення не має.
Що повертає пошук, якщо нічого не знайдено?
Відповідь 200 з порожнім масивом items, щоб клієнт відрізняв порожній результат від помилки.