UK Public Tender Monitor (CF + FTS) avatar

UK Public Tender Monitor (CF + FTS)

Pricing

from $4.00 / 1,000 new or amended records

Go to Apify Store
UK Public Tender Monitor (CF + FTS)

UK Public Tender Monitor (CF + FTS)

Unofficial tool, not affiliated with UK Government/Cabinet Office. Get only new and amended UK public notices from Find a Tender and Contracts Finder since your last run, in one feed. OGL v3.0 data.

Pricing

from $4.00 / 1,000 new or amended records

Rating

0.0

(0)

Developer

Two Five Labs

Two Five Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

10 days ago

Last modified

Share

Not affiliated with or endorsed by the UK Government or the Cabinet Office (including Contracts Finder and Find a Tender). This is an independent tool from Two Five Labs that reads publicly available data. No government seals or logos are used.

What it does

Reads the Find a Tender and Contracts Finder OCDS APIs (one or both, set by portals) for notices published or updated in your look-back window, and returns only what is new or changed since your last run.

Duplicates:

  • Within each portal, several releases of the same notice are collapsed to the latest.
  • Across portals, a notice is merged when it has the same normalized title and buyer on both. The Find a Tender record is kept and the Contracts Finder copy is listed in extra.alsoOn.
  • The match is title+buyer only, so a notice with a different title on each portal is not merged, and two different notices with an identical title and buyer would be. In a live run, a few records were merged this way.

Who it's for

Suppliers that bid on UK public contracts at any value.

Input

FieldDescription
portalslist, default ["fts","cf"]. fts = Find a Tender, cf = Contracts Finder. Cross-portal merging applies only with both.
lookbackDaysinteger, default 3. Days of published/updated notices to check.
keywordslist. Matches the notice title (case-insensitive).
includeDescriptionsboolean, default false. Off: no free-text description is output. On: the description is added in extra.description, trimmed to remove contact names (marked [contact details removed]). Leave it off unless you need it.
maxPagesinteger, default 5. API pages (100 notices each) per portal per run.
maxSpendUsd, emitUnchanged, stateStoreNamesee "How runs work".

There is no CPV or region filter.

No API key is needed for this source.

Run it via API

curl -X POST "https://api.apify.com/v2/acts/flamelit_constellation~uk-public-tender-monitor/runs?token=$APIFY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"maxSpendUsd": 1.0}'

Use your own Apify token.

How runs work

  • First run: returns every matching record in the look-back window, all marked changeType: "new". A first run can return many records, so the default spend cap may stop it early. The rest are output on the next run.
  • Later runs: return only records that are new, or whose content changed since they were last seen (amended). The actor keeps a content hash per record in a key-value store. A second run over the same data outputs nothing.
  • stateStoreName: give each saved search its own name so each one tracks its own history.
  • emitUnchanged: true also outputs unchanged records (changeType: "same"), which are never charged.
  • Spend cap: maxSpendUsd (default 1.0) is a hard cap. When it is reached, the actor stops charging and stops output. Records not yet output are kept for the next run.
  • Errors and rate limits: network errors, HTTP 429 and 5xx responses are retried up to 3 times with backoff. Retry-After is honoured in both its seconds and date forms; if the source asks for a wait longer than 2 minutes, the run stops instead of waiting.

Output

Tender record: id (OCDS ocid), source ("uk-fts" or "uk-cf"), title, buyer, cpv[], region, value, currency, posted, deadline, url, changeType, extra{portal, tag, status, attribution, modified, alsoOn (merged records only), description (only with includeDescriptions, max 1,000 chars)}.

Output includes award and contract notices, not only open tenders. Check extra.tag and extra.status. posted is the date of the latest release.

Excerpts from a live run:

{
"id": "ocds-h6vhtk-078805",
"source": "uk-fts",
"title": "Air Source Heat Pump installation at Fullwell Cross Medical Centre",
"buyer": "NHS Property Services Limited",
"posted": "2026-10-14T18:05:40.000Z",
"url": "https://www.find-tender.service.gov.uk/Notice/097237-2026",
"changeType": "new",
"extra": {
"portal": "fts",
"tag": [
"award",
"contract"
],
"status": "complete",
"attribution": "Contains public sector information licensed under the Open Government Licence v3.0. https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/ © European Union, https://ted.europa.eu, 1998–2020 (notice schema)."
}
}
{
"id": "ocds-b5fd17-19814284-7c7b-4dc3-b05f-6e646dadb7e2",
"source": "uk-cf",
"title": "Asset Management Surveys",
"buyer": "Environment Agency",
"cpv": [
"71311300"
],
"value": 150000,
"currency": "GBP",
"posted": "2026-10-14T18:05:16.000Z",
"url": "https://www.contractsfinder.service.gov.uk/notice/a8021dbb-046b-457b-b502-1dcc0e2788f6",
"changeType": "new",
"extra": {
"portal": "cf",
"tag": [
"award"
],
"attribution": "Contains public sector information licensed under the Open Government Licence v3.0. https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/ © Crown copyright."
}
}

cpv, region and value are often empty for Find a Tender records.

Personal data: contact fields such as contactPoint are removed, and emails and phone numbers in text are masked. Free-text descriptions are off by default. If you turn them on, they are trimmed to remove contact names: Contact names after role labels are removed; other names in free text may remain. Long descriptions may be shortened, sometimes before any contact details, to remove contact names.

Pricing

Pay per event: one run-start charge per run and one new-item charge per new or amended record output. Current prices are shown on this actor's Apify Store page.

Limits

  • One shared throttle for both portals: at least 6 seconds between any two requests, so 10 requests per minute or fewer overall, and at most 20 requests per run.
  • The live run used 10 requests.

Data source and terms

  • Sources: Find a Tender OCDS API (https://www.find-tender.service.gov.uk) and Contracts Finder OCDS API (https://www.contractsfinder.service.gov.uk).
  • Contains public sector information licensed under the Open Government Licence v3.0 (https://www.nationalarchives.gov.uk/doc/open-government-licence/version/3/).
  • Contracts Finder records: © Crown copyright. Find a Tender records: notice schema © European Union (https://ted.europa.eu), 1998–2020.
  • Each record carries its line in extra.attribution. The data has been modified: notices are normalized, filtered, merged as described above, and compared between runs.
  • Not affiliated with or endorsed by the UK Government or the Cabinet Office (including Contracts Finder and Find a Tender).

FAQ

Does it return every record? The first run returns everything matching. After that it returns only new or changed records. How often should I run it? Daily is enough. Can I cap spend? Yes. maxSpendUsd is a hard cap, and records it stops are output on the next run. Does it need a key? No.

Support

Questions or problems: please use the Issues tab on this actor's Apify page first. Publisher: Two Five Labs, contact twofivelabs@gmail.com.

Requests to the source identify themselves with a contact address: flamelit-constellation-actors/0.1 (+mailto:twofivelabs@gmail.com).