Перейти до змісту

API · Для розробників

Тендерні дані через API

Ті самі дані, що бачать користувачі Tender Radar, у вашій ERP, CRM чи сховищі: Prozorro, понад сотня комерційних майданчиків і порталів компаній, ЄС, Велика Британія та ООН. Один формат для всіх майданчиків, оновлення кожні кілька хвилин.

Що дає API

Кожен тендер приходить в одному форматі, хоч би де його опублікували: номер, назва, замовник з ЄДРПОУ, CPV, очікувана вартість, строки в часовому поясі замовника й в UTC, статус і посилання на оригінал. Якщо той самий тендер є на кількох майданчиках, ви отримуєте один запис зі списком усіх місць публікації.

Джерела

  • Prozorro — публічні закупівлі України
  • Комерційні майданчики й портали закупівель компаній України
  • Європейський Союз (TED)
  • Національні системи закупівель інших країн, зокрема Велика Британія
  • Міжнародні організації, зокрема ООН

Свіжість

Кожне джерело опитується за власним розкладом: найчастіші — кожні кілька хвилин, решта — від години до кількох годин. Поле updated_at показує, коли запис востаннє змінився.

Поля тендера

ПолеОпис
idПостійний ідентифікатор запису в Radar (UUID). За ним оновлюйте рядки у себе.
numberНомер тендера в джерелі, наприклад UA-2026-10-11-000337-a.
title · title_translated · description · languageНазва й опис мовою оригіналу; переклад назви іноземного тендера українською, якщо він є.
status · status_sourceСтатус в єдиній шкалі Radar і статус так, як його подає джерело.
procedureТип процедури: код і назва.
buyerЗамовник: назва, ЄДРПОУ або національний ідентифікатор, регіон, населений пункт.
cpvОсновний код CPV з назвою й додаткові коди.
valueОчікувана вартість, валюта і чи враховано ПДВ.
published_at · submission_deadline · enquiry_end · auction_atДати й строки: місцевий час замовника (local) і UTC (utc); time_zone — часовий пояс замовника.
source · url · also_onДжерело, посилання на оригінал та інші майданчики, де опубліковано той самий тендер.
lots · items · documentsЛоти, позиції й документи, якщо джерело їх публікує.
radar_url · first_seen_at · updated_atКартка в Radar, коли ми вперше побачили тендер і коли запис востаннє змінився.

Автентифікація

Кожен запит несе ключ організації в заголовку Authorization: Bearer rdr_live_…. Ключ належить компанії, а не людині: його можна віддати сервісу чи інтеграції.

  1. 1Ключі створює власник або адміністратор компанії в Tender Radar: Налаштування → «API».
  2. 2Повний ключ ми показуємо один раз, одразу після створення. Збережіть його в менеджері секретів або змінній оточення.
  3. 3Ми зберігаємо лише хеш ключа, тож показати його вдруге не зможемо. Загубили ключ — відкличте його й створіть новий.
  4. 4Відкликаний ключ перестає працювати одразу. Для кожної інтеграції краще мати окремий ключ (до 10 активних).

Базова адреса

https://platform.aurum-apps.com/v1/data
Authorization: Bearer rdr_live_…

Перший запит

Відкриті тендери на покрівельні роботи в Україні. Ключ береться зі змінної оточення RADAR_API_KEY.

Ендпоінти

Усі відповіді — JSON у UTF-8. Списки повертаються як об'єкт з полем data. Параметри-списки можна повторювати або писати через кому.

Тендери

GET/v1/data/tenders

Пошук і вивантаження тендерів. Порядок завжди за (updated_at, id) за зростанням, тому курсор не пропускає змін.

ПараметрОпис
qПошук за словами з урахуванням словоформ. Точна фраза — у лапках, -слово виключає.
cpvКоди CPV або префікси від 2 до 8 цифр (45 — будівництво, 4526 — покрівельні роботи).
countryКраїна за ISO 3166-1 alpha-2: UA, PL, GB…; EU — тендери ЄС з TED.
sourceКоди джерел з /v1/data/sources.
groupСлаги груп компаній з /v1/data/buyer-groups.
buyerЗамовник: ЄДРПОУ, національний ідентифікатор або id замовника в Radar.
statusopen (типово) — ще можна подати пропозицію і строк не минув; any — будь-який статус; або конкретні статуси: planned, active, enquiry, tendering, auction, qualification, awarded, complete, cancelled, unsuccessful, closed_by_deadline, withdrawn_from_hub, notice, non_competitive.
value_min, value_maxОчікувана вартість від / до, у валюті самого тендера.
deadline_from, deadline_toКінцевий строк подання від / до, дата й час ISO 8601.
updated_sinceISO 8601: лише тендери, створені або змінені починаючи з цього моменту.
cursorНепрозорий курсор з next_cursor попередньої відповіді.
limitРозмір сторінки, 1–500, типово 100.
langМова назв CPV, процедур і джерел: uk (типово), ru, en.
formatjson (типово) або csv.
Приклад відповіді
{
  "data": [
    {
      "id": "0d6f4f7e-1c3b-4a51-9b7e-5b9b1f0c2a11",
      "number": "UA-2026-10-11-000337-a",
      "title": "Капітальний ремонт покрівлі",
      "status": "tendering",
      "source": { "code": "prozorro", "name": "Prozorro" },
      "value": { "amount": 1250000.0, "currency": "UAH", "vat_included": true },
      "submission_deadline": { "local": "2026-10-21T00:00:00+03:00", "utc": "2026-10-20T21:00:00Z" },
      "updated_at": "2026-10-11T19:31:02.123456Z",
      "…": "…"
    }
  ],
  "next_cursor": "eyJ1IjoiMjAyNi0xMC0xMVQxOTozMTowMi4xMjM0NTZaIiwiaSI6IjZmMWMifQ",
  "has_more": true,
  "as_of": "2026-10-11T19:40:00Z"
}

Один тендер

GET/v1/data/tenders/{id}

Повний запис за id. Якщо такого немає — 404 tender_not_found.

Без параметрів.

Приклад відповіді
{
  "id": "0d6f4f7e-1c3b-4a51-9b7e-5b9b1f0c2a11",
  "number": "UA-2026-10-11-000337-a",
  "title": "Капітальний ремонт покрівлі",
  "title_translated": null,
  "description": "…",
  "language": "uk",
  "status": "tendering",
  "status_source": "active.tendering",
  "procedure": {
    "code": "aboveThreshold",
    "label": "Відкриті торги з особливостями"
  },
  "buyer": {
    "name": "Київська міська рада",
    "edrpou": "22883141",
    "scheme": "UA-EDR",
    "region": "Київ",
    "locality": "Київ"
  },
  "country": "UA",
  "region": "Київ",
  "source": {
    "code": "prozorro",
    "name": "Prozorro"
  },
  "url": "https://prozorro.gov.ua/tender/UA-2026-10-11-000337-a",
  "also_on": [
    {
      "source": "smarttender",
      "url": "https://smarttender.biz/…"
    }
  ],
  "cpv": {
    "main": {
      "code": "45261000",
      "name": "Покрівельні роботи"
    },
    "extra": [
      {
        "code": "45262000",
        "name": "…"
      }
    ]
  },
  "value": {
    "amount": 1250000,
    "currency": "UAH",
    "vat_included": true
  },
  "time_zone": "Europe/Kyiv",
  "published_at": {
    "local": "2026-10-11T10:15:00+03:00",
    "utc": "2026-10-11T07:15:00Z"
  },
  "submission_start": {
    "local": "2026-10-11T10:15:00+03:00",
    "utc": "2026-10-11T07:15:00Z"
  },
  "enquiry_end": null,
  "submission_deadline": {
    "local": "2026-10-21T00:00:00+03:00",
    "utc": "2026-10-20T21:00:00Z"
  },
  "auction_at": null,
  "lots": [],
  "items": [],
  "documents": [],
  "radar_url": "https://platform.aurum-apps.com/uk/app/tenders/0d6f4f7e-1c3b-4a51-9b7e-5b9b1f0c2a11",
  "first_seen_at": "2026-10-11T07:16:40Z",
  "updated_at": "2026-10-11T19:31:02.123456Z"
}

Джерела

GET/v1/data/sources

Усі джерела: код, країна, сегмент, розклад опитування, час останнього успішного збору, стан і кількість відкритих тендерів. Коди — для параметра source.

ПараметрОпис
langМова назв CPV, процедур і джерел: uk (типово), ru, en.
Приклад відповіді
{
  "data": [
    {
      "code": "prozorro",
      "name": "Prozorro",
      "country": "UA",
      "segment": "ua_public",
      "kind": "api",
      "schedule_minutes": 5,
      "last_success_at": "2026-10-11T19:35:00Z",
      "status": "ok",
      "open_tenders": 18950
    }
  ]
}

Групи компаній

GET/v1/data/buyer-groups

Групи замовників (холдинги) з учасниками та їхніми кодами. Слаги — для параметра group.

ПараметрОпис
langМова назв CPV, процедур і джерел: uk (типово), ru, en.
Приклад відповіді
{
  "data": [
    {
      "slug": "metinvest",
      "name": "Метінвест",
      "aliases": [
        "Metinvest"
      ],
      "members": [
        {
          "edrpou": "00191000",
          "name": "ПрАТ «ММК ім. Ілліча»"
        }
      ]
    }
  ]
}

Довідник CPV

GET/v1/data/cpv

Пошук кодів CPV за префіксом коду або словами, з назвами трьома мовами.

ПараметрОпис
qПрефікс коду або слова.
langМова назв CPV, процедур і джерел: uk (типово), ru, en.
limitСкільки кодів повернути.
Приклад відповіді
{
  "data": [
    {
      "code": "45261000",
      "name": "Покрівельні роботи",
      "names": {
        "uk": "Покрівельні роботи",
        "en": "Roofing works",
        "ru": "Кровельные работы"
      }
    }
  ]
}

Використання

GET/v1/data/usage

Ваш ключ, ліміти, скільки запитів і рядків уже використано сьогодні та стан доступу.

Без параметрів.

Приклад відповіді
{
  "org": "ТОВ «Альфа»",
  "key": {
    "name": "ERP sync",
    "prefix": "rdr_live_ab12cd"
  },
  "limits": {
    "requests_per_minute": 120,
    "rows_per_day": 100000,
    "max_page": 500
  },
  "today": {
    "requests": 14,
    "rows": 1200,
    "rows_remaining": 98800
  },
  "subscription": {
    "status": "active",
    "plan": "api",
    "trial_until": null
  }
}

Схема OpenAPI

GET/v1/data/openapi.json

Схема OpenAPI 3 лише для API даних; ключ не потрібен. З неї можна згенерувати клієнт для своєї мови.

Без параметрів.

Інкрементальна синхронізація

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

  1. 1Перше завантаження: GET /v1/data/tenders?limit=500 і далі за next_cursor, поки has_more дорівнює true. Збережіть останній next_cursor.
  2. 2Кожні 10 хвилин: GET /v1/data/tenders?cursor=…&status=any&limit=500, знову поки has_more. Оновлюйте рядки за id: змінений тендер приходить ще раз уже з новим станом, наприклад closed_by_deadline. Збережіть новий next_cursor.
  3. 3status=any — щоб закриті й скасовані тендери теж приходили як зміни. Рядки, яких у вас не було і які вже не відкриті, можна пропускати.

Без пропусків і дублікатів: зміна, яка ще записується, чекає завершення запису, тож курсор її не перестрибне. Якщо запит обірвався, просто повторіть його з тим самим курсором.

Експорт у CSV

Додайте format=csv — ті самі рядки прийдуть як CSV: плоскі колонки, кома як роздільник, рядок заголовків, UTF-8 з BOM (Excel відкриває без налаштувань). Курсор приходить у заголовках X-Next-Cursor і X-Has-More, тож синхронізація працює так само.

Ліміти

  • 120 запитів на хвилину на кожен ключ.
  • 100 000 рядків тендерів на день на організацію (доба за UTC).
  • До 500 рядків на сторінку.
  • Обидва ліміти можна підняти для вашої організації — напишіть нам.

Заголовки лімітів

Кожна відповідь несе поточний стан лімітів:

ЗаголовокОпис
X-RateLimit-LimitЗапитів на хвилину для цього ключа.
X-RateLimit-RemainingСкільки запитів лишилося в поточній хвилині.
X-RateLimit-ResetСекунд до початку нової хвилини.
X-RateLimit-Rows-LimitРядків на день для організації.
X-RateLimit-Rows-RemainingСкільки рядків лишилося на сьогодні.
Retry-AfterЛише у відповіді 429: через скільки секунд повторити запит.

Помилки

Тіло помилки завжди однакове: code для програми, message і detail для людини. Помилка валідації (422) має стандартне тіло, де detail — список полів.

КодЩо сталося
401 missing_api_keyНемає заголовка Authorization: Bearer.
401 invalid_api_keyНевідомий ключ.
401 api_key_revokedКлюч відкликано.
402 api_plan_requiredВ організації немає активної підписки на API.
400 invalid_cursorКурсор пошкоджено або він не з цього API.
404 tender_not_foundТендера з таким id немає.
422 —Параметр має неправильне значення.
429 rate_limitedПеревищено ліміт запитів на хвилину; повторіть після Retry-After.
429 daily_rows_exceededВичерпано денний ліміт рядків; він оновиться опівночі за UTC.
{
  "code": "invalid_api_key",
  "message": "Unknown API key",
  "detail": "Check the Authorization header"
}

API за підпискою

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

Доступ уже є? Ключі створюються в Налаштуваннях → «API». Відкрити налаштування

Отримати ключ / Замовити доступ