Prozorro Scraper
Pricing
$2.00 / 1,000 tenders
Go to Apify Store
Prozorro Scraper
Scrape Ukrainian public tenders from Prozorro (ProZorro): buyers, EDRPOU, CPV, expected value, bids, winners, contracts. Search by keyword or filters.
Prozorro Scraper
Pricing
$2.00 / 1,000 tenders
Scrape Ukrainian public tenders from Prozorro (ProZorro): buyers, EDRPOU, CPV, expected value, bids, winners, contracts. Search by keyword or filters.
You can access the Prozorro Scraper programmatically from your own applications by using the Apify API. You can also choose the language preference from below. To use the Apify API, you’ll need an Apify account and your API token, found in API & Integrations in Apify Console.
{ "openapi": "3.0.1", "info": { "version": "0.0", "x-build-id": "yssvvXt5b7fwGFDf8" }, "servers": [ { "url": "https://api.apify.com/v2" } ], "paths": { "/acts/donjuan_mime~prozorro-scraper/run-sync-get-dataset-items": { "post": { "operationId": "run-sync-get-dataset-items-donjuan_mime-prozorro-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } }, "/acts/donjuan_mime~prozorro-scraper/runs": { "post": { "operationId": "runs-sync-donjuan_mime-prozorro-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor and returns information about the initiated run in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/runsResponseSchema" } } } } } } }, "/acts/donjuan_mime~prozorro-scraper/run-sync": { "post": { "operationId": "run-sync-donjuan_mime-prozorro-scraper", "x-openai-isConsequential": false, "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.", "tags": [ "Run Actor" ], "requestBody": { "required": true, "content": { "application/json": { "schema": { "$ref": "#/components/schemas/inputSchema" } } } }, "parameters": [ { "name": "token", "in": "query", "required": true, "schema": { "type": "string" }, "description": "Enter your Apify token here" } ], "responses": { "200": { "description": "OK" } } } } }, "components": { "schemas": { "inputSchema": { "type": "object", "properties": { "searchQueries": { "title": "Search queries", "type": "array", "description": "Keywords to search tenders for, in Ukrainian as they appear in tender titles (for example \"ноутбук\" or \"ремонт дороги\"). Each query runs as its own search with all the filters below.", "items": { "type": "string" } }, "buyerEdrpou": { "title": "Buyer EDRPOU codes", "type": "array", "description": "Only tenders announced by these buyers, by their 8-digit EDRPOU code.", "items": { "type": "string" } }, "cpvCodes": { "title": "CPV codes", "type": "array", "description": "Only tenders for these CPV (DK 021:2015) codes, for example \"30210000-4\" for computers.", "items": { "type": "string" } }, "regions": { "title": "Regions", "type": "array", "description": "Only tenders whose buyer is in these regions. Each region runs as its own search.", "items": { "type": "string", "enum": [ "kyiv", "kyivska", "vinnytska", "volynska", "dnipropetrovska", "donetska", "zhytomyrska", "zakarpatska", "zaporizka", "ivanofrankivska", "kirovohradska", "luhanska", "lvivska", "mykolaivska", "odeska", "poltavska", "rivnenska", "sumska", "ternopilska", "kharkivska", "khersonska", "khmelnytska", "cherkaska", "chernivetska", "chernihivska" ], "enumTitles": [ "Kyiv city", "Kyiv oblast", "Vinnytsia oblast", "Volyn oblast", "Dnipropetrovsk oblast", "Donetsk oblast", "Zhytomyr oblast", "Zakarpattia oblast", "Zaporizhzhia oblast", "Ivano-Frankivsk oblast", "Kirovohrad oblast", "Luhansk oblast", "Lviv oblast", "Mykolaiv oblast", "Odesa oblast", "Poltava oblast", "Rivne oblast", "Sumy oblast", "Ternopil oblast", "Kharkiv oblast", "Kherson oblast", "Khmelnytskyi oblast", "Cherkasy oblast", "Chernivtsi oblast", "Chernihiv oblast" ] } }, "statuses": { "title": "Statuses", "type": "array", "description": "Only tenders in these statuses.", "items": { "type": "string", "enum": [ "active.enquiries", "active.tendering", "active.pre-qualification", "active.auction", "active.qualification", "active.awarded", "complete", "cancelled", "unsuccessful" ], "enumTitles": [ "Clarifications period", "Accepting bids", "Pre-qualification", "Auction", "Qualification of the winner", "Proposals reviewed", "Complete", "Cancelled", "Unsuccessful" ] } }, "procurementMethodTypes": { "title": "Procurement types", "type": "array", "description": "Only tenders run under these procedures.", "items": { "type": "string", "enum": [ "belowThreshold", "aboveThreshold", "aboveThresholdUA", "aboveThresholdEU", "competitiveOrdering", "priceQuotation", "negotiation", "negotiation.quick", "reporting", "competitiveDialogueUA", "competitiveDialogueEU", "closeFrameworkAgreementUA", "requestForProposal", "simple.defense", "esco" ], "enumTitles": [ "Below-threshold procurement", "Open bidding (with features)", "Open bidding", "Open bidding with English publication", "Competitive ordering", "Price quotation request", "Negotiated procedure", "Negotiated procedure for urgent need", "Direct purchase report", "Competitive dialogue", "Competitive dialogue with English publication", "Framework agreement selection", "Request for proposal", "Simplified defense procurement", "ESCO" ] } }, "minAmount": { "title": "Minimum expected value (UAH)", "minimum": 0, "type": "integer", "description": "Only tenders whose expected value is at least this many hryvnias." }, "maxAmount": { "title": "Maximum expected value (UAH)", "minimum": 0, "type": "integer", "description": "Only tenders whose expected value is at most this many hryvnias." }, "dateFrom": { "title": "Bidding starts from", "type": "string", "description": "Only tenders whose bidding period starts on or after this date (YYYY-MM-DD). Direct purchases have no bidding period and drop out of a date-filtered search." }, "dateTo": { "title": "Bidding starts until", "type": "string", "description": "Only tenders whose bidding period starts on or before this date (YYYY-MM-DD)." }, "sortBy": { "title": "Sort by", "enum": [ "relevance", "newest", "oldest", "valueHighest", "valueLowest" ], "type": "string", "description": "Order of search results.", "default": "relevance" }, "tenderIds": { "title": "Tender IDs", "type": "array", "description": "Specific tenders to fetch, by their UA-... ID (for example UA-2026-10-16-013225-a).", "items": { "type": "string" } }, "startUrls": { "title": "Tender URLs", "type": "array", "description": "Links to tender pages on prozorro.gov.ua, for example https://prozorro.gov.ua/tender/UA-2026-10-16-013225-a.", "items": { "type": "object", "required": [ "url" ], "properties": { "url": { "type": "string", "title": "URL of a web page", "format": "uri" } } } }, "maxItems": { "title": "Max tenders per search", "minimum": 1, "type": "integer", "description": "The maximum number of tenders to scrape from each search query and region. Prozorro serves up to 10,000 results per search.", "default": 100 }, "includeDetails": { "title": "Include details", "type": "boolean", "description": "Add the full lists of items, lots, bids, awards, contracts, and documents to each tender. Without it you still get the buyer, CPV, value, periods, number of bids, and the winner.", "default": false }, "proxyCountryCode": { "title": "Proxy country", "type": "string", "description": "Two-letter country code (UA, PL, ...) to use Apify residential proxy in that country. \"None\" uses Apify datacenter proxy.", "default": "None" } } }, "runsResponseSchema": { "type": "object", "properties": { "data": { "type": "object", "properties": { "id": { "type": "string" }, "actId": { "type": "string" }, "userId": { "type": "string" }, "startedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "finishedAt": { "type": "string", "format": "date-time", "example": "2025-01-08T00:00:00.000Z" }, "status": { "type": "string", "example": "READY" }, "meta": { "type": "object", "properties": { "origin": { "type": "string", "example": "API" }, "userAgent": { "type": "string" } } }, "stats": { "type": "object", "properties": { "inputBodyLen": { "type": "integer", "example": 2000 }, "rebootCount": { "type": "integer", "example": 0 }, "restartCount": { "type": "integer", "example": 0 }, "resurrectCount": { "type": "integer", "example": 0 }, "computeUnits": { "type": "integer", "example": 0 } } }, "options": { "type": "object", "properties": { "build": { "type": "string", "example": "latest" }, "timeoutSecs": { "type": "integer", "example": 300 }, "memoryMbytes": { "type": "integer", "example": 1024 }, "diskMbytes": { "type": "integer", "example": 2048 } } }, "buildId": { "type": "string" }, "defaultKeyValueStoreId": { "type": "string" }, "defaultDatasetId": { "type": "string" }, "defaultRequestQueueId": { "type": "string" }, "buildNumber": { "type": "string", "example": "1.0.0" }, "containerUrl": { "type": "string" }, "usage": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "integer", "example": 1 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 }, "PROXY_UNBLOCKER_UNITS": { "type": "integer", "example": 0 } } }, "usageTotalUsd": { "type": "number", "example": 0.00005 }, "usageUsd": { "type": "object", "properties": { "ACTOR_COMPUTE_UNITS": { "type": "integer", "example": 0 }, "DATASET_READS": { "type": "integer", "example": 0 }, "DATASET_WRITES": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_READS": { "type": "integer", "example": 0 }, "KEY_VALUE_STORE_WRITES": { "type": "number", "example": 0.00005 }, "KEY_VALUE_STORE_LISTS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_READS": { "type": "integer", "example": 0 }, "REQUEST_QUEUE_WRITES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_INTERNAL_GBYTES": { "type": "integer", "example": 0 }, "DATA_TRANSFER_EXTERNAL_GBYTES": { "type": "integer", "example": 0 }, "PROXY_RESIDENTIAL_TRANSFER_GBYTES": { "type": "integer", "example": 0 }, "PROXY_SERPS": { "type": "integer", "example": 0 }, "PROXY_UNBLOCKER_UNITS": { "type": "integer", "example": 0 } } } } } } } } }}OpenAPI is a standard for designing and describing RESTful APIs, allowing developers to define API structure, endpoints, and data formats in a machine-readable way. It simplifies API development, integration, and documentation.
OpenAPI is effective when used with AI agents and GPTs by standardizing how these systems interact with various APIs, for reliable integrations and efficient communication.
By defining machine-readable API specifications, OpenAPI allows AI models like GPTs to understand and use varied data sources, improving accuracy. This accelerates development, reduces errors, and provides context-aware responses, making OpenAPI a core component for AI applications.
You can download the OpenAPI definitions for Prozorro Scraper from the options below:
If you’d like to learn more about how OpenAPI powers GPTs, read our blog post.
You can also check out our other API clients: