UK Public Tenders Feed: Find a Tender + Contracts Finder
Pricing
from $3.00 / 1,000 tender results
UK Public Tenders Feed: Find a Tender + Contracts Finder
UK public-sector tenders, pipeline notices and contract awards from the official Find a Tender and Contracts Finder OCDS APIs, flattened and de-duplicated. Filter by keyword, CPV prefix, GBP value, postcode, NUTS/ITL region, deadline and SME flag. No API key.
Pricing
from $3.00 / 1,000 tender results
Rating
0.0
(0)
Developer
Open Data Tools
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 hours ago
Last modified
Categories
Share
UK Public Tenders Feed
This tool finds UK public sector contract opportunities and contract awards and gives them to you as one filterable list. It reads the two official UK notice sites, Find a Tender (higher-value notices, all UK) and Contracts Finder (lower-value notices, England), and removes duplicates between them. You get upcoming (pipeline) notices, open tenders and awards, each with a link to the official notice, and no API key or login is needed.
Who it's for
- Suppliers and small businesses looking for public contracts they can bid for.
- Bid writers and consultancies that run a daily tender search for their clients.
- Sales teams that want early notice of planned purchases through pipeline notices.
- Analysts who track who won which contracts, the award values and the suppliers.
Why use it
- Two official sources in one list: notices from Find a Tender and Contracts Finder are combined and de-duplicated.
- Every stage: planned (pipeline) notices, open tenders and contract awards, or just the stages you choose.
- Only open opportunities if you want: one setting keeps only tenders whose deadline is still in the future.
- Filter the way you search: by keywords, contract value in GBP, buyer or delivery postcode, region, and CPV codes (Common Procurement Vocabulary, the standard codes that describe what is being bought, such as
72for IT services). - Small business friendly: show only notices the buyer marked as suitable for SMEs (small and medium-sized enterprises).
- Official data, no account needed: it uses the sites' public OCDS feeds (Open Contracting Data Standard, a common format for publishing contract data). No API key or login is needed.
- Built for daily alerts: runs are short and can be scheduled daily, and notices removed by filters or de-duplication are not charged.
How to use it
- Open the Actor in Apify Console and enter Keywords that describe the work you do, such as
software,ITordigital. Add Exclude keywords to drop notices you never want. - Choose the Notice stages you want, and tick Only tenders still open if you only want opportunities you can still bid for.
- Optionally narrow the results with Minimum value (GBP), Postcode prefixes (for example
MorLS1), NUTS/ITL region codes (standard UK region codes, for exampleUKDorUKI), CPV code prefixes or SME-suitable only. Days back sets how far back to look (7 days by default, up to 90). - Click Start. Open the Output tab to see the notices, newest first, each with a
noticeUrllink to the official notice. Export them as JSON, CSV or Excel. - To get a daily tender alert, create a schedule under Schedules that runs once a day. Notices are de-duplicated within a run but not remembered between runs, so a short Days back (such as 1) keeps repeats down.
- To send results somewhere, add an integration such as Google Sheets, Slack, Zapier or Make, or a webhook that fires when the run finishes.
Pricing
You pay for each notice saved to your results: $0.004 on the Apify Free plan, $0.0035 on Bronze and $0.003 on Silver and above. Each run also has a tiny Apify start fee of $0.00005. Notices removed by your filters or by de-duplication are not charged.
Example: a daily run that returns 50 notices costs about $0.20 on the Free plan, or $0.15 on Silver. Over 30 days that is about $6.00 on Free, or $4.50 on Silver.
API and reference
This section is for developers and AI agents. It lists every input and output field, a sample record and code examples.
Summary
Queries the official OCDS APIs of Find a Tender (higher-value notices, all UK) and Contracts Finder (lower-value notices, England), flattens each release into one record, applies your filters, and de-duplicates across both sources. Output covers pipeline (planning) notices, open tenders and contract awards. No API key or login is needed. Runs are short and can be scheduled daily as a tender alert feed.
Input
All fields are optional.
| Field | Type | Default | Description |
|---|---|---|---|
keywords | string[] | [] | Whole-word match in title, description or cpvDescription. Case-insensitive, except all-caps terms of up to 5 characters (IT, NHS, HR), which match case-sensitively. |
keywordMode | any, all | any | Whether any or all keywords must match. |
excludeKeywords | string[] | [] | Drop notices whose title or description contains any of these (same matching rules). |
daysBack | integer | 7 | 1 to 90. Window queried: by update date on Find a Tender, by publication date on Contracts Finder. |
sources | string[] | both | find_a_tender, contracts_finder. |
stages | string[] | all | pipeline, tender, award, other. |
openOnly | boolean | false | Keep only tender-stage notices with a deadline in the future. |
cpvPrefixes | string[] | [] | CPV code prefix match, e.g. 72 (IT services), 4521 (building works). |
minValue / maxValue | integer | none | GBP. Uses valueGBP, falling back to awardValueGBP. Notices with no value are excluded when either is set. |
postcodePrefixes | string[] | [] | Prefix match on buyer or delivery postcodes, e.g. M, LS1, SW1A. |
nutsRegions | string[] | [] | Prefix match on NUTS/ITL codes, e.g. UKD, UKI. |
smeSuitableOnly | boolean | false | Only notices the buyer marked as suitable for SMEs. |
maxItems | integer | 500 | Max records returned. |
failIfEmpty | boolean | false | Fail the run if nothing is returned. Useful for health checks. |
De-duplication key: stage + buyer name + title, within a run. Results are sorted by publishedAt, newest first.
Output
| Field | Type | Description |
|---|---|---|
source | string | Find a Tender or Contracts Finder |
noticeId | string | Notice ID on the source site |
ocid | string | OCDS contracting process ID |
noticeUrl | string | Link to the official notice |
stage | string | pipeline, tender, award or other |
tags | string[] | Raw OCDS release tags |
publishedAt | string | Release date (ISO 8601) |
title, description | string | Notice title and description |
status | string or null | OCDS tender status |
category | string or null | Main procurement category (goods, services, works) |
procurementMethod | string or null | Procurement method details |
cpvCodes | string[] | CPV codes from the tender and its items |
cpvDescription | string or null | Description of the main CPV code |
valueGBP, minValueGBP | number or null | Tender value (sum of lots if no total), minimum value |
awardValueGBP | number or null | Sum of award values |
currency | string or null | Currency of the values |
deadline | string or null | Tender period end date |
contractStart, contractEnd | string or null | Contract period |
buyerName, buyerLocality, buyerPostcode | string or null | Buyer organisation and address |
regions, postcodes | string[] | Buyer and delivery regions/postcodes |
suitableForSME, suitableForVCSE | boolean or null | Buyer's suitability flags |
suppliers | string[] | Supplier names (award notices) |
licence | string | OGL v3.0 attribution |
Buyer contact emails and phone numbers are not included. A SUMMARY record in the run's key-value store has scanned, delivered, from and sources.
Sample record (from a test run; description shortened):
{"source": "Find a Tender","noticeId": "099003-2026","ocid": "ocds-h6vhtk-06ea83","noticeUrl": "https://www.find-tender.service.gov.uk/Notice/099003-2026","stage": "award","tags": ["award","contract"],"publishedAt": "2026-10-20T13:19:01+01:00","title": "NHP Health Care Planning Tool SaaS Licence","description": "NHS England (NHSE) has entered into a 12-month Software-as-a-Service (SaaS) contract for an enterprise Healthcare Planning Tool to support Wave 1 schemes ...","status": "complete","category": null,"procurementMethod": "Direct award","cpvCodes": [],"cpvDescription": null,"valueGBP": null,"minValueGBP": null,"awardValueGBP": null,"currency": null,"deadline": null,"contractStart": null,"contractEnd": null,"buyerName": "NHS England","buyerLocality": "London","buyerPostcode": "SE1 8UG","regions": ["UKI45"],"postcodes": ["SE1 8UG"],"suitableForSME": null,"suitableForVCSE": null,"suppliers": ["dRofus AS"],"licence": "Contains public sector information licensed under the Open Government Licence v3.0."}
Pricing details
Pay per event, charged per record written to the dataset (apify-default-dataset-item): $0.004 on the Free plan, $0.0035 on Bronze, $0.003 on Silver and above. Plus the Apify Actor start event ($0.00005). Notices removed by filters or de-duplication are not charged.
Usage
Apify API (synchronous run, returns dataset items):
curl -X POST "https://api.apify.com/v2/acts/opendata-tools~uk-tenders-feed/run-sync-get-dataset-items" \-H "Authorization: Bearer $APIFY_TOKEN" \-H "Content-Type: application/json" \-d '{"keywords": ["software", "IT", "digital"],"stages": ["tender"],"openOnly": true,"minValue": 25000,"daysBack": 7,"maxItems": 200}'
Python (pip install apify-client):
import osfrom apify_client import ApifyClientclient = ApifyClient(os.environ["APIFY_TOKEN"])run = client.actor("opendata-tools/uk-tenders-feed").call(run_input={"cpvPrefixes": ["72"],"nutsRegions": ["UKD"],"stages": ["tender", "pipeline"],"daysBack": 14,"maxItems": 500,})for item in client.dataset(run["defaultDatasetId"]).iterate_items():print(item["publishedAt"], item["buyerName"], item["title"], item["noticeUrl"])
JavaScript (npm install apify-client):
import { ApifyClient } from 'apify-client';const client = new ApifyClient({ token: process.env.APIFY_TOKEN });const run = await client.actor('opendata-tools/uk-tenders-feed').call({keywords: ['cyber security'],stages: ['award'],daysBack: 30,});const { items } = await client.dataset(run.defaultDatasetId).listItems();for (const item of items) console.log(item.buyerName, item.awardValueGBP, item.suppliers);
Data source and licence
Data comes from the public OCDS endpoints of Find a Tender and Contracts Finder and contains public sector information licensed under the Open Government Licence v3.0. Not affiliated with or endorsed by the UK Government. Values and dates are as published; some notices omit them. Check noticeUrl before bidding.
FAQ
Do I need an API key or an account on the tender sites?
No. The Actor uses the public endpoints of Find a Tender and Contracts Finder, so no API key or login is needed.
Does it include buyer contact details?
No. Buyer contact emails and phone numbers are not included. You get the buyer's name, locality and postcode, and a link to the official notice.
Why are some values or deadlines empty?
Values and dates are passed on as published, and some notices omit them. Note that when you set a minimum or maximum value, notices with no value are left out. Always check noticeUrl before bidding.
Is this an official government service?
No. It is not affiliated with or endorsed by the UK Government. The data is public sector information published under the Open Government Licence v3.0.
Issues and feature requests: use the Issues tab.