# Ukraine Prozorro Tender Alerts - Public Procurement API (`orange_briefcase_hrj/ukraine-prozorro-tender-alerts`) Actor

$1.50 per 1,000 tenders. New Ukrainian public tenders (тендери, публічні закупівлі) from the official Prozorro API. Filter by keyword, CPV (DK 021), oblast, value, category, procedure type and buyer EDRPOU; only new tenders are returned.

- **URL**: https://apify.com/orange_briefcase_hrj/ukraine-prozorro-tender-alerts.md
- **Developed by:** [Fast Agent](https://apify.com/orange_briefcase_hrj) (community)
- **Categories:** Lead generation, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.20 / 1,000 new tenders

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

**Price: $1.50 per 1,000 tenders** ($1.35 on Apify Scale, $1.20 on Business and above) · no API key, login or proxy · official Prozorro open data

### Українською

**Нові тендери та публічні закупівлі з Prozorro.** Актор отримує тендери через офіційний публічний API Prozorro і повертає їх у форматі JSON, CSV або Excel.
Відкриті дані Prozorro можна вільно використовувати, зокрема в комерційних цілях, за умови посилання на джерело; кожен запис містить поле `attribution` із джерелом і датою отримання.
Фільтруйте за ключовими словами, кодом ДК 021 (CPV), областю замовника, категорією, очікуваною вартістю, типом процедури та кодом ЄДРПОУ. Режим *Only new since last run* у щоденному розкладі повертає лише нові тендери.
Приклад: `"keywords": ["генератор"], "regions": ["Kyiv City"]` знайде закупівлі генераторів у Києві.
Ціна: 1,50 $ за 1 000 тендерів плюс 0,00005 $ за запуск.
**З ШІ-асистентами:** Працює також у ChatGPT, Claude та Cursor через MCP-сервер Apify – див. розділ *Use it from ChatGPT, Claude or Cursor* нижче.

Get **new Ukrainian public tenders** from **Prozorro**, Ukraine's official e-procurement system, as clean JSON, CSV or Excel. You can filter by keyword, **CPV (DK 021) code**, buyer region (oblast), category, expected value, procedure type and buyer EDRPOU code. In **"only new since last run"** mode, a daily schedule gives you just the tenders you haven't seen yet, with English labels for procedure types and regions.

It suits suppliers, reconstruction contractors, international firms entering the Ukrainian market, and analysts tracking public spending.

### What does Ukraine Prozorro Tender Alerts do?

- Reads the official **Prozorro public API** (`public-api.prozorro.gov.ua`, OpenProcurement API 2.5). It needs no key, login or proxy.
- Finds **tenders created in your time window** and, by default, keeps **competitive procedures still open for bids**: open tenders, simplified procurements, requests for quotation, competitive dialogue and framework selections. You can include direct-contract reports and negotiated procedures too.
- **Filters** by keyword stems (Ukrainian or English, in titles, descriptions and item descriptions), excluded words, **CPV / DK 021 prefixes**, **buyer oblast** (English or Ukrainian names), category (goods, services, works), minimum and maximum value in UAH, buyer name and **EDRPOU code**.
- Returns value, currency, deadline, clarification period, items' CPV codes, delivery regions, lots, documents count and a direct **prozorro.gov.ua link**, with `procedureTypeEn` and `buyerRegionEn` labels.
- **"Only new since last run" mode** remembers what each alert has already delivered.
- Saves an optional **summary digest** with counts by procedure, category and region, top buyers, the largest tenders and those closing soonest.

### Why use it?

- **Ukraine is one of Europe's busiest procurement markets**, with thousands of new tenders every working day, including reconstruction, energy, medical and defence-related purchases.
- **Bid early:** many requests for quotation close within days, so a daily alert matters.
- **Official data, no scraping:** fast, cheap and stable.

### Use it from ChatGPT, Claude or Cursor

Ask your AI assistant about new Ukrainian public tenders and get live answers from the official Prozorro API, with titles translated and values in UAH.

This Actor works as a tool in any AI assistant that supports the [Model Context Protocol (MCP)](https://modelcontextprotocol.io), through the official [Apify MCP server](https://docs.apify.com/platform/integrations/mcp). You ask in plain language; the assistant fills in the filters, runs the Actor and answers from the results.

**MCP server URL (this Actor only):**

```text
https://mcp.apify.com?tools=orange_briefcase_hrj/ukraine-prozorro-tender-alerts
```

**Set it up once (you need a free Apify account):**

- **Claude (claude.ai and Claude Desktop):** open **Settings → Connectors → Add → Add custom connector**. Enter a name (for example `Ukraine tenders`), paste the URL above as the **Remote MCP server URL**, select **Continue**, keep the detected settings and select **Add**. Sign in to Apify when your browser opens. On Team and Enterprise plans, an Owner adds the connector for the organisation.
- **ChatGPT:** custom connectors need ChatGPT **Developer mode** (beta). Go to **Settings → Apps & Connectors → Create**, paste the URL above as the **MCP Server URL**, choose **OAuth** authentication and select **Create**, then sign in to Apify. In a new chat, select **+ → More** and pick the connector.
- **Cursor:** add this to `~/.cursor/mcp.json` (or `.cursor/mcp.json` in a project). Cursor opens your browser to sign in to Apify:

```json
{
  "mcpServers": {
    "ukraine-prozorro-tender-alerts": {
      "url": "https://mcp.apify.com?tools=orange_briefcase_hrj/ukraine-prozorro-tender-alerts"
    }
  }
}
```

- **VS Code, Windsurf and other MCP clients:** add the same URL as a remote (Streamable HTTP) MCP server. If a client can't do OAuth, send the header `Authorization: Bearer <YOUR_APIFY_TOKEN>` instead (token from **Apify Console → Settings → API & Integrations**).

Already connected to the full Apify server (`https://mcp.apify.com`) or the Apify plugin for Cursor, Claude Code or VS Code? Just mention `orange_briefcase_hrj/ukraine-prozorro-tender-alerts` in your request.

**Try asking:**

> "Find open Prozorro tenders for generators in Kyiv published in the last 3 days, with expected value in UAH and the bid deadline."
>
> "List construction works tenders over UAH 1 million from buyers in Kharkiv oblast published today."
>
> "Show new medical equipment tenders (CPV 33100000) across Ukraine and translate the titles into English."

**Cost:** a run started by your assistant is a normal run of this Actor, billed to your Apify account at the usual pay-per-event price ($1.50 per 1,000 tenders, see the pricing section below). This Actor charges nothing extra for runs that come through an assistant. Asking for a small number of results (for example "the top 20") keeps runs cheap, and the Apify Free plan's monthly credit covers plenty of tests.

### Screenshots

Real output from the saved example tasks (test runs on 26 October 2026):

![Ukraine construction works tenders over UAH 1 million: tender ID, title, buyer, region, value, deadline and procedure](https://api.apify.com/v2/key-value-stores/NpvgdYoKm28QhbrG7/records/ukraine-tenders-output.png)

![Ukraine medical equipment tenders: tender ID, title, buyer, region, category, value and deadline](https://api.apify.com/v2/key-value-stores/NpvgdYoKm28QhbrG7/records/ukraine-tenders-medical.png)

#### Ready-made example tasks

- **Ukraine reconstruction & construction works tenders**: CPV `45000000`, category works, at least UAH 1 million, open, only new.
- **Ukraine medical equipment tenders**: CPV `33000000`, open, only new.
- **Kyiv IT, software & computer tenders**: CPV `72000000`, `48000000`, `30200000`, buyers in Kyiv City.

### How to use it

1. Enter **CPV codes** (the most reliable filter) and/or **keywords**. Ukrainian stems find the most: `ремонт` (repair) also matches `ремонту`, `генератор`, `програмне забезпечення`.
2. Optionally pick **regions**, **categories**, a **value range** or specific **buyers**.
3. Switch on **Only new since last run** (it is off by default, and the example tasks already have it on) and add a **daily schedule** in Apify Console.
4. Send the results to email, Slack, Google Sheets or a CRM, or download them as CSV, Excel or JSON.

#### Input example

```json
{
  "cpvCodes": ["09300000", "31100000"],
  "keywords": ["генератор", "сонячн"],
  "regions": ["Kyiv City", "Kyiv Oblast", "Lviv"],
  "minValue": 200000,
  "lookbackDays": 1,
  "onlyNew": true
}
```

#### Output example

```json
{
  "tenderId": "UA-2026-10-26-008688-a",
  "url": "https://prozorro.gov.ua/tender/UA-2026-10-26-008688-a",
  "title": "Вакцина для профілактики грипу",
  "status": "active.tendering",
  "procedureType": "priceQuotation",
  "procedureTypeEn": "Request for quotation (Prozorro Market)",
  "category": "goods",
  "valueAmount": 31110.28,
  "valueCurrency": "UAH",
  "valueVatIncluded": false,
  "buyerName": "КОМУНАЛЬНЕ НЕКОМЕРЦІЙНЕ ПІДПРИЄМСТВО \"ДНІПРОВСЬКИЙ ЦЕНТР ПЕРВИННОЇ МЕДИКО-САНІТАРНОЇ ДОПОМОГИ №10\" ДНІПРОВСЬКОЇ МІСЬКОЇ РАДИ",
  "buyerCode": "37899708",
  "buyerRegion": "Дніпропетровська область",
  "buyerRegionEn": "Dnipropetrovsk",
  "buyerLocality": "м. Дніпро",
  "deliveryRegions": ["Дніпропетровська область"],
  "cpvCodes": ["33650000-1"],
  "itemCount": 1,
  "createdAt": "2026-10-26T12:39:59Z",
  "publishedAt": "2026-10-26T12:41:59Z",
  "deadline": "2026-10-28T22:00:00Z",
  "documentCount": 2,
  "matchedKeywords": [],
  "firstSeenAt": "2026-10-26T12:43:26Z",
  "attribution": "Source: Prozorro, Ukraine's electronic public procurement system (prozorro.gov.ua), open data published under the Law of Ukraine \"On Access to Public Information\"; retrieved 2026-10-26."
}
```

The dataset has an **overview table view** (tender ID, title, buyer, region, category, value, deadline, procedure, link). The **SUMMARY** record in the run's key-value store holds the digest.

#### Output fields

| Field | Description |
|---|---|
| `tenderId`, `id`, `url` | Prozorro tender ID (UA-…), internal id and public link |
| `title`, `titleEn`, `description` | Title (Ukrainian, plus English where the buyer gives it) and description |
| `status`, `procedureType`, `procedureTypeEn`, `category` | Stage, procedure and main category (goods, services, works) |
| `valueAmount`, `valueCurrency`, `valueVatIncluded` | Expected value |
| `buyerName`, `buyerCode`, `buyerKind`, `buyerRegion`, `buyerRegionEn`, `buyerLocality` | Procuring entity, EDRPOU code and location |
| `cpvCodes`, `cpvDescriptionsUa`, `deliveryRegions`, `itemCount`, `lotCount`, `documentCount` | What is being bought and where it's delivered |
| `createdAt`, `publishedAt`, `enquiryPeriodEnd`, `tenderPeriodStart`, `deadline`, `dateModified` | Key dates, in UTC |
| `buyerContactName`, `buyerContactEmail`, `buyerContactPhone` | Only if **Include buyer contact details** is switched on |
| `matchedKeywords`, `firstSeenAt`, `attribution` | Alert metadata and attribution |

### Tips

- **CPV first:** DK 021:2015 is the EU CPV, so `45000000` (construction), `33000000` (medical), `72000000` (IT services), `09300000` (electricity and energy) all work as prefixes.
- **Region = buyer's oblast.** Item delivery regions are in `deliveryRegions`.
- **Run time:** Prozorro records tens of thousands of changes a day. A one-day scan takes about 1–8 minutes, depending on how many tenders match before the detail check. A daily alert stays in that range.
- **Several alerts:** give each one its own **Alert name (state key)**.

### How much does it cost?

This Actor uses pay-per-event pricing. You pay only for what it delivers, and Apify platform costs are included.

| Apify plan (Store discount tier) | Price per tender | Per 1,000 |
|---|---|---|
| Free, Starter (Bronze) | $0.0015 | $1.50 |
| Scale (Silver) | $0.00135 | $1.35 |
| Business (Gold) and above | $0.0012 | $1.20 |

Each run also has an **Actor start** charge of $0.00005, and a **run summary** charge of $0.002 when *Save a summary* is on (the default). With *Only new since last run* switched on (as in the example alert tasks) you never pay twice for the same tender.

**Worked examples (Free/Starter prices):**

- **Daily alert for construction works over UAH 1m, about 15 a day:** 30 × ($0.00005 + $0.002) + 450 × $0.0015 = **about $0.74 a month**.
- **A broad daily feed that returns 150 tenders a day** (for example all medical supplies): 30 × $0.00205 + 4,500 × $0.0015 = **about $6.81 a month**.
- **One-off export of 1,000 tenders:** $0.00205 + 1,000 × $0.0015 = **about $1.50**.

The **Apify Free plan includes $5 of platform usage every month** (see [apify.com/pricing](https://apify.com/pricing)), and pay-per-event charges are paid from that credit. That covers the construction alert above about six times over. Use **Max tenders per run** and Apify's maximum cost per run to cap spend.

### Use via API (Python, JavaScript, cURL)

You can start the Actor from your own code with the official [Apify API clients](https://docs.apify.com/api/client). Get your API token from **Apify Console → Settings → API & Integrations**.

#### Python

```python
from apify_client import ApifyClient

client = ApifyClient("<YOUR_APIFY_TOKEN>")
run = client.actor("orange_briefcase_hrj/ukraine-prozorro-tender-alerts").call(run_input={
    "cpvCodes": ["45000000"],
    "categories": ["works"],
    "minValue": 1000000,
    "lookbackDays": 1,
    "onlyNew": False,
    "maxResults": 50,
})

for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)
```

Install with `pip install apify-client`.

#### JavaScript / Node.js

```javascript
import { ApifyClient } from 'apify-client';

const client = new ApifyClient({ token: '<YOUR_APIFY_TOKEN>' });
const run = await client.actor('orange_briefcase_hrj/ukraine-prozorro-tender-alerts').call({
    cpvCodes: ['45000000'],
    categories: ['works'],
    minValue: 1000000,
    lookbackDays: 1,
    onlyNew: false,
    maxResults: 50,
});

const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
```

Install with `npm install apify-client`.

#### cURL

This runs the Actor and returns the dataset items in the same request (best for short runs):

```bash
curl -X POST "https://api.apify.com/v2/acts/orange_briefcase_hrj~ukraine-prozorro-tender-alerts/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"cpvCodes": ["45000000"], "categories": ["works"], "minValue": 1000000, "lookbackDays": 1, "onlyNew": false, "maxResults": 50}'
```

For longer runs, call `POST /v2/acts/orange_briefcase_hrj~ukraine-prozorro-tender-alerts/runs` and read the dataset when the run finishes. You can also add the Actor to Zapier, Make, n8n or a webhook from the **Integrations** tab.

### Data source, licence and attribution

All data comes from **Prozorro** (https://prozorro.gov.ua), Ukraine's electronic public procurement system, through its official public API. Prozorro states that its open data may be freely copied, published, distributed and used, **including for commercial purposes**, as long as the source is credited (see [prozorro.gov.ua/openprocurement](https://prozorro.gov.ua/openprocurement) and the Law of Ukraine "On Access to Public Information"). Every record includes an `attribution` field naming Prozorro and the retrieval date. Keep it if you republish the data.

This Actor is an **independent tool**. It isn't affiliated with or endorsed by Prozorro, the State Enterprise "Prozorro" or the Ministry of Economy of Ukraine. Some procurement is restricted or redacted for security reasons and won't appear. Always check the official tender page before you bid.

**Personal data:** buyer contact persons, emails and phone numbers are left out by default. If you switch them on, use them only to take part in the procurement, in line with the GDPR and Ukrainian data-protection law.

### Related tools

Other tools from the same publisher, all built on official open-data APIs:

| Tool | What it does |
|---|---|
| [UK Public Tender Alerts](https://apify.com/orange_briefcase_hrj/uk-tender-alerts) | Daily alerts for new UK government tenders and contract awards from Find a Tender and Contracts Finder. |
| [Netherlands Public Tender Alerts (TenderNed)](https://apify.com/orange_briefcase_hrj/netherlands-tender-alerts) | Daily alerts for new Dutch government tenders from TenderNed, filtered by keyword, CPV and province. |
| [UK Company Check & Change Monitor](https://apify.com/orange_briefcase_hrj/uk-company-check) | Bulk Companies House checks with a RED/AMBER/GREEN risk flag, plus a monitor mode that outputs only changes. |
| [German Case Law Search & Ruling Alerts](https://apify.com/orange_briefcase_hrj/german-case-law-search) | Search BGH, BVerfG, BAG, BFH and other German federal court decisions, with full text and new-ruling alerts. |
| [Sweden Job Ads API (Platsbanken)](https://apify.com/orange_briefcase_hrj/sweden-job-ads-platsbanken) | Swedish job ads from Arbetsförmedlingen's official JobTech API, with English labels and daily alerts. |
| [Germany Public Tender Alerts (oeffentlichevergabe.de)](https://apify.com/orange_briefcase_hrj/germany-tender-alerts) | Daily alerts for new German public tenders (Ausschreibungen) from the official Bekanntmachungsservice open data, filtered by keyword, CPV and federal state. |
| [France Public Tender Alerts (BOAMP)](https://apify.com/orange_briefcase_hrj/france-boamp-tender-alerts) | Daily alerts for new French public tenders (appels d'offres) from BOAMP open data, filtered by keyword, CPV, department and contract type. |
| [Austria Case Law Search & Ruling Alerts (RIS)](https://apify.com/orange_briefcase_hrj/austria-case-law-search) | Search OGH, VfGH, VwGH, BVwG and other Austrian court decisions from the official RIS API, with full text and new-ruling alerts. |
| [Czech Job Ads API (Úřad práce ČR)](https://apify.com/orange_briefcase_hrj/czech-job-ads-urad-prace) | Czech job vacancies from the official MPSV / Úřad práce ČR open data, filtered by keyword, region, CZ-ISCO, salary and foreign-worker eligibility, with English labels and daily alerts. |

### FAQ

**Do I need a Prozorro account or API key?** No. The public API is open. To actually bid you need an account on an accredited Prozorro e-marketplace.

**Can I use it commercially?** Yes. Prozorro open data allows commercial reuse with attribution.

**Can I search in English?** Most tenders are only in Ukrainian; above-threshold EU-style procedures (`aboveThresholdEU`) also have English titles. CPV codes are the most reliable language-neutral filter.

**Why does a 7-day run take longer?** The API lists every change to every tender. The Actor reads the change feed for your window and fetches the full record only for likely matches.

**Something is missing or wrong?** Open an issue on the Actor's Issues tab and include your input. We usually reply within a few days.

**Where can I see what changed?** See the Changelog tab.

# Changelog

This Actor's version history is a separate document: https://apify.com/orange_briefcase_hrj/ukraine-prozorro-tender-alerts/changelog.md

# Actor input Schema

## `keywords` (type: `array`):

Words or word stems to look for in the tender title, description and item descriptions (case-insensitive; 'ремонт' also matches 'ремонту'). Leave empty for every tender that matches the other filters.

## `keywordMatch` (type: `string`):

Match tenders containing ANY of the keywords, or ALL of them.

## `excludeKeywords` (type: `array`):

Skip tenders whose text contains any of these words.

## `cpvCodes` (type: `array`):

Ukraine's DK 021:2015 classifier is the EU CPV. Prefix matching on item codes: 45000000 matches all construction works, 72000000 all IT services, 33000000 medical equipment. Leave empty for all.

## `regions` (type: `array`):

Limit by the buyer's region. English names: Kyiv City, Kyiv Oblast, Vinnytsia, Volyn, Dnipropetrovsk, Donetsk, Zhytomyr, Zakarpattia, Zaporizhzhia, Ivano-Frankivsk, Kirovohrad, Luhansk, Lviv, Mykolaiv, Odesa, Poltava, Rivne, Sumy, Ternopil, Kharkiv, Kherson, Khmelnytskyi, Cherkasy, Chernivtsi, Chernihiv. Ukrainian text also works. Leave empty for all of Ukraine.

## `categories` (type: `array`):

Main procurement category. Leave empty for all.

## `minValue` (type: `integer`):

Minimum expected tender value in hryvnia. Tenders without a value are skipped when set.

## `maxValue` (type: `integer`):

Maximum expected tender value in hryvnia.

## `procedureTypes` (type: `string`):

Competitive procedures (open tenders, simplified procurements, requests for quotation, competitive dialogue, frameworks) are what suppliers can bid on. Non-competitive = direct contract reports and negotiated procedures.

## `status` (type: `string`):

'Open' keeps tenders still in the enquiry or bidding period. 'Any' also keeps tenders created in the window that have already moved on (e.g. direct contract reports, which complete immediately).

## `buyerContains` (type: `array`):

Only keep tenders whose buyer name contains one of these strings (e.g. 'лікарня', 'Укрзалізниця', 'міська рада').

## `buyerCodes` (type: `array`):

Only keep tenders from buyers with these EDRPOU (ЄДРПОУ) identification codes.

## `lookbackDays` (type: `integer`):

How many days of newly created tenders to scan on a normal run, or on the first run in 'only new' mode (1-14). Prozorro records tens of thousands of changes a day, so longer windows take a few minutes per day.

## `onlyNew` (type: `boolean`):

Remember tenders already delivered (per filter set) and only output new ones. Ideal for a daily schedule. Switch it on for scheduled alerts (off by default so one-off searches always return results).

## `stateKey` (type: `string`):

Optional name for this alert's memory. By default it is derived from your filters, so changing filters starts a fresh alert.

## `includeBuyerContacts` (type: `boolean`):

Add the buyer's published contact person, email and phone. This is personal data: use it only to take part in the procurement, in line with the GDPR / Ukrainian data-protection law.

## `includeSummary` (type: `boolean`):

Save a digest (counts, top buyers, largest and closing-soonest tenders) as SUMMARY in the run's key-value store.

## `maxResults` (type: `integer`):

Stop after this many tenders. In 'only new' mode anything left over is picked up on the next run.

## `maxConcurrency` (type: `integer`):

How many tender records to fetch from Prozorro at the same time (1-8).

## `requestIntervalSecs` (type: `number`):

Minimum pause between starting requests to the Prozorro API.

## Actor input object example

```json
{
  "keywords": [
    "ремонт"
  ],
  "keywordMatch": "any",
  "excludeKeywords": [],
  "cpvCodes": [],
  "regions": [],
  "categories": [],
  "procedureTypes": "competitive",
  "status": "open",
  "buyerContains": [],
  "buyerCodes": [],
  "lookbackDays": 1,
  "onlyNew": false,
  "includeBuyerContacts": false,
  "includeSummary": true,
  "maxResults": 10,
  "maxConcurrency": 6,
  "requestIntervalSecs": 0.05
}
```

# Actor output Schema

## `results` (type: `string`):

No description

## `summary` (type: `string`):

No description

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "keywords": [
        "ремонт"
    ],
    "lookbackDays": 1,
    "maxResults": 10
};

// Run the Actor and wait for it to finish
const run = await client.actor("orange_briefcase_hrj/ukraine-prozorro-tender-alerts").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "keywords": ["ремонт"],
    "lookbackDays": 1,
    "maxResults": 10,
}

# Run the Actor and wait for it to finish
run = client.actor("orange_briefcase_hrj/ukraine-prozorro-tender-alerts").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "keywords": [
    "ремонт"
  ],
  "lookbackDays": 1,
  "maxResults": 10
}' |
apify call orange_briefcase_hrj/ukraine-prozorro-tender-alerts --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,orange_briefcase_hrj/ukraine-prozorro-tender-alerts"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/xVe4dksQFbdneqaVN/builds/3JLg4EPMMHEl96spc/openapi.json
