Initask API

API ЄДРПОУ для Python: картка компанії з ЄДР у скрипті

Оновлено 26.09.2026

Отримати картку компанії з ЄДР у Python можна одним запитом `requests.get` до `https://dani.initask.com/v1/company/{edrpou}`. Відповідь приходить у JSON з полями `ok`, `data` і `error`: назва, стан, керівник, засновники, бенефіціари. Нижче робочий приклад, обробка помилок і лімітів, а також порада, як пройти список кодів з таблиці.

Мінімальний приклад

```python import os, requests

r = requests.get( "https://dani.initask.com/v1/company/00032129", headers={"Authorization": f"Bearer {os.environ['INITASK_KEY']}"}, timeout=10, ) body = r.json() print(r.headers["X-RateLimit-Remaining"], body["data"]) ```

Ключ береться зі змінної середовища `INITASK_KEY`, а не пишеться в коді: так він не потрапить у репозиторій. Без ключа працює і анонімний доступ, 100 запитів на добу з однієї IP-адреси, для перших експериментів цього досить. Параметр `timeout=10` обовʼязковий у будь-якому скрипті: без нього зависле зʼєднання тримає скрипт нескінченно.

Що лежить у data

Код 00032129 з прикладу належить АТ «Ощадбанк». Усередині відповіді прийдуть код, повна і скорочена назва, організаційно-правова форма, стан латиницею і українською, дата реєстрації, статутний капітал, керівник і підписанти, засновники, кінцеві бенефіціарні власники, відокремлені підрозділи, відомості про припинення і банкрутство, дата оновлення запису і посилання на сторінку компанії. Для аналітики найчастіше потрібні стан, дата реєстрації і капітал, для перевірки контрагента ще й підписанти з бенефіціарами.

Поле `capital` приходить рядком так, як записано в реєстрі, з комою як десятковим роздільником. Перед обчисленнями замініть кому на крапку і перетворіть на число. Підписанти, засновники, бенефіціари і підрозділи приходять списками рядків, навіть коли там один запис або жодного, тож у коді їх варто одразу обробляти як списки.

Обробка помилок

Скрипт має розрізняти три ситуації: відповідь по суті, помилку вхідних даних і вичерпаний ліміт. Кожна з них потребує своєї реакції, і змішувати їх в один загальний перехоплювач помилок не варто.

КодПомилкаКоли
400bad_requestкод містить не лише цифри або має більше 8 знаків
404not_foundкомпанії з таким кодом у реєстрі немає
429лімітпісля вичерпання ліміту, з заголовком Retry-After

На 400 немає сенсу повторювати запит: код неправильний, і його треба виправити в джерелі. На 404 запишіть код у список ненайдених і рухайтесь далі. На 429 прочитайте `Retry-After`, зачекайте стільки секунд і повторіть той самий запит.

Короткий код з 5-7 цифр шлюз доповнює нулями зліва сам. Якщо коди в таблиці зберігались як числа і загубили нулі на початку, окремо дописувати їх не потрібно.

Як будувати скрипт, щоб він не ламався

Скрипти для роботи з реєстром зазвичай живуть довго і запускаються без нагляду: щоночі, щотижня, перед звітом. Тому варто одразу закласти кілька звичок. Записуйте в журнал кожен код, на якому сталася помилка, разом з кодом відповіді. Зберігайте сирі відповіді у файл поруч з результатом: якщо колонка в таблиці виглядає дивно, ви завжди зможете подивитись, що саме повернув реєстр. Не падайте на першій помилці: один неправильний код у таблиці на тисячу рядків не повинен зупиняти обробку решти.

Окрема порада щодо дат. Поле дати реєстрації приходить у форматі рік, місяць, день, а поле оновлення містить ще й час. Для таблиць зручно одразу перетворити їх на дату без часу.

Пакетна обробка списку кодів

Типова задача аналітика: є таблиця з кодами клієнтів, треба додати колонки з назвою і станом. Схема проста. Читаєте коди з файлу, для кожного робите запит, результат складаєте у новий файл. Перед кожним запитом дивіться на `X-RateLimit-Remaining` з попередньої відповіді: коли залишок наближається до нуля, скрипт зупиняється акуратно і записує, на якому коді закінчив. Наступного запуску він продовжить з цього місця.

Шлюз тримає відповідь у кеші 60 хвилин, тож повторний запуск по тих самих кодах протягом години працює швидше. Проте кожен запит усе одно рахується в ліміт, тому дублікати кодів краще прибрати до запуску.

Ліміти для скриптів

ПланЗапитівЦіна, грн на місяць
Безкоштовний100 на добу0
Старт10000 на місяць990
Про100000 на місяць2990

Для разового збагачення таблиці на кілька сотень кодів вистачить кількох днів безкоштовного ліміту або одного місяця плану Старт. Регулярний аналіз великої бази потребує плану Про. Заголовки `X-RateLimit-Limit` і `X-RateLimit-Reset` показують загальний ліміт і час його скидання: доба і місяць рахуються за Києвом.

Куди рухатись далі

Коли в таблиці лише назви, почніть з пошуку компаній: він повертає до 10 збігів з кодами. Для глибшого аналізу контрагентів тим самим кодом викликаються судові справи і тендери Prozorro. Структура відповіді в усіх ендпоінтах однакова: `ok`, `data`, `error`, `meta`.

Що робити

  1. Збережіть ключ у змінній середовища `INITASK_KEY` або почніть без ключа.
  2. Запустіть приклад вище і подивіться на `data` для коду 00032129.
  3. Додайте обробку 400, 404 і 429 з паузою за `Retry-After`.
  4. Для списку кодів приберіть дублікати і стежте за `X-RateLimit-Remaining`.
  5. Повний перелік полів дивіться в документації картки компанії, план під обсяг оберіть на сторінці Ціни і ліміти.

Питання і відповіді

Як отримати дані ЄДРПОУ на Python?

Зробіть requests.get до https://dani.initask.com/v1/company/{edrpou} з заголовком Authorization: Bearer КЛЮЧ і timeout=10. Відповідь у JSON містить поля ok, data і error.

Що робити, якщо API повертає 429?

Прочитайте заголовок Retry-After, зачекайте вказаний час і повторіть той самий запит. Залишок ліміту видно в заголовку X-RateLimit-Remaining.

Чи треба дописувати нулі до коду ЄДРПОУ?

Ні, код з 5-7 цифр шлюз доповнює нулями зліва сам.

Джерела даних

Корисні сторінки

Читайте також

Отримати ключ API

Ключ прийде листом, 100 запитів на добу безкоштовно.

Потрібен AI-агент під вашу задачу?

Агент, що збирає дані з відкритих реєстрів у ваші системи і готує звіти без ручного копіювання.

Описати задачу