Initask API

API курсу НБУ для Python: офіційний курс на дату у скрипті

Оновлено 26.09.2026

Офіційний курс НБУ на будь-яку дату в Python отримується одним запитом `requests.get` до `https://dani.initask.com/v1/rates` з параметрами `date` і `cur`. Відповідь приходить у JSON: дата курсу, базова валюта і список курсів, де кожен курс подано за одну одиницю валюти. Архів доступний з 1996-01-06, тож скрипт може рахувати і поточні операції, і історичні звіти.

Приклад

```python import os, requests

r = requests.get( "https://dani.initask.com/v1/rates?date=2026-09-25&cur=USD,EUR", headers={"Authorization": f"Bearer {os.environ['INITASK_KEY']}"}, timeout=10, ) body = r.json() print(r.headers["X-RateLimit-Remaining"], body["data"]) ```

Ключ береться зі змінної середовища, у коді його немає. Без ключа працює анонімний доступ на 100 запитів на добу з однієї IP-адреси. Таймаут у десять секунд захищає від зависання скрипта, коли мережа поводиться дивно.

Як розібрати відповідь

Усередині відповіді лежать дата курсу, базова валюта (завжди гривня) і список курсів. Кожен елемент списку містить буквений код валюти, її назву, курс у гривнях за одиницю і цифровий код. Для прикладу на 2026-09-25 скрипт отримає євро за 51.122 і долар США за 44.9729 гривні.

Зручно одразу перетворити список на словник з буквеним кодом як ключем. Тоді курс долара береться одним зверненням за кодом, і не треба щоразу шукати потрібну валюту в списку.

Курс завжди подано за одну одиницю, навіть для єни і форинта. Додатково ділити нічого не треба: те, що НБУ для деяких валют публікує курс за кілька одиниць, шлюз уже врахував.

Параметри

ПараметрОбовʼязковийОпис
dateнідата у форматі YYYY-MM-DD, від 1996-01-06 до завтра; без параметра береться сьогодні за Києвом
curнікоди валют ISO 4217 через кому, до 20 кодів; без параметра повертаються всі валюти

Якщо скрипту потрібні лише долар і євро, передавайте їх у `cur`: відповідь буде коротшою, а розбір простішим.

Помилки, які варто обробити

КодКолиЩо робити у скрипті
400дата у форматі, відмінному від YYYY-MM-DD, або поза межамивиправити формат дати, повтор не допоможе
404на дату немає курсів або серед них немає запитаних валютперевірити код валюти або дочекатися публікації
429вичерпано лімітзачекати час із заголовка Retry-After і повторити

Окремий випадок 404 стосується завтрашньої дати. НБУ встановлює курс на наступний робочий день близько 15:30 за Києвом. Скрипт, який запускається раніше і питає завтрашній курс, отримає 404, і це нормальна відповідь: курсу ще немає. Плануйте такі запуски на пізніший час.

Звіт за період: як не витратити ліміт

Для звіту за місяць потрібен курс на кожен день. Найпростіше пройти всі дати циклом і зберегти результати у файл або базу. Курс на минулу дату не змінюється, тому зберігайте його назавжди і більше не запитуйте. На нашому боці курс на минулу дату тримається в кеші добу, на сьогодні і завтра 10 хвилин.

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

Ліміти

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

Для курсів безкоштовного ліміту вистачає більшості скриптів, якщо зберігати відповіді у себе. Поточний залишок видно в заголовку `X-RateLimit-Remaining`, момент скидання у `X-RateLimit-Reset`.

Джерело

Національний банк України: архів kurs.initask.com з 2020 року, раніші дати напряму з bank.gov.ua. Скрипту не треба знати, звідки саме прийшов курс: формат відповіді однаковий для всього архіву.

Що робити

  1. Запустіть приклад і перевірте курс на знайому вам дату.
  2. Перетворіть список курсів на словник за буквеним кодом валюти.
  3. Додайте обробку 400, 404 і 429 за таблицею вище.
  4. Для звітів зберігайте курси минулих дат у себе і запитуйте лише відсутні.
  5. Повний опис полів дивіться в документації курсу НБУ, тарифи на сторінці Ціни і ліміти.

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

Як отримати курс НБУ на Python?

Зробіть requests.get до https://dani.initask.com/v1/rates з параметрами date у форматі YYYY-MM-DD і cur з кодами валют. Відповідь у JSON містить курс за одну одиницю кожної валюти.

Чому API повертає 404 для завтрашньої дати?

НБУ встановлює курс на наступний робочий день близько 15:30 за Києвом. До цього часу курсу на завтра ще немає, і відповідь 404 означає саме це.

Як часто можна запитувати курс?

Без ключа 100 запитів на добу з однієї IP-адреси. Курс на минулу дату не змінюється, тому його варто зберігати і не запитувати повторно.

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

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

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

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

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

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

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

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