# Public Procurement, Tender & RFP Monitor (`vanheelsing/public-procurement-monitor`) Actor

Monitor public procurement, tender, and RFP pages for new business opportunities. Keyword matching, dataset exports, webhooks, and scheduled runs help buyers capture recurring B2B leads without manual checking.

- **URL**: https://apify.com/vanheelsing/public-procurement-monitor.md
- **Developed by:** [Rodolfo Martins](https://apify.com/vanheelsing) (community)
- **Categories:** Lead generation
- **Stats:** 1 total users, 0 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $2.00 / 1,000 results

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## What's an Apify Actor?

Actors are web data automations that power AI and operations. They run on the Apify platform to scrape websites, process data, connect APIs, and automate workflows.
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.
Actors are written with capital "A".

## 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.
The best way to integrate Actors is as follows.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).

# README

## UK Contracts Finder: Tender & RFP Monitor

Find active UK public-procurement opportunities from the official Contracts Finder OCDS feed. Return clean, structured tender and planning notices for sales teams, bid managers, and procurement-intelligence workflows.

### What it does

- Reads official UK Contracts Finder structured releases.
- Keeps active and planning opportunities while excluding generic page noise and completed awards.
- Matches configurable keywords against titles and descriptions.
- Returns official notice links, deadlines, values, and procurement metadata.

### Quick start

1. Enter the products, services, or sectors you sell.
2. Choose a recency window and result limit.
3. Run once to explore opportunities.
4. Save the configuration as an Apify Task and schedule it for daily or weekly monitoring.

### Example input

```json
{
  "keywords": ["cloud", "software", "digital", "cyber security"],
  "lookback_days": 30,
  "max_items": 100
}
```

### Output

Each dataset item is one official procurement notice and includes:

| Field | Description |
| --- | --- |
| `ocid`, `notice_id` | OCDS and official notice identifiers |
| `title`, `description`, `status`, `notice_type` | Opportunity details |
| `published_at`, `deadline` | Timing for bid qualification |
| `value_amount`, `value_currency` | Published contract value where available |
| `procurement_method`, `url`, `matched_keyword` | Method, official URL, and match evidence |

The run output also exposes a results dataset link and structured summary with quality counts and warnings.

### Common use cases

- Daily tender lead monitoring for a sales or bid team.
- Feed qualified opportunities into a CRM or bid-management pipeline.
- Track digital, cloud, software, construction, or specialist-services notices.
- Build alerts through Apify webhooks, Make, Zapier, or the dataset API.

### Scheduling and integrations

Create an Apify Task from your preferred keyword set and attach an Apify Schedule. Retrieve results through the default dataset, use the output links from each completed run, or forward new records to your systems with webhooks.

### Pricing

This Actor uses pay-per-event pricing. You are charged for each procurement notice returned, plus a small Actor-start event. Set a maximum run charge appropriate for your expected result volume.

### Data source and limitations

This Actor supports the official UK Contracts Finder OCDS feed. It does not claim universal coverage of every procurement website or jurisdiction. Source availability and notice metadata are controlled by the originating public body.

### Support

For help diagnosing a result, include your input, expected keyword, and Apify run URL.

# Actor input Schema

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

Terms matched against active and planning notice titles and descriptions.

## `lookback_days` (type: `integer`):

Only retrieve official releases published within this many days.

## `max_items` (type: `integer`):

Maximum active or planning notices to emit per run.

## Actor input object example

```json
{
  "keywords": [
    "cloud",
    "software",
    "digital",
    "technology"
  ],
  "lookback_days": 30,
  "max_items": 100
}
```

# Actor output Schema

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

Matched active or planning procurement notices.

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

Items, quality counts, and warnings for this run.

# 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": [
        "cloud",
        "software",
        "digital",
        "technology"
    ],
    "lookback_days": 30,
    "max_items": 100
};

// Run the Actor and wait for it to finish
const run = await client.actor("vanheelsing/public-procurement-monitor").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": [
        "cloud",
        "software",
        "digital",
        "technology",
    ],
    "lookback_days": 30,
    "max_items": 100,
}

# Run the Actor and wait for it to finish
run = client.actor("vanheelsing/public-procurement-monitor").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).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": [
    "cloud",
    "software",
    "digital",
    "technology"
  ],
  "lookback_days": 30,
  "max_items": 100
}' |
apify call vanheelsing/public-procurement-monitor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=vanheelsing/public-procurement-monitor",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Nh5yGgTiOzgM1WB4C/builds/e1njy2uOV9E23Y7HO/openapi.json
