# UK Public Sector Contract & Tender Intelligence (`straightforward_hydra/uk-contracts-finder-intelligence`) Actor

Find open UK government tenders to bid on, or track who wins public-sector contracts. Official Contracts Finder OCDS data. No key.

- **URL**: https://apify.com/straightforward\_hydra/uk-contracts-finder-intelligence.md
- **Developed by:** [Dev D](https://apify.com/straightforward_hydra) (community)
- **Categories:** Developer tools, Automation, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $5.00 / 1,000 notices

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 a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
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.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js/docs.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python/docs.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/integrations/mcp.md).

If your project is in a different language, use 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 Public Sector Contract & Tender Intelligence 🇬🇧

**Find open UK government tenders to bid on, or track who wins public-sector contracts — straight from Contracts Finder's official OCDS data. No API key, no proxy.**

Two high-value angles on UK public procurement:

- 🎯 **Opportunities** — open tenders you can still bid on: title, buyer, value, **bid deadline**, category (CPV), region and a direct link. Lead generation for any business selling to the public sector.
- 🏆 **Awards** — who won which contracts, for how much, from which buyer. Track a **competitor's wins**, size a market, or map public spending.

Perfect for **bid/tender teams, sales & business development, competitor intelligence, market research**, and public-spending analysis.

> Uses the official **Contracts Finder OCDS API** — public procurement data, no key, very low maintenance.

---

### Modes

- **Opportunities** — open tenders (stage: tender).
- **Awards** — awarded contracts with supplier + value (stage: award).
- **Planning** — early pipeline notices.

### Features

- ✅ **No API key, no proxy** — official OCDS API.
- ✅ **Bid deadlines** — never miss a tender close date.
- ✅ **Competitor tracking** — filter awards by supplier name.
- ✅ **Smart filters** — keyword, buyer, CPV category, value range, date range.
- ✅ **Direct links** — every notice links back to Contracts Finder.

---

### Input

| Field | Description |
|---|---|
| **Mode** | opportunities / awards / planning. |
| **Keyword** | Search notice text (e.g. `software`, `cleaning`, `construction`). |
| **Published from / to** | Date range (YYYY-MM-DD). |
| **Buyer contains** | Filter by public body (e.g. `NHS`, `County Council`). |
| **Supplier contains** | Track a supplier/competitor's wins (awards mode). |
| **CPV code prefix** | Category filter, e.g. `48` (software), `45` (construction), `85` (health). |
| **Min / Max value (GBP)** | Contract value range. |
| **Max results** | Cap on notices. |

#### Example — open software tenders over £50k

```json
{
  "mode": "opportunities",
  "keyword": "software",
  "minValue": 50000
}
````

#### Example — track a competitor's contract wins

```json
{
  "mode": "awards",
  "supplierContains": "Capita",
  "publishedFrom": "2025-01-01"
}
```

#### Example — all NHS awards this quarter

```json
{
  "mode": "awards",
  "buyerContains": "NHS",
  "publishedFrom": "2026-04-01"
}
```

### Output

```json
{
  "ocid": "ocds-b5fd17-…",
  "stage": "tender",
  "title": "Property Services Framework",
  "buyer": "Ongo Homes",
  "value_amount": 8472397.64,
  "value_currency": "GBP",
  "cpv_code": "70330000",
  "cpv_description": "Residential property services",
  "region": "DN15 …",
  "status": "active",
  "published_date": "2026-07-17T…",
  "deadline": "2026-08-17T12:00:00+01:00",
  "suppliers": [],
  "award_amount": null,
  "url": "https://www.contractsfinder.service.gov.uk/Notice/…"
}
```

Awards populate `suppliers`, `award_amount` and `award_date`.

### Run it on a schedule

Run daily with `publishedFrom` = yesterday to get a fresh feed of new tenders (or new awards for a competitor) — pipe to Slack, email, a CRM or a webhook so your bid team never misses one.

### Notes & limitations

- Official **Contracts Finder OCDS** data (England-wide public sector; other UK nations have their own portals).
- Keyword search matches the full notice text (title, description, category), not only the title.
- A single contract (OCID) can have multiple release notices (amendments).
- Data source: Contracts Finder (Crown Commercial Service). Informational, not legal advice.

***

#### Keywords

UK tenders, government contracts, public procurement, Contracts Finder, OCDS, bid opportunities, tender alerts, RFP, RFQ, public sector, competitor intelligence, contract awards, supplier tracking, CPV, NHS contracts, council contracts, government spending, sales intelligence, lead generation, procurement data.

# Actor input Schema

## `mode` (type: `string`):

opportunities = open tenders to bid on (lead gen); awards = who won contracts (competitor/market intel).

## `keyword` (type: `string`):

Search notice text, e.g. "software", "cleaning", "construction", "consultancy".

## `publishedFrom` (type: `string`):

Only notices published on/after this date (YYYY-MM-DD).

## `publishedTo` (type: `string`):

Only notices published on/before this date (YYYY-MM-DD).

## `buyerContains` (type: `string`):

Filter by buyer (public body) name, e.g. "NHS", "County Council", "Ministry of Defence".

## `supplierContains` (type: `string`):

Track a specific supplier/competitor's wins, e.g. "Capita", "Serco". Only meaningful in awards mode.

## `cpvCode` (type: `string`):

Filter by CPV classification code prefix, e.g. "48" (software), "45" (construction), "85" (health).

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

Minimum contract value.

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

Maximum contract value.

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

Maximum number of notices to return.

## Actor input object example

```json
{
  "mode": "opportunities",
  "maxResults": 1000
}
```

# 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 = {};

// Run the Actor and wait for it to finish
const run = await client.actor("straightforward_hydra/uk-contracts-finder-intelligence").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 = {}

# Run the Actor and wait for it to finish
run = client.actor("straightforward_hydra/uk-contracts-finder-intelligence").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 '{}' |
apify call straightforward_hydra/uk-contracts-finder-intelligence --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=straightforward_hydra/uk-contracts-finder-intelligence",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "UK Public Sector Contract & Tender Intelligence",
        "description": "Find open UK government tenders to bid on, or track who wins public-sector contracts. Official Contracts Finder OCDS data. No key.",
        "version": "0.1",
        "x-build-id": "xicLXYDPXr2RSA6Jh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/straightforward_hydra~uk-contracts-finder-intelligence/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-straightforward_hydra-uk-contracts-finder-intelligence",
                "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/straightforward_hydra~uk-contracts-finder-intelligence/runs": {
            "post": {
                "operationId": "runs-sync-straightforward_hydra-uk-contracts-finder-intelligence",
                "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/straightforward_hydra~uk-contracts-finder-intelligence/run-sync": {
            "post": {
                "operationId": "run-sync-straightforward_hydra-uk-contracts-finder-intelligence",
                "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": "Mode",
                        "enum": [
                            "opportunities",
                            "awards",
                            "planning"
                        ],
                        "type": "string",
                        "description": "opportunities = open tenders to bid on (lead gen); awards = who won contracts (competitor/market intel).",
                        "default": "opportunities"
                    },
                    "keyword": {
                        "title": "Keyword",
                        "type": "string",
                        "description": "Search notice text, e.g. \"software\", \"cleaning\", \"construction\", \"consultancy\"."
                    },
                    "publishedFrom": {
                        "title": "Published from",
                        "type": "string",
                        "description": "Only notices published on/after this date (YYYY-MM-DD)."
                    },
                    "publishedTo": {
                        "title": "Published to",
                        "type": "string",
                        "description": "Only notices published on/before this date (YYYY-MM-DD)."
                    },
                    "buyerContains": {
                        "title": "Buyer contains",
                        "type": "string",
                        "description": "Filter by buyer (public body) name, e.g. \"NHS\", \"County Council\", \"Ministry of Defence\"."
                    },
                    "supplierContains": {
                        "title": "Supplier contains (awards mode)",
                        "type": "string",
                        "description": "Track a specific supplier/competitor's wins, e.g. \"Capita\", \"Serco\". Only meaningful in awards mode."
                    },
                    "cpvCode": {
                        "title": "CPV code prefix",
                        "type": "string",
                        "description": "Filter by CPV classification code prefix, e.g. \"48\" (software), \"45\" (construction), \"85\" (health)."
                    },
                    "minValue": {
                        "title": "Min value (GBP)",
                        "type": "integer",
                        "description": "Minimum contract value."
                    },
                    "maxValue": {
                        "title": "Max value (GBP)",
                        "type": "integer",
                        "description": "Maximum contract value."
                    },
                    "maxResults": {
                        "title": "Max results",
                        "minimum": 1,
                        "maximum": 200000,
                        "type": "integer",
                        "description": "Maximum number of notices to return.",
                        "default": 1000
                    }
                }
            },
            "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
                                    }
                                }
                            },
                            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
