# UK Contracts Finder Scraper (`parseforge/uk-contracts-finder-scraper`) Actor

Scrape UK public sector contract notices from the official Contracts Finder OCDS API. Get awards, tenders, planning notices, buyer/supplier info, value, dates, CPV codes. No API key required.

- **URL**: https://apify.com/parseforge/uk-contracts-finder-scraper.md
- **Developed by:** [ParseForge](https://apify.com/parseforge) (community)
- **Categories:** Lead generation, Business, Automation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

from $35.03 / 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.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

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.md):

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

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.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/platform/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

![ParseForge Banner](https://raw.githubusercontent.com/ParseForge/apify-assets/main/parseforge-banner.png)

## 📜 UK Contracts Finder Scraper

> 🚀 **Export UK public sector contract notices in seconds.** Filter tenders, awards, and planning notices by keyword and stage. No API key, no registration, no manual CSV wrangling.

> 🕒 **Last updated:** 2026-05-12 · **📊 32 fields** per record · **🇬🇧 UK government tenders** · **📂 OCDS-compliant** · **♻️ Live per run**

The **UK Contracts Finder Scraper** pulls live procurement notices from the official Contracts Finder OCDS feed and returns **32 fields per record**, covering buyer identity, CPV classification, tender value, deadlines, award suppliers, delivery addresses, SME suitability, and document links. The source data is published by the UK Cabinet Office and is the canonical reference for public sector opportunities valued over £12,000 (£30,000 for central government).

Every UK central government department, local authority, NHS trust, and arm's-length body posts here. The feed includes contracts at every stage of the procurement lifecycle, from early planning notices through live tenders to awarded contracts and implementation updates. This Actor returns clean JSON in under a minute, with filters that match the same parameters the official search UI uses.

| 🎯 Target Audience | 💡 Primary Use Cases |
|---|---|
| Bid managers, procurement analysts, supplier intelligence teams, government affairs, journalists, market research firms, fintech and govtech vendors | New business pipelines, supplier qualification, public spending audits, competitor win-loss tracking, sector market sizing, journalism on government contracts |

---

### 📋 What the UK Contracts Finder Scraper does

Several filtering workflows in a single run:

- 🔍 **Keyword search.** Match any phrase across title and description, like `software`, `construction`, or `cyber security`.
- 🪜 **Stage filter.** Choose `tender`, `award`, `planning`, or `implementation`, alone or in combination.
- 💷 **Value capture.** Pull contract value amount and currency where the buyer has disclosed it.
- 🏷️ **CPV codes.** Both main and additional Common Procurement Vocabulary classifications.
- 🏢 **Buyer and supplier identity.** Buyer name and OCID, plus awarded supplier name and ID when the notice is an award.

Each record includes the OCID, release ID, release date, full title and description, buyer details, procurement method, status, tender period, award details, CPV codes with descriptions, delivery addresses, SME and VCSE suitability flags, document links, and party counts.

> 💡 **Why it matters:** UK public sector spending exceeds £300 billion a year. Contracts Finder is the single place every notice lands. Building your own scraper means parsing the OCDS spec, handling pagination, and tracking changes across stages. This Actor returns a flat, query-ready table on every run.

---

### 🎬 Full Demo

_🚧 Coming soon: a 3-minute walkthrough showing how to go from sign-up to a downloaded dataset._

---

### ⚙️ Input

<table>
<thead>
<tr><th>Input</th><th>Type</th><th>Default</th><th>Behavior</th></tr>
</thead>
<tbody>
<tr><td><code>keyword</code></td><td>string</td><td><code>""</code></td><td>Free-text search across notice title and description. Empty returns every notice in the chosen stage.</td></tr>
<tr><td><code>stages</code></td><td>array</td><td><code>["tender"]</code></td><td>One or more of <code>planning</code>, <code>tender</code>, <code>award</code>, <code>implementation</code>.</td></tr>
<tr><td><code>maxItems</code></td><td>integer</td><td><code>10</code></td><td>Records to return. Free plan caps at 10, paid plan at 1,000,000.</td></tr>
</tbody>
</table>

**Example: 100 live tender notices mentioning software.**

```json
{
    "maxItems": 100,
    "keyword": "software",
    "stages": ["tender"]
}
````

**Example: awarded contracts only, across all keywords.**

```json
{
    "maxItems": 500,
    "stages": ["award"]
}
```

> ⚠️ **Good to Know:** the OCDS feed paginates 100 records at a time. Large pulls take a few minutes. Award notices often link back to the original tender via the same OCID, so the same contract may appear in multiple stages with different release IDs.

***

### 📊 Output

Each notice record contains **32 fields**. Download the dataset as CSV, Excel, JSON, or XML.

#### 🧾 Schema

| Field | Type | Example |
|---|---|---|
| 🆔 `ocid` | string | `"ocds-b5fd17-a211cf0c-49b4-4921-9d96-c60ca9df08f9"` |
| 🔗 `url` | string | `"https://www.contractsfinder.service.gov.uk/Notice/..."` |
| 🏷️ `releaseId` | string | `"8ed55a8c-...-896885"` |
| 📅 `releaseDate` | ISO 8601 | `"2026-05-12T17:00:38+01:00"` |
| 🏷️ `tags` | string\[] | `["tender"]` |
| 📰 `title` | string | `"CA17805 - PEACEPLUS Food Fusion Festival"` |
| 📝 `description` | string | `"Newry Mourne & Down District Council..."` |
| 🏢 `buyerName` | string | `"Newry, Mourne and Down District Council"` |
| 🆔 `buyerId` | string | `"GB-CFS-333373"` |
| 📋 `procurementMethod` | string | null | `"open"` |
| 📋 `procurementMethodDetails` | string | null | `"Open procedure"` |
| 🗂️ `mainProcurementCategory` | string | null | `"services"` |
| 💷 `valueAmount` | number | null | `250000` |
| 💱 `valueCurrency` | string | null | `"GBP"` |
| 📊 `tenderStatus` | string | null | `"active"` |
| 📅 `tenderStartDate` | ISO 8601 | null | `"2026-05-12T17:00:00+01:00"` |
| 📅 `tenderEndDate` | ISO 8601 | null | `"2026-06-09T12:00:00+01:00"` |
| 🏢 `awardSupplier` | string | null | `"Example Ltd"` |
| 🆔 `awardSupplierId` | string | null | `"GB-COH-12345678"` |
| 💷 `awardValue` | number | null | `180000` |
| 📅 `awardDate` | ISO 8601 | null | `"2026-04-01"` |
| 📅 `awardContractPeriodStart` | ISO 8601 | null | `"2026-05-01"` |
| 📅 `awardContractPeriodEnd` | ISO 8601 | null | `"2027-04-30"` |
| 🏷️ `cpvCodes` | string\[] | `["80000000", "98000000"]` |
| 📝 `cpvDescriptions` | string\[] | `["Education and training services"]` |
| 📍 `deliveryAddresses` | string\[] | `["BT34 2QU", "United Kingdom"]` |
| 🤝 `suitableForSmes` | boolean | null | `true` |
| 🤲 `suitableForVcse` | boolean | null | `false` |
| 🌐 `language` | string | null | `"en"` |
| 🚦 `initiationType` | string | null | `"tender"` |
| 📎 `documents` | object\[] | `[{ id, type, description, url }]` |
| 👥 `partiesCount` | number | `1` |
| 🕒 `scrapedAt` | ISO 8601 | `"2026-05-12T16:30:03.259Z"` |

#### 📦 Sample records

<details>
<summary><strong>📜 Local authority tender: Food Fusion Festival (Northern Ireland)</strong></summary>

```json
{
    "ocid": "ocds-b5fd17-a211cf0c-49b4-4921-9d96-c60ca9df08f9",
    "url": "https://www.contractsfinder.service.gov.uk/Notice/ocds-b5fd17-a211cf0c-49b4-4921-9d96-c60ca9df08f9",
    "releaseId": "8ed55a8c-eac3-4c4a-a621-96d08c2238b7-896885",
    "releaseDate": "2026-05-12T17:00:38+01:00",
    "tags": ["tender"],
    "title": "CA17805 - RFQ 2026/11 - PEACEPLUS Celebrating Cultures and Diversity Food Fusion Festival",
    "buyerName": "Newry, Mourne and Down District Council (NMD)",
    "buyerId": "GB-CFS-333373",
    "procurementMethod": "open",
    "procurementMethodDetails": "Open procedure",
    "mainProcurementCategory": "services",
    "valueAmount": null,
    "valueCurrency": null,
    "tenderStatus": "active",
    "tenderEndDate": "2026-06-09T12:00:00+01:00",
    "cpvCodes": ["80000000", "98000000", "92000000"],
    "cpvDescriptions": ["Education and training services", "Other community, social and personal services", "Recreational, cultural and sporting services"],
    "deliveryAddresses": ["BT34 2QU", "United Kingdom"],
    "suitableForSmes": true,
    "suitableForVcse": false,
    "language": "en",
    "initiationType": "tender",
    "partiesCount": 1,
    "scrapedAt": "2026-05-12T16:30:03.259Z"
}
```

</details>

<details>
<summary><strong>📜 City council tender: Domestic Abuse Needs Assessment (Coventry)</strong></summary>

```json
{
    "ocid": "ocds-b5fd17-e4e22435-146c-4924-a584-bf0afcad1289",
    "url": "https://www.contractsfinder.service.gov.uk/Notice/ocds-b5fd17-e4e22435-146c-4924-a584-bf0afcad1289",
    "releaseId": "769851dd-24d0-439a-b6a1-5ff79d7226dc-896878",
    "releaseDate": "2026-05-12T16:41:21+01:00",
    "tags": ["tender"],
    "title": "Domestic Abuse Needs Assessment",
    "buyerName": "COVENTRY CITY COUNCIL",
    "buyerId": "GB-SRS-sid4gov.cabinetoffice.gov.uk/9zBK4N6s",
    "procurementMethod": "open",
    "procurementMethodDetails": "Open procedure",
    "mainProcurementCategory": "services",
    "tenderStatus": "active",
    "tenderEndDate": "2026-06-09T12:00:00+01:00",
    "suitableForSmes": true,
    "suitableForVcse": true,
    "language": "en",
    "scrapedAt": "2026-05-12T16:30:03.259Z"
}
```

</details>

<details>
<summary><strong>📜 Sparse notice with no disclosed value</strong></summary>

```json
{
    "ocid": "ocds-b5fd17-95507fcb-1079-4e8f-b93c-5ee786186378",
    "url": "https://www.contractsfinder.service.gov.uk/Notice/ocds-b5fd17-95507fcb-1079-4e8f-b93c-5ee786186378",
    "releaseId": "f4eba1e9-4ca6-458b-993d-f55390d6a805-896871",
    "releaseDate": "2026-05-12T16:12:16+01:00",
    "tags": ["tender"],
    "title": "CA17802 - RFQ 2026/09 - PEACEPLUS Steps Through Time",
    "buyerName": "Newry, Mourne and Down District Council (NMD)",
    "buyerId": "GB-CFS-333373",
    "procurementMethod": "open",
    "valueAmount": null,
    "valueCurrency": null,
    "tenderStatus": "active",
    "tenderEndDate": "2026-06-09T12:00:00+01:00",
    "cpvCodes": ["92000000", "98000000", "80000000"],
    "language": "en",
    "partiesCount": 1,
    "scrapedAt": "2026-05-12T16:30:03.259Z"
}
```

</details>

***

### ✨ Why choose this Actor

| | Capability |
|---|---|
| 🇬🇧 | **Official OCDS feed.** Pulls directly from the UK Cabinet Office Contracts Finder API, the canonical source for public sector procurement. |
| 🪜 | **Lifecycle coverage.** Planning, tender, award, and implementation stages in a single input. |
| 💷 | **Full CPV classification.** Main and additional CPV codes with human-readable descriptions for sector segmentation. |
| 🤝 | **SME and VCSE flags.** Filter directly for opportunities marked suitable for small businesses or voluntary, community, and social enterprises. |
| ⚡ | **Fast.** 100 notices in about a minute, 10,000 records in under fifteen minutes. |
| 🔁 | **Always fresh.** Every run pulls the live feed so your pipeline tracks new opportunities as they appear. |
| 🚫 | **No authentication.** Works with public procurement data. No login or API key needed. |

> 📊 The UK public sector spends over £300 billion per year. Tracking the right notices early is the difference between bidding and missing out.

***

### 📈 How it compares to alternatives

| Approach | Cost | Coverage | Refresh | Filters | Setup |
|---|---|---|---|---|---|
| **⭐ UK Contracts Finder Scraper** *(this Actor)* | $5 free credit, then pay-per-use | **All UK public notices** | **Live per run** | keyword, stage | ⚡ 2 min |
| Official portal search UI | Free | Same data, manual | Live | UI form | 🐢 Manual export per query |
| Paid procurement intelligence platforms | $500+/month | Multi-country aggregated | Hourly | Many | ⏳ Vendor onboarding |
| Legacy community dumps | Free | Subset, stale | Rarely updated | None | 🕒 Variable |

Pick this Actor when you want the live OCDS feed in clean JSON, with server-side filtering and zero pipeline maintenance.

***

### 🚀 How to use

1. 📝 **Sign up.** [Create a free account with $5 credit](https://console.apify.com/sign-up?fpr=vmoqkp) (takes 2 minutes).
2. 🌐 **Open the Actor.** Go to the UK Contracts Finder Scraper page on the Apify Store.
3. 🎯 **Set input.** Enter a keyword (or leave empty), pick the stages you want, and set `maxItems`.
4. 🚀 **Run it.** Click **Start** and let the Actor collect your data.
5. 📥 **Download.** Grab your results in the **Dataset** tab as CSV, Excel, JSON, or XML.

> ⏱️ Total time from signup to downloaded dataset: **3-5 minutes.** No coding required.

***

### 💼 Business use cases

<table>
<tr>
<td width="50%" valign="top">

#### 💼 Bid Management & Sales

- Daily pipeline of fresh tenders matching your service codes
- Automated alerts on CPV codes you specialise in
- Win-loss analysis against publicly disclosed awards
- Lead scoring with buyer history and contract values

</td>
<td width="50%" valign="top">

#### 🏛️ Government Affairs & Policy

- Track departmental spending patterns over time
- Map which buyers commission similar services
- Identify upcoming planning notices ahead of tender
- Brief leadership on procurement trends by sector

</td>
</tr>
<tr>
<td width="50%" valign="top">

#### 📊 Market Research & Analysts

- Sector market sizing using CPV-coded spend
- Supplier concentration analyses by buyer
- Geographic spend distribution across delivery addresses
- Benchmarks for SME participation in public procurement

</td>
<td width="50%" valign="top">

#### 📰 Journalism & Transparency

- Investigate awarded contracts and supplier links
- Track recurring incumbent suppliers across buyers
- Spend audits for council and NHS reporting
- Cross-reference award data with company registries

</td>
</tr>
</table>

***

### 🌟 Beyond business use cases

Data like this powers more than commercial workflows. The same structured records support research, education, civic projects, and personal initiatives.

<table>
<tr>
<td width="50%">

#### 🎓 Research and academia

- Empirical datasets for papers, thesis work, and coursework
- Longitudinal studies tracking changes across snapshots
- Reproducible research with cited, versioned data pulls
- Classroom exercises on data analysis and ethical scraping

</td>
<td width="50%">

#### 🎨 Personal and creative

- Side projects, portfolio demos, and indie app launches
- Data visualizations, dashboards, and infographics
- Content research for bloggers, YouTubers, and podcasters
- Hobbyist collections and personal trackers

</td>
</tr>
<tr>
<td width="50%">

#### 🤝 Non-profit and civic

- Transparency reporting and accountability projects
- Advocacy campaigns backed by public-interest data
- Community-run databases for local issues
- Investigative journalism on public records

</td>
<td width="50%">

#### 🧪 Experimentation

- Prototype AI and machine-learning pipelines with real data
- Validate product-market hypotheses before engineering spend
- Train small domain-specific models on niche corpora
- Test dashboard concepts with live input

</td>
</tr>
</table>

***

### 🔌 Automating UK Contracts Finder Scraper

Control the scraper programmatically for scheduled runs and pipeline integrations:

- 🟢 **Node.js.** Install the `apify-client` NPM package.
- 🐍 **Python.** Use the `apify-client` PyPI package.
- 📚 See the [Apify API documentation](https://docs.apify.com/api/v2) for full details.

The [Apify Schedules feature](https://docs.apify.com/platform/schedules) lets you trigger this Actor on any cron interval. Hourly, daily, or weekly refreshes keep downstream databases in sync automatically.

***

### ❓ Frequently Asked Questions

#### 🧩 How does it work?

Configure your keyword and stage filters in the input form, click Start, and the Actor calls the official OCDS endpoint, flattens each release into 32 columns, and emits clean JSON. No browser automation, no captchas, no setup.

#### 📏 How accurate is the data?

Records come straight from the official Cabinet Office feed, so accuracy mirrors what each buyer publishes. Free-text fields like description follow the buyer's own format. Numeric fields like value are present only when the buyer chose to disclose them.

#### 🔁 How often is the dataset refreshed?

The OCDS feed updates continuously as buyers publish new notices and amend existing ones. Every run of this Actor fetches the live feed at run time, so your dataset stays current.

#### 🪜 What is the difference between stages?

`planning` is early market engagement, `tender` is a live opportunity open for bids, `award` is a notice that a contract has been awarded, and `implementation` is updates during contract delivery. The same OCID can appear in multiple stages over its lifecycle.

#### ⏰ Can I schedule regular runs?

Yes. Use Apify Schedules to run this Actor on any cron interval (hourly, daily, weekly) and feed your CRM or pipeline tooling.

#### ⚖️ Is this data legal to use?

UK Contracts Finder data is published under the Open Government Licence and is intended for public reuse. You are responsible for any downstream regulatory obligations in your own product.

#### 💼 Can I use this data commercially?

Yes. Open Government Licence permits commercial use with attribution. Many bid intelligence and govtech products are built on this same feed.

#### 💳 Do I need a paid Apify plan to use this Actor?

No. The free Apify plan is enough for testing and small runs (10 records per run). A paid plan lifts the limit and gives you access to scheduling, higher concurrency, and larger datasets.

#### 🔁 What happens if a run fails or gets interrupted?

Apify automatically retries transient errors. If a run still fails, you can inspect the log in the Runs tab, fix the input, and re-run. Partial datasets from failed runs are preserved so you never lose progress.

#### 🏷️ Can I filter by CPV code directly?

Not in the input today. The fastest workaround is to filter the dataset after the run by `cpvCodes` (an array on every record). If you need server-side CPV filtering, reach out via the contact form below.

#### 🆘 What if I need help?

Our support team is here to help. Contact us through the Apify platform or use the Tally form linked below.

***

### 🔌 Integrate with any app

UK Contracts Finder Scraper connects to any cloud service via [Apify integrations](https://apify.com/integrations):

- [**Make**](https://docs.apify.com/platform/integrations/make) - Automate multi-step workflows
- [**Zapier**](https://docs.apify.com/platform/integrations/zapier) - Connect with 5,000+ apps
- [**Slack**](https://docs.apify.com/platform/integrations/slack) - Get run notifications in your channels
- [**Airbyte**](https://docs.apify.com/platform/integrations/airbyte) - Pipe procurement data into your warehouse
- [**GitHub**](https://docs.apify.com/platform/integrations/github) - Trigger runs from commits and releases
- [**Google Drive**](https://docs.apify.com/platform/integrations/drive) - Export datasets straight to Sheets

You can also use webhooks to trigger downstream actions when a run finishes. Push fresh tender data into your CRM, or alert your bid team in Slack the moment a target CPV lands.

***

### 🔗 Recommended Actors

- [**🌍 CORDIS EU Research Projects Scraper**](https://apify.com/parseforge/cordis-eu-research-scraper) - Horizon Europe and Framework Programme grants
- [**🔬 UKRI Gateway to Research Scraper**](https://apify.com/parseforge/ukri-gateway-to-research-scraper) - UK research council grants and projects
- [**⚖️ eCFR US Federal Regulations Scraper**](https://apify.com/parseforge/ecfr-code-federal-regulations-scraper) - US Code of Federal Regulations full text
- [**🇫🇮 Finland YTJ Companies Scraper**](https://apify.com/parseforge/finland-ytj-companies-scraper) - Finnish business registry with 1M+ companies
- [**📄 SEC EDGAR Full-Text Search Scraper**](https://apify.com/parseforge/sec-edgar-full-text-search-scraper) - US securities filings full text

> 💡 **Pro Tip:** browse the complete [ParseForge collection](https://apify.com/parseforge) for more reference-data scrapers.

***

**🆘 Need Help?** [**Open our contact form**](https://tally.so/r/BzdKgA) to request a new scraper, propose a custom data project, or report an issue.

***

> **⚠️ Disclaimer:** this Actor is an independent tool and is not affiliated with, endorsed by, or sponsored by Contracts Finder, the UK Cabinet Office, or any government body. All trademarks mentioned are the property of their respective owners. Only publicly available open data published under the Open Government Licence is collected.

# Actor input Schema

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

Search query (e.g. 'software', 'construction')

## `stages` (type: `array`):

OCDS stage to include

## `maxItems` (type: `integer`):

Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000

## Actor input object example

```json
{
  "keyword": "",
  "stages": [
    "tender"
  ],
  "maxItems": 10
}
```

# Actor output Schema

## `overview` (type: `string`):

Overview of scraped data

## `fullData` (type: `string`):

Complete dataset

# 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 = {
    "maxItems": 10
};

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

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

```

## MCP server setup

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

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "UK Contracts Finder Scraper",
        "description": "Scrape UK public sector contract notices from the official Contracts Finder OCDS API. Get awards, tenders, planning notices, buyer/supplier info, value, dates, CPV codes. No API key required.",
        "version": "0.0",
        "x-build-id": "TOlyBdohxrxwrnNmh"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/parseforge~uk-contracts-finder-scraper/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-parseforge-uk-contracts-finder-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/parseforge~uk-contracts-finder-scraper/runs": {
            "post": {
                "operationId": "runs-sync-parseforge-uk-contracts-finder-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/parseforge~uk-contracts-finder-scraper/run-sync": {
            "post": {
                "operationId": "run-sync-parseforge-uk-contracts-finder-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": {
                    "keyword": {
                        "title": "Keyword (optional)",
                        "type": "string",
                        "description": "Search query (e.g. 'software', 'construction')",
                        "default": ""
                    },
                    "stages": {
                        "title": "Notice stages",
                        "type": "array",
                        "description": "OCDS stage to include",
                        "items": {
                            "type": "string",
                            "enum": [
                                "planning",
                                "tender",
                                "award",
                                "implementation"
                            ],
                            "enumTitles": [
                                "Planning",
                                "Tender",
                                "Award",
                                "Implementation"
                            ]
                        },
                        "default": [
                            "tender"
                        ]
                    },
                    "maxItems": {
                        "title": "Max Items",
                        "minimum": 1,
                        "maximum": 1000000,
                        "type": "integer",
                        "description": "Free users: Limited to 10 items (preview). Paid users: Optional, max 1,000,000"
                    }
                }
            },
            "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
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
