UK Tenders & Government Contracts – Contracts Finder + FTS avatar

UK Tenders & Government Contracts – Contracts Finder + FTS

Pricing

$4.00 / 1,000 tender notices

Go to Apify Store
UK Tenders & Government Contracts – Contracts Finder + FTS

UK Tenders & Government Contracts – Contracts Finder + FTS

Track UK tenders and government contracts from the official Contracts Finder and Find a Tender open data. Filter by keyword, CPV, value, region and deadline, with daily new-or-changed alerts. OGL v3 data. Not affiliated with or endorsed by the Cabinet Office.

Pricing

$4.00 / 1,000 tender notices

Rating

0.0

(0)

Developer

Agentic Solutions

Agentic Solutions

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Security

Limited permissions

Share

UK Tenders & Government Contracts – Contracts Finder + Find a Tender

Track UK tenders and UK government contracts from the official Contracts Finder and Find a Tender open data in one feed, with keyword, CPV, value, region and deadline filters and daily new-or-changed alerts.

Tested against the live Contracts Finder and Find a Tender APIs in our October 2026 audits. Contracts Finder deadlines are checked against each notice's own record before delivery.

Quick example

Input:

{
"sources": [
"contractsFinder",
"findATender"
],
"publishedWithinDays": 3,
"stages": [
"tender"
],
"maxItems": 10
}

Output: one real row from a 21 Oct 2026 run (selected fields; value in GBP).

{
"source": "Contracts Finder",
"title": "CA18592 - The Dean Trust Tender for Cleaning Services",
"buyerName": "The Dean Trust",
"buyerPostcode": "M33 5BP",
"cpvCodes": [
"90919300"
],
"mainCategory": "services",
"procurementMethod": "Open procedure",
"value": 4648437,
"currency": "GBP",
"publishedDate": "2026-10-21",
"deadline": "2026-12-04T10:00:00Z",
"suitableForSme": true,
"url": "https://www.contractsfinder.service.gov.uk/Notice/1a9512f5-a1e3-4330-be0b-78ab283abacb"
}

I built this because UK tenders are split across two government services, and keeping an eye on both by hand is tedious. Since January 2021, new UK notices have gone to Find a Tender instead of the EU's TED (only procurements that had started before then could carry on there), so if you already follow EU tenders you still need a UK feed.

This actor reads the official open data behind Find a Tender and Contracts Finder. Since the Procurement Act 2023 came into force on 24 February 2025, new procurements, including lower-value ones, are published on Find a Tender. Contracts Finder still gets new notices, mainly for lower-value contracts in England, so it's worth watching both.

You get one row per procurement, using its newest version in the notices read, and you can filter by keyword, CPV code, value, region and deadline.

What you get

For each tender:

  • title, a short summary, and the full description
  • buyer name, town, region and postcode. Structured contact fields (names, emails, phone numbers) are left out, but descriptions are passed through as published and sometimes mention a contact person or an email address
  • CPV codes, category and procurement method
  • estimated value and currency. For notices split into lots, you get a total only when every lot has a value in the same currency
  • submission deadline, contract start and end, and whether it's flagged as suitable for SMEs. Contracts Finder deadlines are taken from each notice's own record, because the bulk feed sometimes shows times a few hours off. deadlineSource says where each deadline came from
  • a direct link to the notice on the official site
  • possibleDuplicateOf: the link to a copy of the same tender you've already had from the other service (see below)
  • source, licence, licenceUrl and attribution fields, so every row carries its Open Government Licence credit
  • changeStatus (new, changed or unchanged) and a contentHash

Daily alerts

Turn on Only new or changed since last run and schedule the actor once a day. It remembers what you've already received and only returns notices that are new, or whose deadline, value, currency, status or text has changed. Use a different State store name for each alert list you keep, and don't run two alert runs on the same store at the same time.

Send the results on with an Apify integration (email, Slack, Google Sheets, Make or Zapier) and the alerts arrive in a tool you already use.

How matching works

  • Keywords match whole words or phrases in the title and description, ignoring case. "IT" finds "IT support" but not "within". "Software" won't match "softwares", so add other forms of a word if you need them.
  • Region and postcode text has to start a word: "SN1" matches "SN1 2JH", but "N1" doesn't.
  • Value filters work in pounds. When you set a minimum or maximum, notices with no value, or a value in another currency, are skipped.
  • Deadline on or after compares the deadline's UK date. When you set it, notices without a readable deadline are skipped.
  • If a procurement was updated more than once in your date window, you get its newest version only, wherever it appears in the feed. If that newest version no longer matches your filters, the procurement is left out rather than sent in an older form.
  • Filters run after download, because the official APIs only filter by date and stage. The actor reads each service's whole date window first (up to Max pages per source) and sends the newest notices first, so if Max tenders cuts the list, you get the most recent ones. For wide date ranges with narrow filters, raise Max pages per source; the status message tells you if a run stopped at that limit.
  • Input that doesn't make sense, such as a negative value, 2.5 as Max tenders or an empty list of sources, stops the run before any request is made, with a message saying what to fix.

The same tender on both services

Some buyers publish a tender on both services. The two copies have different IDs, so the actor can't be certain they match. If a notice has the same title, buyer and deadline date (ignoring case and punctuation) as one already delivered from the other service, it's still delivered, with possibleDuplicateOf set to the first copy's link. In alert mode this works across days too. Both copies count as results and are billed, so filter on possibleDuplicateOf if you only want one.

Input examples

New software and digital tenders from the last week:

{ "keywords": ["software", "digital"], "publishedWithinDays": 7, "onlyNewOrChanged": true }

IT services (CPV 72) worth £100k or more on Find a Tender, still open after 1 November:

{ "sources": ["findATender"], "cpvCodes": ["72"], "minValue": 100000, "deadlineFrom": "2026-11-01" }

Construction work in London:

{ "cpvCodes": ["45"], "regionContains": ["London"] }

Pricing

Pay per result: $0.004 per tender delivered. There's no start fee. A run stops at Max tenders or at the spending limit you set for the run, whichever comes first, so you always know the most it can cost.

Each tender is billed straight after it's saved, one at a time. So if something breaks mid-run, at most one tender's billing is unclear, and the actor sorts it out like this:

  • The platform restarts the run (for example to move it to another server). The actor reads back what the run had already saved and doesn't send those tenders again. If the last one saved might not have been billed, it checks the platform's own record of the run's charges and bills it only if the record says it wasn't.
  • Billing fails and keeps failing. The run stops and says so, then checks the same record. If the charge went through after all, the tender counts as billed. If it didn't, the tender isn't remembered as sent, so the next alert run sends it again and bills it then.
  • The record can't be read either. Then the tender is treated as billed and isn't charged again, even though it may never have been. The run's RUN_STATS record counts these as billingInDoubt.

Two gaps are left:

  • If the platform's record showed every earlier charge but was missing that last one when a restarted run read it, and the restart came more than three minutes after the charge (after that, the platform no longer recognises a repeat), that one tender could be billed twice. A record that's missing earlier charges too is treated as unreadable.
  • If a run is cut off outright, for example by running out of memory, and isn't restarted, its alert memory can be up to about a minute out of date. The next alert run may then send, and bill, those last tenders again. A graceful abort gives the actor time to save first; an immediate one doesn't.

How it treats the source services

  • It uses only the official public APIs: the OCDS search feeds of both services, plus the Contracts Finder notice API to check deadlines. No scraping of web pages, and no login.
  • It makes about one request per second per service, and identifies itself with a User-Agent that names the actor and gives a contact address.
  • If a service answers "too many requests" (HTTP 429), the actor waits as long as the Retry-After header asks, up to five minutes. If it's asked to wait longer, or is still turned away after five waits, it stops using that service for the rest of the run.
  • If Contracts Finder signals its rate limit (HTTP 403), the actor pauses for five minutes, as its documentation asks. If the limit is still there after that pause, it stops using Contracts Finder for the rest of the run, deadline checks included.
  • If a Contracts Finder deadline can't be checked against the notice, that notice is left out of the run rather than sent with an unchecked deadline. In alert mode it's tried again next time. After three failed checks in a row, the actor stops using Contracts Finder for that run.

Data licence and attribution

Contains public sector information licensed under the Open Government Licence v3.0.

If you republish the data, keep the attribution. Every output row includes it for that reason. Government logos and crests are not covered by the OGL, and this actor doesn't use any. The OGL doesn't cover personal data either, so if a description names a person, treat it with care. The data is provided as published, so always check the official notice before you bid.

Not affiliated with or endorsed by the Cabinet Office, Contracts Finder, Find a Tender or any UK government body. "Contracts Finder" and "Find a Tender" are used only to describe the data sources.

Questions or ideas

Open an issue on the actor page. I read them, and I'm happy to add filters that people actually use.

Built by Agentic Solutions.