Ukraine ProZorro Reconstruction Contracts Scraper
Ukraine ProZorro Reconstruction Contracts Scraper
Pulls awarded reconstruction contracts from Ukraine's ProZorro public-procurement system. Returns buyer, supplier, EDRPOU codes, contract value, item descriptions, dates, and parent-tender linkage for construction, demolition, capital repair, and engineering deals — the line items that actually rebuild the country.
Ukraine ProZorro Reconstruction Contracts Scraper Features
- Walks the ProZorro public API newest-first, so the freshest signed deals show up first.
- Filters client-side by DK021 / CPV classification (45* construction, 71* engineering, 34900000 demolition, 90* cleanup) and by Ukrainian-language keywords (відбудова, реконструкція, відновлення, капітальний ремонт). Override either list if your slice of "reconstruction" is narrower.
- Returns ~25 fields per contract — buyer name + EDRPOU + region, supplier name + EDRPOU + scale, value in UAH, dates, item descriptions, CPV codes, and a direct link to the contract page on prozorro.gov.ua.
- Pure JSON API. No proxy, no auth, no captcha. The data is publicly funded and designed for bulk consumption.
- Cyrillic / UTF-8 throughout — names and addresses come back in the original Ukrainian, not transliterated.
- Optional minimum-value filter in UAH for buyers who only care about the big-ticket awards.
Who Uses Ukrainian Reconstruction Contract Data?
- EU and US firms bidding rebuild work — Map who's already winning what, who the active buyers are, and which oblasts have the most pipeline.
- Sanctions and compliance teams — Screen supplier ownership chains against Russia-linked beneficiaries before signing on as a sub.
- Anti-corruption NGOs — Track donor-funded contracts (EU, USAID, World Bank) flowing through municipal buyers, and flag the unusual ones.
- Investigative journalists — Follow the money. The full procuringEntity chain is in the data.
- Construction-industry analysts — Build deal-flow dashboards by region, CPV category, or buyer kind.
- Government affairs and diplomatic missions — Keep a running view of post-war reconstruction spend without scraping the portal yourself.
How the Ukraine ProZorro Reconstruction Contracts Scraper Works
- Walks the ProZorro
/api/2.5/contractscursor feed in descending date order, page by page. - For each contract ID, fetches the full payload from the public API — items, suppliers, buyer, value, dates, classifications.
- Drops anything that doesn't match either the CPV prefix list or the Ukrainian keyword list. Optionally drops cancelled / terminated contracts and below-threshold values.
- Emits the survivor as a flat JSON record. No nested objects in arrays — just clean fields you can drop straight into a database or spreadsheet.
Input
{
"maxItems": 100,
"onlySignedContracts": true,
"minValueUah": 0,
"cpvPrefixes": [],
"keywords": []
}
| Field | Type | Default | Description |
|---|---|---|---|
maxItems |
integer | 10 |
Maximum number of reconstruction contracts to return. The scraper walks the feed newest-first and filters client-side, so larger values fetch more underlying records. Range: 1–5000. |
onlySignedContracts |
boolean | true |
When true, drops cancelled / terminated contracts. Set false to include the full lifecycle. |
minValueUah |
integer | 0 |
Skip contracts below this UAH value. 0 disables the filter. Note that small UAH amounts may have been originally signed in EUR or USD. |
cpvPrefixes |
array | [] |
Override the default DK021 / CPV prefix list. Empty array uses the defaults: 45, 71, 34900000, 90. Pass ["45"] for construction-only, ["71"] for engineering-only, etc. |
keywords |
array | [] |
Override the default Ukrainian keyword list. Empty array uses the defaults: відбудова, реконструкц, відновлення, відновлювальн, капітальний ремонт. Substring match, case-insensitive. |
Engineering-only example
{
"maxItems": 50,
"cpvPrefixes": ["71"],
"onlySignedContracts": true
}
Big-ticket awards only
{
"maxItems": 100,
"minValueUah": 5000000,
"onlySignedContracts": true
}
Ukraine ProZorro Reconstruction Contracts Scraper Output Fields
{
"contract_id": "6954e14eaaab4bd18187f34f6049c763",
"contract_number": "UA-2026-05-01-011820-a-a1",
"tender_id": "2121e6bb895641d2ad02112bd6fa4185",
"tender_number": "",
"status": "active",
"date_signed": "2026-04-29T00:00:00+03:00",
"date_modified": "2026-05-01T22:26:58.606160+03:00",
"period_start": "2026-04-29T00:00:00+03:00",
"period_end": "2026-12-31T23:59:59+02:00",
"title": "Проектно-вишукувальні послуги з розроблення технічної документації...",
"value_amount": 19500,
"value_currency": "UAH",
"value_with_vat": false,
"buyer_name": "Виходянська сільська рада",
"buyer_edrpou": "04377701",
"buyer_region": "Одеська область",
"buyer_locality": "Одеський район",
"supplier_name": "ФОП Рогачко С.П.",
"supplier_edrpou": "2487904601",
"supplier_region": "Одеська область",
"supplier_locality": "м.Біляївка",
"supplier_scale": "sme",
"additional_suppliers": [],
"cpv_codes": ["71330000-0"],
"item_descriptions": ["Проектно-вишукувальні послуги..."],
"reconstruction_signal": "cpv",
"profile_url": "https://prozorro.gov.ua/contract/6954e14eaaab4bd18187f34f6049c763",
"tender_profile_url": "https://prozorro.gov.ua/tender/2121e6bb895641d2ad02112bd6fa4185",
"scraped_at": "2026-05-01T19:29:28.769Z"
}
| Field | Type | Description |
|---|---|---|
contract_id |
string | ProZorro internal contract UUID. |
contract_number |
string | Human-readable contract identifier (e.g. UA-2025-...-c1). |
tender_id |
string | UUID of the parent tender on ProZorro. |
tender_number |
string | Parent tender's UA-... identifier when carried by the contract. |
status |
string | active, complete, pending, terminated, or cancelled. |
date_signed |
string (ISO 8601) | Date the contract was signed. |
date_modified |
string (ISO 8601) | Last modification timestamp. |
period_start |
string (ISO 8601) | Performance period start. |
period_end |
string (ISO 8601) | Performance period end. |
title |
string | Contract title in Ukrainian. |
value_amount |
number | Signed contract value (numeric). |
value_currency |
string | Currency code, typically UAH. |
value_with_vat |
boolean | Whether the signed value includes VAT. |
buyer_name |
string | Procuring entity legal name. |
buyer_edrpou |
string | Buyer's EDRPOU code (Ukraine state register ID). |
buyer_region |
string | Buyer's oblast / region. |
buyer_locality |
string | Buyer's city or settlement. |
supplier_name |
string | Primary awardee name. |
supplier_edrpou |
string | Supplier's EDRPOU code. |
supplier_region |
string | Supplier's oblast. |
supplier_locality |
string | Supplier's city. |
supplier_scale |
string | micro, sme, or large. |
additional_suppliers |
array of strings | Additional suppliers beyond the primary one, each formatted as Name (EDRPOU 12345) — Locality. |
cpv_codes |
array of strings | DK021 / CPV classification codes from the contract items. |
item_descriptions |
array of strings | Item descriptions from the contract, in Ukrainian. |
reconstruction_signal |
string | Why the contract matched: cpv, keyword, or cpv+keyword. |
profile_url |
string | Public ProZorro contract page URL. |
tender_profile_url |
string | Parent tender page URL. |
scraped_at |
string (ISO 8601) | When this record was scraped. |
FAQ
How do I scrape Ukrainian reconstruction contracts from ProZorro?
The Ukraine ProZorro Reconstruction Contracts Scraper does it for you. Set maxItems, hit run, and it walks the public API filtering for construction, engineering, demolition, and capital-repair contracts.
Does the Ukraine ProZorro Reconstruction Contracts Scraper need a proxy?
No. ProZorro's public API has no rate limit beyond a courtesy delay we apply ourselves, and there's no captcha or auth.
Can I narrow the scrape to just one CPV category?
Yes. Pass cpvPrefixes: ["45"] for construction work only, ["71"] for architectural / engineering services, or any combination. Empty array uses the full default set.
What's the difference between a "cpv" and "keyword" reconstruction signal?
The Ukraine ProZorro Reconstruction Contracts Scraper marks each contract with how it qualified. cpv means the classification code matched a reconstruction prefix; keyword means the title or item description contained a Ukrainian reconstruction word; cpv+keyword means both. Both signals together is the highest-confidence match.
How recent are the contracts?
ProZorro is real-time. Contracts appear in the feed within seconds of being signed in any of the authorised marketplaces, and this scraper walks newest-first.
Are values in UAH or original currency?
Whatever ProZorro reports — value_currency tells you which. Most are UAH. Some donor-funded reconstruction contracts (EU, USAID, World Bank) are denominated in EUR or USD; use value_currency to filter or convert.
Need More Features?
Want supplier sanctions enrichment, donor-source tagging, or full parent-tender history? File a feature request — we ship custom fields fast.
Why Use the Ukraine ProZorro Reconstruction Contracts Scraper?
- First Ukraine-specific procurement scraper on Apify — There's nothing else covering this dataset on the store.
- Native Ukrainian text — Names, addresses, and item descriptions stay in Ukrainian. No transliteration loss when you join against EDRPOU registries downstream.
- Both CPV and keyword filtering — Catches contracts that don't have the "right" classification but obviously belong (and vice versa).
- EDRPOU codes for buyer and supplier — The state-register ID that anchors every Ukrainian legal entity. Lets you cross-reference against sanctions lists, beneficial-owner registries, and YouControl exports without name-matching guesswork.