Ukraine ProZorro Tenders — Buyers, Suppliers & Values avatar

Ukraine ProZorro Tenders — Buyers, Suppliers & Values

Pricing

$4.00 / 1,000 tenders

Go to Apify Store
Ukraine ProZorro Tenders — Buyers, Suppliers & Values

Ukraine ProZorro Tenders — Buyers, Suppliers & Values

Search Ukraine's ProZorro public procurement — tenders, buyers, awarded suppliers, values, items (CPV) and status from the official OpenProcurement API. Filter by keyword, category, value and date; ideal for reconstruction-contract monitoring. Open data, no key.

Pricing

$4.00 / 1,000 tenders

Rating

0.0

(0)

Developer

Berkan Kaplan

Berkan Kaplan

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 days ago

Last modified

Categories

Share

Ukraine ProZorro Tenders

Ukraine ProZorro Tenders — Buyers, Suppliers & Values

Track Ukraine's public procurement — every tender, who's buying, who's winning, for how much, and who to call about it. This Actor reads Ukraine's official ProZorro / OpenProcurement system (the country's transparent e-procurement platform) and returns clean, structured tender records: title, status, category, the buying entity with its procurement officer's name, e-mail and phone, the awarded supplier(s), values, items with CPV codes and dates. Ideal for reconstruction-contract monitoring, supplier intelligence and B2G market research.

Built on the official OpenProcurement API (OCDS open-contracting standard) — open data, no API key, no login. Filter by keyword, category, region, value and date; results stream newest-first.

  • ☎️ A contact on almost every tender — the buying entity's officer name, e-mail and phone, filled on 92% of records (measured on a 400-tender run; narrower windows have run as high as 98%). Don't just watch tenders — reach the person running them.
  • 🇺🇦 All Ukrainian public tenders — from the official ProZorro CDB
  • 🏗️ Reconstruction-ready — filter to works (construction) tenders by region and value
  • 🤝 Buyers and suppliers — the procuring entity and the awarded winner (with EDRPOU codes and award amounts)
  • 🏷️ CPV-coded items — and the keyword search reads item descriptions and CPV codes, not just titles
  • 🆓 Open data (OCDS) — reuse and redistribute, no key

Quick start (API)

Recent construction (works) tenders over ₴1M in the Kyiv region:

curl -X POST "https://api.apify.com/v2/acts/foxlabs~ukraine-prozorro-tenders/run-sync-get-dataset-items?token=YOUR_APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "category": "works", "region": "Київ", "minValue": 1000000, "datePreset": "last_30_days", "maxResults": 200 }'

Prefer no code? Open the Input tab, set your filters, and click Start — then download the results.

What you get

One clean record per tender:

FieldTypeDescription
tenderIDstringPublic ProZorro tender ID (e.g. UA-2026-06-19-012201-a)
titlestringTender title (Ukrainian)
statusstringactive.* (open) / complete / cancelled / unsuccessful
procurementMethodstringe.g. aboveThreshold, belowThreshold, reporting
categorystringgoods / works / services
buyerName / buyerIdstringProcuring entity + its EDRPOU code
buyerContactNamestringThe procurement officer named on the tender
buyerContactEmailstringTheir e-mail — 92% filled
buyerContactPhonestringTheir phone — 92% filled
buyerKindstringEntity type: general, special, defense, social, authority
buyerRegion / buyerLocalitystringBuyer location
buyerAddress / buyerPostalCodestringStreet address and postcode
valueAmount / valueCurrencynumber / stringExpected value (usually UAH)
vatIncludedboolWhether the value includes VAT
awardCriteriastringHow the winner is picked (e.g. lowestCost)
cpvMainstringPrimary CPV code — the fastest way to filter a market
itemsarray{ description, cpv, quantity, unit } per lot
awardsarrayAwarded suppliers{ supplier, supplierId, awardValue, awardCurrency, awardStatus, awardDate }
bidCountnumberBids received — null while ProZorro still withholds them (see Data quality)
lotCount / documentCount / contractCountnumberLots, attached documents, signed contracts
dateCreated / noticePublishedAtstringCreated / officially published
enquiryPeriodEndstringDeadline for asking the buyer questions
tenderPeriodStart / tenderPeriodEndstringBidding opens / closes
dateModifiedstringLast change
tenderUrl / sourcestringPublic ProZorro page + provenance

Missing values come back as null, never a guess — and never a misleading 0.

Sample output

Real record — an elevator capital-repair tender in Kyiv (items & award abbreviated; the contact block is shown with a placeholder e-mail rather than reprinting a named official's address here — live runs return the real one from the register):

{
"tenderID": "UA-2026-06-19-012201-a",
"title": "Капітальний ремонт/заміна ліфта … в Оболонському районі м. Києва (CPV 45453000-7)",
"status": "active.qualification",
"procurementMethod": "aboveThreshold",
"category": "works",
"buyerName": "УПРАВЛІННЯ ЖИТЛОВО-КОМУНАЛЬНОГО ГОСПОДАРСТВА ОБОЛОНСЬКОЇ РАЙОННОЇ … АДМІНІСТРАЦІЇ",
"buyerId": "37445395",
"buyerKind": "general",
"buyerContactName": "Філатова Анастасія Володимирівна",
"buyerContactEmail": "tender.obolon@example.kyiv.ua",
"buyerContactPhone": "380971925137",
"buyerRegion": "м. Київ",
"buyerAddress": "ВУЛИЦЯ МАРШАЛА ТИМОШЕНКА, будинок 16",
"buyerPostalCode": "04205",
"valueAmount": 2195225,
"valueCurrency": "UAH",
"vatIncluded": true,
"awardCriteria": "lowestCost",
"cpvMain": "45453000-7",
"items": [ { "description": "Капітальний ремонт/заміна ліфта …", "cpv": "45453000-7", "quantity": 1, "unit": "робота" } ],
"awards": [ { "supplier": "МАЛЕ ПІДПРИЄМСТВО \"ПРОМКОМПЛЕКС\" …", "supplierId": "21615705", "awardValue": 2051018.19, "awardCurrency": "UAH", "awardStatus": "pending", "awardDate": "2026-07-06" } ],
"bidCount": 3,
"documentCount": 12,
"dateCreated": "2026-06-19",
"enquiryPeriodEnd": "2026-06-26",
"tenderPeriodEnd": "2026-07-06",
"tenderUrl": "https://prozorro.gov.ua/tender/UA-2026-06-19-012201-a",
"source": "ProZorro / OpenProcurement — Ukraine public procurement (open data)"
}

Example inputs (copy & paste)

// 1) Reconstruction works over ₴1M, last 30 days
{ "category": "works", "minValue": 1000000, "datePreset": "last_30_days", "maxResults": 500 }
// 2) Keyword — road / дорога — tenders
{ "searchTerm": "дорога", "datePreset": "last_90_days" }
// 3) Active tenders in a region
{ "status": "active", "region": "Львівська", "maxResults": 300 }
// 4) Completed contracts (to see awarded suppliers)
{ "status": "complete", "category": "works", "datePreset": "last_30_days" }
// 5) Custom date range
{ "datePreset": "custom", "dateFrom": "2026-01-01", "dateTo": "2026-03-31", "searchTerm": "школа" }

Input & filters

  • Keyword (searchTerm) — matches the title, description, every item description and every CPV code. Paste a CPV like 45453000 to pull a whole market segment, or a product name to find who's buying it.
  • Status (status) — active, complete, cancelled, unsuccessful, or any.
  • Category (category) — goods, works, services.
  • Buyer region (region) — substring match on the buyer's region.
  • Value (minValue / maxValue) — expected value bounds (UAH).
  • Date range (datePreset + dateFrom/dateTo) — how far back to read (by last-modified date); newest first.
  • Max results (maxResults) and Max scan (maxScan) — see Performance below.

Use cases

  • Reconstruction-contract monitoring. Filter works by region and value to track rebuild tenders as they're published — with the buying authority and (once awarded) the winning contractor.
  • Supplier & competitor intelligence. See which companies win which contracts and for how much (award value vs expected value).
  • B2G market entry. Size a category or region, find active tenders to bid on, and map the buyers.
  • Transparency & research. Ukraine's ProZorro is a global open-procurement benchmark; analyse spend, methods and outcomes.

Performance & throughput

The Actor reads the newest-first tender feed and fetches each tender's full detail (8 in parallel) to apply your filters. A short date range + broad filter is fast; a narrow filter over a long range must read more tenders to find matches, bounded by maxScan (default 20,000) — raise it for rare filters, and the run logs when the cap is hit (nothing is silently truncated). No proxies, no keys.

Integrations

Works with JavaScript / Python apify-client, Make / n8n / Zapier, scheduled runs, webhooks, and the Apify MCP server. Example (JS):

import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_APIFY_TOKEN' });
const run = await client.actor('foxlabs/ukraine-prozorro-tenders').call({
category: 'works', minValue: 1000000, datePreset: 'last_30_days', maxResults: 200,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();

Data quality (measured 2026-08-01)

Field fill rates on a 400-tender run over the last 7 days:

FieldFilled
buyerContactName, buyerContactEmail, buyerContactPhone92%
tenderID, buyerName, buyerId, buyerKind, status, category, valueAmount, cpvMain, items, tenderUrl100%
documentCount97%
vatIncluded94%
buyerAddress71%
awards (winning supplier)68% — only awarded tenders have one
tenderPeriodEnd, awardCriteria70%
enquiryPeriodEnd56%
description25% — most ProZorro tenders leave it blank; the detail is in items

Fill rates move with the window and the mix of procurement methods in it: a narrower 120-tender run measured 98.3% contacts, the wider 400-tender run 92%. The table above quotes the lower, larger-sample figure.

Verified against the source: 10 of 10 sampled records matched the OpenProcurement API exactly on title, buyer e-mail and value. E-mail syntax valid on 118/118 rows that had one. Unique tenders 400/400. No column was empty across every row.

Searching by CPV code was checked end-to-end: a run for 45453000 returned 100/100 rows that genuinely carry that code.

  • bidCount is null, not 0, until bids are disclosed. ProZorro withholds bids while a tender is open, so "no bids array" means not published yet, not nobody bid — reporting 0 there would be a lie. Measured: 88 of 120 rows were null, and zero rows reported a false 0. The same rule applies to lotCount, documentCount and contractCount.
  • Contacts come from the official public register. ProZorro requires each buying entity to publish a contact so suppliers can ask questions; that is the field this Actor returns, unchanged. Some are personal-looking addresses because that is what the officer registered. Use them for procurement enquiries — the purpose they were published for.
  • Phone formats are left raw. 110 of 118 start with Ukraine's 380 country code; the rest are in local format. Nothing is rewritten.
  • Repeat buyers are normal. 76 unique e-mails across 118 rows — a single authority runs many tenders.
  • Suppliers appear once a tender is awardedawards is empty for still-open tenders; filter status: "complete" to see winners.
  • Text is Ukrainian (titles, buyer/supplier names) — as published by ProZorro; use Ukrainian keywords for searchTerm.
  • Date filtering is by last-modified date (the feed's ordering) — a good proxy for "recent activity", not the original publication date.
  • Nothing is fabricated — a missing value is null.

Pricing

$0.004 per tender ($4 per 1,000) — pay only for results. You are charged per tender actually returned — tenders scanned but filtered out are never billed.

Pay per result — billed per tender returned. There's an Apify free tier to evaluate. No proxies, no third-party API costs — ProZorro's OpenProcurement API is free and open.

FAQ

Where does the data come from?

Ukraine's official ProZorro system via the OpenProcurement API (OCDS).

Can I use it commercially / resell it?

Yes — ProZorro is open public-procurement data, published for reuse.

Do I get the winning supplier?

Yes, once a tender is awarded (awards with the supplier, its EDRPOU code and the award amount).

Is it only reconstruction tenders?

No — it's all Ukrainian public procurement; filter category: "works" (+ region/value) for reconstruction-type contracts.

Do I get a contact for the buyer?

Yes — the officer's name, e-mail and phone, on ~92% of tenders (measured). It's the contact the buying entity publishes in the official register precisely so suppliers can reach them.

Do I need an API key for ProZorro?

No. No key, no login.

Troubleshooting

  • Few results for a narrow filter → raise maxScan, or widen the date range / filters.
  • No awards on a tender → it's still open; awarded suppliers appear on complete tenders.
  • Keyword returns nothing → use the Ukrainian term (e.g. дорога not road).

Support

Questions, a field you'd like added, or a custom build? Open the Issues tab, or email info@foxlabs.com.tr. We reply fast.

If this Actor saves you time, a ⭐ review really helps.

Changelog

0.2 — 2026-08-01

  • Buyer contacts addedbuyerContactName, buyerContactEmail, buyerContactPhone (measured 92% filled on a 400-tender run). They were already in the API response the Actor fetched and were being discarded, so this costs no extra requests and no extra runtime.
  • More of the tender exposed: buyerKind, buyerAddress, buyerPostalCode, vatIncluded, awardCriteria, cpvMain, enquiryPeriodEnd, tenderPeriodStart, noticePublishedAt, bidCount, lotCount, documentCount, contractCount.
  • Keyword search now reads item descriptions and CPV codes, not just the tender title — a supplier searching for their product finds tenders whose title never names it.
  • Counts stay null when undisclosed rather than reporting a misleading 0 (ProZorro withholds bids until a tender closes).
  • New Buyer contacts output view in the Console.

0.1 — 2026-07-09

  • Initial release. Ukraine ProZorro / OpenProcurement tenders with buyers, awarded suppliers, values, CPV-coded items and status. Filter by keyword, status, category, region, value and date. Open OCDS data, no key.

Part of the foXLabs data platform — official public-data company, contact, ownership, charity, procurement, location & AI-search intelligence scrapers. Browse the full suite at data.foxlabs.com.tr.