Ukraine Prozorro Tenders API – English, CPV & Daily Alerts avatar

Ukraine Prozorro Tenders API – English, CPV & Daily Alerts

Pricing

from $2.40 / 1,000 tenders

Go to Apify Store
Ukraine Prozorro Tenders API – English, CPV & Daily Alerts

Ukraine Prozorro Tenders API – English, CPV & Daily Alerts

Ukraine public tenders from the official Prozorro API for foreign contractors and reconstruction work: CPV, keywords, delivery oblast, UAH value, deadlines, links. Daily only-new alerts. JSON, CSV, Excel.

Pricing

from $2.40 / 1,000 tenders

Rating

0.0

(0)

Developer

Kamil Kaczmarek

Kamil Kaczmarek

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Ukraine public tenders from Prozorro, the official e-procurement system of Ukraine, as clean rows with English field names: title, buyer, delivery oblast, CPV codes, value in UAH, status, bid deadline and a link to the tender on prozorro.gov.ua. Filter by CPV code, keywords, oblast and value, keep only tenders still open for bids, and schedule an only-new daily alert. Built for foreign contractors, suppliers and consultants following Ukraine reconstruction tenders.

Data is read live from the Prozorro public API during each run. No login, no API key, no website scraping.

Need Czechia, Slovakia, Hungary or EU TED tenders in the same run? Use EU TED Tenders API – Czech, Slovak, Hungarian & Prozorro.

Use with AI agents (MCP)

Agents can call this Actor through the Apify MCP server:

{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=enterprising_hamster/ukraine-prozorro-tenders"
}
}
}
  • "Which construction tenders were published on Prozorro in the last day?" → {"cpvCodes": ["45000000-7"], "lastDays": 1, "maxItems": 50}
  • "Find open Ukrainian tenders for generators and energy equipment." → {"keywords": ["генератор", "енергетичн", "energy"], "lastDays": 1, "maxItems": 50}
  • "Show reconstruction works in Kharkiv oblast above 1 million UAH." → {"cpvCodes": ["45"], "regions": ["Харківська область"], "minValueUah": 1000000, "lastDays": 1}

What data can you get

FieldMeaning
id, tenderIdProzorro internal id and the public tender number such as UA-2026-10-31-000509-a
title, titleEnTitle in Ukrainian; titleEn only when the buyer published an English title (rare)
descriptionTender description, only with includeDetails
procuringEntityBuyer (contracting authority) name
regionDelivery oblast(s) from the tender items, comma-joined; null when the items carry no delivery region
cpv, cpvCodescpv is the item code that matched your cpvCodes filter (the first item code without a filter); cpvCodes lists every item code
value, currencyExpected value and currency as published
statusProzorro status, e.g. active.tendering (bids open) or active.enquiries (questions period)
tenderPeriod.start, tenderPeriod.endBid submission period; end is the bid deadline
urlhttps://prozorro.gov.ua/tender/{tenderId}
publishedAtPublication time with offset

Example row (title shortened):

{
"tenderId": "UA-2026-10-31-000509-a",
"title": "Послуга з усунення аварій в житловому фонді (поточний ремонт електромереж …)",
"procuringEntity": "ДЕПАРТАМЕНТ З ПИТАНЬ САМООРГАНІЗАЦІЇ НАСЕЛЕННЯ ДНІПРОВСЬКОЇ МІСЬКОЇ РАДИ",
"region": "Дніпропетровська область",
"cpv": "45310000",
"cpvCodes": ["45310000"],
"value": 463400,
"currency": "UAH",
"status": "active.tendering",
"tenderPeriod": { "start": "2026-10-31T15:22:12.888456+02:00", "end": "2026-11-16T00:00:00+02:00" },
"url": "https://prozorro.gov.ua/tender/UA-2026-10-31-000509-a",
"publishedAt": "2026-10-31T15:22:44.072836+02:00"
}

Direct awards without competition (reporting, negotiation, negotiation.quick) are excluded.

Input

FieldDefaultMeaning
lastDays1Tenders published in the last N days (1–90)
cpvCodes[]CPV prefixes, e.g. 45000000-7 or 45 for construction works, 09310000 for electricity
keywords[]Any of these words in the title, description or item descriptions; case- and accent-insensitive; most tenders are written in Ukrainian, so use Ukrainian words
regions[]Delivery oblasts as Prozorro writes them, e.g. Київська область, Харківська область
minValueUah, maxValueUahnoneValue bounds; tenders without a value or in another currency are dropped when a bound is set
onlyOpentrueOnly tenders in active.enquiries or active.tendering
includeDetailsfalseAdds description (charged as tender-with-details)
maxItems50Maximum rows saved per run (1–10,000)
onlyNew, stateKeyfalseSkip tenders delivered by earlier runs with the same key
maxRequestsPerSecond5Request rate to Prozorro (0.2–5)

{} returns up to 50 open tenders published in the last day; our test run took 20 seconds.

Daily alert of new tenders

  1. Save the input as a task with onlyNew: true, lastDays: 1 and your own stateKey (a secret field, use one key per alert). Two ready-made tasks: daily construction tenders (CPV 45) and daily energy and generator tenders.
  2. Schedule it in Schedules, for example 0 7 * * *.
  3. Send the results onward with an integration: e-mail, Slack, Google Sheets, Make, Zapier, n8n or a webhook on Run succeeded.
{
"cpvCodes": ["45000000-7"],
"lastDays": 1,
"onlyOpen": true,
"maxItems": 200,
"onlyNew": true,
"stateKey": "ua-construction-daily",
"maxRequestsPerSecond": 5
}

How long a run takes

Prozorro's list feed has no CPV or keyword filter, so with cpvCodes, keywords or regions the Actor opens every open tender changed in the window and filters it after. Test runs on Sunday 2026-11-01: CPV 45 with lastDays: 1 took 78 s (12 tenders), energy keywords with lastDays: 1 took 79 s (8 tenders). CPV 45 with lastDays: 3 reached the 900 s timeout after saving 165 tenders. Weekdays carry more tenders than weekends.

  • For a daily alert keep lastDays: 1.
  • For a backfill of several days, keep the default Timeout of 3600 s or raise it in Run options. Rows saved before a timeout stay in the dataset and are charged once.

Pricing (pay per event)

EventPrice (USD)When
tender0.003Each saved tender
tender-with-details0.006Each saved tender when includeDetails is on

50 tenders cost $0.15 ($0.30 with details). Higher Apify plans pay less: SILVER $0.0027 and GOLD $0.0024 per tender. Tenders skipped by onlyNew or by your filters are not charged. Set a maximum charge per run to cap spending.

FAQ

Is there an official Prozorro API? Yes, the public API at public-api.prozorro.gov.ua (docs). This Actor walks its list feed, opens each tender and turns it into a flat row.

Is reuse allowed? Prozorro data is open: it may be copied and reused, including commercially, with a link to the source (prozorro.gov.ua/openprocurement). Every row carries url.

Why is titleEn usually missing? English titles exist only when the buyer filled title_en; most tenders are published in Ukrainian only. Use Ukrainian keywords for filtering and a translation step downstream.

Why is region sometimes empty? The oblast comes from the items' delivery address. Some buyers leave it out; those tenders do not match a regions filter.

Does it cover awarded contracts? Set onlyOpen: false to include later stages (qualification, awarded, complete, cancelled). Direct awards are always excluded.

Limitations

  • No server-side CPV filter on Prozorro's list, so filtered windows longer than a day are slow (see above).
  • The only-new memory keeps 50,000 tender ids per stateKey.
  • Values are not converted between currencies.

Disclaimer

Unofficial tool. Not affiliated with or endorsed by Prozorro or the Ministry of Economy of Ukraine. Always check the tender at its source before you bid.

Development

python3 -m venv .venv
.venv/bin/pip install -r requirements.txt -r requirements-dev.txt
.venv/bin/python -m pytest -q

Fixtures under tests/fixtures/ are static samples, not live responses.