Prozorro Tenders Scraper avatar

Prozorro Tenders Scraper

Pricing

from $2.00 / 1,000 tenders

Go to Apify Store
Prozorro Tenders Scraper

Prozorro Tenders Scraper

Ukraine public procurement tenders from the official Prozorro API: filter by date, keywords, CPV codes, region, status and value. Buyer, contacts, deadlines, items, documents. Pay per tender.

Pricing

from $2.00 / 1,000 tenders

Rating

0.0

(0)

Developer

Yurij

Yurij

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Categories

Features

Limited permissions

Share

Extract public procurement tenders from Prozorro, Ukraine's national e-procurement system, through its official open API. Filter by modification date, keywords, CPV (ДК 021:2015) codes, buyer region, status and budget, and get clean JSON, CSV or Excel with the buyer, expected value, deadlines, items and document links.

Ukraine publishes every public tender above the reporting threshold on Prozorro: roughly 1–2 million procedures a year across central government, municipalities, hospitals, schools, utilities and state companies. This Actor turns that feed into a filtered, structured dataset you can schedule, export or pipe into Google Sheets, a CRM or a Slack alert.

What you get

One record per matching tender:

FieldExample
tenderIDUA-2026-11-09-001234-a
titleЗакупівля ноутбуків для закладів освіти
statusactive.tendering
procurementMethodTypebelowThreshold, aboveThreshold, reporting, …
valueAmount, valueCurrency1250000, UAH
buyerName, buyerEDRPOU, buyerRegion, buyerLocalitybuyer organisation, tax ID, region, city
contactName, contactEmail, contactPhonethe buyer's published contact point
tenderStartDate, tenderEndDate, enquiryEndkey deadlines
cpvCodes, cpvDescriptionsall ДК 021 codes on the tender
items[]description, CPV, quantity, unit, delivery region
documents[] (optional)title, URL, format of each attached document
urllink to the tender on prozorro.gov.ua

Input

InputMeaning
Modified since / untilThe feed is ordered by modification time; this bounds how much is scanned. Default: last 24 hours.
KeywordsAny keyword in the title, description or item descriptions keeps the tender (case-insensitive, Ukrainian or English).
CPV prefixese.g. 30 computers, 33 medical, 45 construction, 72 IT services, 09 fuel.
Buyer regionsSubstring match on the buyer's region, e.g. Київ, Львівська.
StatusesDefault: active.enquiries, active.tendering (open for bids).
Min / max valueExpected value in UAH.
Max tenders / max scannedOutput cap and request cap.
Include document linksAdds the documents[] array.

Example: open IT tenders in Kyiv above 500k UAH, last 3 days

{
"dateFrom": "2026-11-06",
"cpvPrefixes": ["30", "48", "72"],
"regions": ["Київ"],
"statuses": ["active.enquiries", "active.tendering"],
"minValue": 500000,
"maxItems": 500
}

Example: daily alert for medical supplies nationwide

Schedule the Actor daily with keywords: ["рукавички", "шприц", "маск"] and cpvPrefixes: ["33"], then connect an Apify integration (Google Sheets, Slack, email or webhook) to the dataset.

How it works

  1. Reads the public tender feed /api/2.5/tenders from the given date forward (100 tenders per page).
  2. Fetches each tender's full record in parallel (default 8 concurrent requests, polite retries with backoff).
  3. Applies your filters and pushes normalized records to the dataset.
  4. Stops at maxItems, maxScanned or the end of the feed, and writes a SUMMARY record to the key-value store.

Only public data from the official API is used. No login, no scraping of the website UI, no bypassing of any protection.

Pricing

Pay per event: $2.00 per 1,000 tenders saved to the dataset plus $0.01 per run; platform usage is included. You only pay for matching tenders, not for everything scanned, so a daily alert with a few dozen matches costs about 10 cents. The free Apify plan credit covers roughly 2,000 tenders a month.

Tips

  • Narrow Modified since first. A week of the full feed is tens of thousands of tenders; a keyword or CPV filter does not reduce scanning, only output.
  • Statuses: use active.enquiries + active.tendering to see what you can still bid on; add complete and active.awarded for market analysis of who won what.
  • CPV codes are hierarchical. 3321 matches 33210000-9 and everything under it.
  • For historical analysis across months, raise maxScanned and run with a larger memory setting, or split the period into several scheduled runs.

Looking for Polish, Romanian or EU-wide tenders (BZP, SEAP, TED), or for supplier/company registries? Check the other Actors by this author or contact me through Apify for a custom source.

Changelog

  • 0.1: initial release — feed walking, filters, normalized output, optional document links, pay-per-event.