{
  "openapi": "3.0.1",
  "info": {
    "title": "Prozorro.Sale Ukraine Auctions",
    "description": "Search and monitor Ukrainian state auctions from Prozorro.Sale open data: privatization, property lease, land, bankruptcy and bank assets. Filter by type, status, region, CAV code, price and dates. Get prices, deadlines, documents and winners, with Telegram, Slack, email or webhook alerts.",
    "version": "1.0",
    "x-build-id": "t6PXVagLqHONlygQo"
  },
  "servers": [
    {
      "url": "https://api.apify.com/v2"
    }
  ],
  "paths": {
    "/acts/egra_van~prozorro-sale-auctions/run-sync-get-dataset-items": {
      "post": {
        "operationId": "run-sync-get-dataset-items-egra_van-prozorro-sale-auctions",
        "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/egra_van~prozorro-sale-auctions/runs": {
      "post": {
        "operationId": "runs-sync-egra_van-prozorro-sale-auctions",
        "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/egra_van~prozorro-sale-auctions/run-sync": {
      "post": {
        "operationId": "run-sync-egra_van-prozorro-sale-auctions",
        "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": {
          "mode": {
            "title": "What to do",
            "enum": [
              "search",
              "details",
              "types"
            ],
            "type": "string",
            "description": "\"search\" finds auctions matching the filters below (set \"Monitor name\" to get only new ones on every run). \"details\" returns full information for the auction IDs you list. \"types\" lists every selling method (auction type) with its ID prefix; it is free.",
            "default": "search"
          },
          "auctionIds": {
            "title": "Auction IDs (details mode)",
            "type": "array",
            "description": "Public auction IDs as shown on prozorro.sale, e.g. LRE001-UA-20260916-77195, or 24-character procedure IDs. Used in \"details\" mode; if you fill this and leave \"What to do\" empty, details mode is used.",
            "items": {
              "type": "string"
            }
          },
          "sellingMethods": {
            "title": "Auction types (selling methods)",
            "type": "array",
            "description": "Procedure families or exact selling methods. Examples: smallPrivatization, largePrivatization, legitimatePropertyLease (state/municipal property lease), landRental, landSell, basicSell, bankRuptcy, timber, subsoil, nonperformingLoans, dgf (bank assets). A family covers all its formats (english, dutch, …); an exact value like landRental-english matches only that. Run mode \"types\" to see the full list. Empty = all types.",
            "items": {
              "type": "string"
            }
          },
          "statuses": {
            "title": "Statuses",
            "type": "array",
            "description": "Only auctions in these statuses. Empty = any status.",
            "items": {
              "type": "string",
              "enum": [
                "active_rectification",
                "active_tendering",
                "active_auction",
                "active_qualification",
                "qualification",
                "active_awarded",
                "pending_payment",
                "pending_admission",
                "complete",
                "unsuccessful",
                "cancelled"
              ],
              "enumTitles": [
                "Published, terms may change (rectification)",
                "Open for bids (tendering)",
                "Auction running",
                "Winner being verified",
                "Qualification",
                "Winner confirmed",
                "Awaiting payment",
                "Awaiting admission",
                "Completed (sold / leased)",
                "Unsuccessful",
                "Cancelled"
              ]
            }
          },
          "openForBidsOnly": {
            "title": "Only auctions you can still bid on",
            "type": "boolean",
            "description": "Shortcut for statuses \"active_rectification\" and \"active_tendering\".",
            "default": false
          },
          "keywords": {
            "title": "Keywords",
            "type": "string",
            "description": "Words that must all appear in the title, description, item descriptions or address. Ukrainian works best (e.g. \"нежитлове приміщення\"); English titles are searched too when the organizer provided them. Case and apostrophes are ignored."
          },
          "regions": {
            "title": "Regions / cities",
            "type": "array",
            "description": "Part of the oblast or settlement name in Ukrainian, e.g. \"Київ\", \"Львівська\", \"Одеса\". Matches the address of the auctioned items (the organizer's address only when items have none). Any value may match.",
            "items": {
              "type": "string"
            }
          },
          "classificationCodes": {
            "title": "Classification codes (CAV / CPV)",
            "type": "array",
            "description": "Code or code prefix of the auctioned items, e.g. \"04\" (real estate), \"06\" (land), \"04121\" or \"06121000-6\". Additional classifications are checked too. Any value may match.",
            "items": {
              "type": "string"
            }
          },
          "organizerCodes": {
            "title": "Organizer / owner EDRPOU codes",
            "type": "array",
            "description": "Ukrainian company registration codes (EDRPOU) of the organizer running the auction or, for lease auctions, the property owner. Leading zeros are optional.",
            "items": {
              "type": "string"
            }
          },
          "minPrice": {
            "title": "Starting price from (UAH)",
            "minimum": 0,
            "type": "number",
            "description": "Minimum starting price. For lease auctions this is the monthly rent."
          },
          "maxPrice": {
            "title": "Starting price up to (UAH)",
            "minimum": 0,
            "type": "number",
            "description": "Maximum starting price."
          },
          "publishedFrom": {
            "title": "Published from",
            "type": "string",
            "description": "Only auctions published on or after this date, e.g. 2026-09-01 or \"7 days\" (ago). All auctions changed since this date are scanned, so the result is complete for the period (within \"Max pages to scan\")."
          },
          "publishedTo": {
            "title": "Published up to",
            "type": "string",
            "description": "Only auctions published on or before this date (a plain date includes the whole day, UTC)."
          },
          "auctionDateFrom": {
            "title": "Auction date from",
            "type": "string",
            "description": "Only auctions whose bidding session starts on or after this date, e.g. 2026-10-01 or \"+3 days\" (from now)."
          },
          "auctionDateTo": {
            "title": "Auction date up to",
            "type": "string",
            "description": "Only auctions whose bidding session starts on or before this date, e.g. \"+30 days\"."
          },
          "maxResults": {
            "title": "Max results",
            "minimum": 0,
            "type": "integer",
            "description": "Stop after this many matching auctions (search mode). 0 = no limit. Each returned auction is billed as one result.",
            "default": 200
          },
          "lookbackHours": {
            "title": "Look back (hours)",
            "minimum": 1,
            "maximum": 8760,
            "type": "integer",
            "description": "When no \"Published from\" date is set, scan auctions changed in this many past hours. Also used for the first run of a monitor.",
            "default": 24
          },
          "maxPages": {
            "title": "Max pages to scan",
            "minimum": 1,
            "maximum": 5000,
            "type": "integer",
            "description": "Safety limit for scanning the change feed. One page = up to 100 auctions. Busy days can have thousands of changes; if the scan is cut short, OUTPUT says so and a monitor continues where it stopped on the next run.",
            "default": 50
          },
          "scanMode": {
            "title": "Scan method",
            "enum": [
              "auto",
              "changeFeed",
              "latestByType"
            ],
            "type": "string",
            "description": "\"auto\": if you picked auction types and no date, read the latest 100 auctions of each type (fast); otherwise read every auction changed in the period (complete). \"changeFeed\" always reads the full period. \"latestByType\" always reads the latest 100 per type. Monitors always use the change feed.",
            "default": "auto"
          },
          "includeItems": {
            "title": "Include items (lots)",
            "type": "boolean",
            "description": "List every auctioned item with its classification, quantity, address and properties (area, cadastral number, …).",
            "default": true
          },
          "includeDocuments": {
            "title": "Include document links",
            "type": "boolean",
            "description": "List published documents (announcement, photos, contract, protocol …) with public download URLs.",
            "default": true
          },
          "includeRaw": {
            "title": "Include raw API record",
            "type": "boolean",
            "description": "Adds the original, untouched API record under \"raw\" (about 30 KB per auction).",
            "default": false
          },
          "monitorName": {
            "title": "Monitor name",
            "type": "string",
            "description": "Turns search into a monitor: each run outputs (and notifies about) only auctions this monitor has not reported before. Use a different name for every search you track, e.g. \"kyiv-land-rental\". Leave empty for a normal search."
          },
          "alertOn": {
            "title": "What counts as new",
            "enum": [
              "newlyPublished",
              "newlyMatching"
            ],
            "type": "string",
            "description": "\"newlyPublished\": only auctions published after the monitor started. \"newlyMatching\": also older auctions that start to match your filters (e.g. when they open for bids).",
            "default": "newlyPublished"
          },
          "reportAllOnFirstRun": {
            "title": "Report matches on the first run",
            "type": "boolean",
            "description": "By default the first run only remembers the current matches (baseline) and reports nothing. Enable to get them all as new on the first run.",
            "default": false
          },
          "resetState": {
            "title": "Start over",
            "type": "boolean",
            "description": "Forget everything this monitor remembered and start a new baseline.",
            "default": false
          },
          "stateStoreName": {
            "title": "State storage name",
            "type": "string",
            "description": "Named key-value store where monitors keep their memory between runs. Letters, digits and \"-\" only.",
            "default": "prozorro-sale-monitor"
          },
          "telegramBotToken": {
            "title": "Telegram bot token",
            "type": "string",
            "description": "Create a bot with @BotFather and paste its token."
          },
          "telegramChatId": {
            "title": "Telegram chat ID",
            "type": "string",
            "description": "Your user, group or channel ID (e.g. 123456789 or -1001234567890). Add the bot to the group or channel first."
          },
          "slackWebhookUrl": {
            "title": "Slack incoming webhook URL",
            "type": "string",
            "description": "https://hooks.slack.com/services/…"
          },
          "webhookUrl": {
            "title": "Webhook URL",
            "type": "string",
            "description": "Receives a POST with JSON (event, monitorName, newCount, message, auctions[]). Works with Make, Zapier, n8n or your own server."
          },
          "emailTo": {
            "title": "Email to",
            "type": "string",
            "description": "Sends a summary email through the apify/send-mail Actor (billed as a separate small run on your account). Several addresses: separate with commas."
          },
          "emailSubject": {
            "title": "Email subject",
            "type": "string",
            "description": "Default: \"<monitor>: 3 new Prozorro.Sale auctions\"."
          },
          "notifyMaxItems": {
            "title": "Auctions listed in a message",
            "minimum": 0,
            "maximum": 100,
            "type": "integer",
            "description": "How many auctions Telegram, Slack and email messages list before \"…and N more\".",
            "default": 10
          },
          "webhookMaxItems": {
            "title": "Auctions included in the webhook",
            "minimum": 0,
            "maximum": 1000,
            "type": "integer",
            "description": "Maximum number of auction records in the webhook JSON. The full list is always in the dataset.",
            "default": 100
          },
          "notifyOnNoChanges": {
            "title": "Also notify when nothing is new",
            "type": "boolean",
            "description": "Sends a short \"no new auctions\" message after every run, useful to know the monitor is alive.",
            "default": false
          },
          "instance": {
            "title": "Data source",
            "enum": [
              "main",
              "dgf"
            ],
            "type": "string",
            "description": "\"main\": procedure.prozorro.sale (privatization, lease, land, bankruptcy, timber, …). \"dgf\": dgf-procedure.prozorro.sale (assets of failed banks sold by the Deposit Guarantee Fund).",
            "default": "main"
          },
          "apiBaseUrl": {
            "title": "API base URL",
            "type": "string",
            "description": "Overrides the data source, e.g. https://procedure-staging.prozorro.sale (test data) or a local mock server. Leave empty."
          },
          "requestIntervalMs": {
            "title": "Pause between API requests",
            "minimum": 100,
            "maximum": 10000,
            "type": "integer",
            "description": "Minimum time between two requests to the Prozorro.Sale API, to stay polite. Requests are never sent in parallel.",
            "default": 300
          },
          "changedSince": {
            "title": "Scan changes since",
            "type": "string",
            "description": "Start of the change-feed scan, overriding \"Published from\" and \"Look back\". Useful to find status changes (e.g. completed auctions) in a period."
          }
        }
      },
      "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
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}