🇬🇧 UK Find a Tender Watch — Tenders, Awards & Incumbents
Pricing
from $13.40 / 1,000 procedure deltas
🇬🇧 UK Find a Tender Watch — Tenders, Awards & Incumbents
Watch UK public procurement from the official Find a Tender OCDS feed: new tenders, award results and incumbent changes as deduplicated, delta-only events. Seed-zero watch mode, a machine-checkable source receipt on every run, and pay-per-delta pricing.
Pricing
from $13.40 / 1,000 procedure deltas
Rating
0.0
(0)
Developer
NexGen Watch
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
2 days ago
Last modified
Share
Bid teams lose contracts they never saw posted. This turns the UK's official Find a Tender OCDS feed into a deduplicated, delta-only watch on new opportunities, award results, and incumbent changes — with a machine-checkable receipt on every run.
What you get
tender_notice— opportunity and planning records with buyer, CPV, value, deadline and source URLaward_notice— award records with winner names/ids, incumbent keys, award value, and the linked tenderprocedure_delta— watch-mode change events: new opportunity, notice updated, tender-to-award, incumbent changesource_receipton every run — terminal state, counts, and a source-shape canary result, never billed- Deduplication on the source-native procedure id, so a re-run does not re-charge you for the same change
Use cases by team
- Suppliers & bid teams: Watch named buyers and CPV categories so a qualifying tender reaches your pipeline the day it publishes.
- Incumbency & market analysts: Track who is winning which contracts, and catch the award that quietly replaces an incumbent.
- Procurement-intelligence vendors: License a bounded, deduplicated official feed instead of maintaining an OCDS parser yourself.
- Public-sector consultancies: Keep dated, auditable evidence of what the official register said and when.
Example inputs
Last 7 days, everything (default window)
{"maxItems": 500}
Watch two named buyers by CPV
{"buyerNames": ["Ministry of Defence"],"cpvCodes": ["72000000"],"watchMode": true,"baselineId": "mod-it-watch"}
Explicit window with keyword targeting
{"updatedFrom": "2026-07-01","updatedTo": "2026-07-24","keywords": ["cyber","cloud migration"],"linkAwards": true}
📊 Sample Output
{"record_type": "award_notice","procedure_id": "ocds-h6vhtk-04f2c1","buyer_name": "Ministry of Defence","title": "Cloud hosting services","cpv_codes": ["72000000"],"award_value_gbp": 4250000,"winner_names": ["Example Digital Ltd"],"incumbent_key": "example-digital-ltd","linked_tender_id": "ocds-h6vhtk-04f2c1-tender","notice_kind": "award","source_url": "https://www.find-tender.service.gov.uk/Notice/04f2c1-2026","observed_at": "2026-07-25T00:00:00Z"}
How it works
Give it a date window and optional buyer / CPV / keyword / notice-kind filters. It reads the Find a Tender Service OCDS Release Packages API (find-tender.service.gov.uk) as an anonymous public client, normalizes each release into tender_notice and award_notice records, links awards back to their originating tender when linkAwards is on, and — in watch mode — diffs against a private baseline to emit only procedure_delta events. Every run closes with a source_receipt carrying the terminal state and a canary check on the source shape, so a zero is always explained.
Pricing
| Event | Price (FREE tier) |
|---|---|
Actor start (apify-actor-start) | $0.02 flat, once per run |
Procedure delta (procedure_delta) — primary | $0.02 |
Tender notice (tender_notice) | $0.004 |
Award notice (award_notice) | $0.006 |
Source check (source_check) | $0.10, once per run |
Pay-per-event on a four-tier ladder (FREE → GOLD, with Platinum/Diamond floored at the Gold rate). Primary event procedure_delta: $0.02 / $0.018 / $0.016 / $0.0134. Notices: $0.004 / $0.0036 / $0.0032 / $0.00268 (tender) and $0.006 / $0.0054 / $0.0048 / $0.00402 (award). source_check: $0.10 / $0.09 / $0.08 / $0.067. Worked example — a watch run on FREE that finds 12 procedure deltas: $0.02 start + $0.10 source check + 12 × $0.02 = $0.36. A seed run or a genuine-zero run charges the start + source check only; receipts are never billed. New to Apify? Start free.
Run it — API, CLI, MCP
API:
curl -X POST "https://api.apify.com/v2/acts/nexgenwatch~uk-fts-tender-award-watch/runs?token=$APIFY_TOKEN" \-H "Content-Type: application/json" -d @input.json
CLI:
$apify call nexgenwatch/uk-fts-tender-award-watch -i @input.json
MCP: expose nexgenwatch/uk-fts-tender-award-watch through Apify's MCP server, select it as a tool, and pass the same input object.
Related actors — App Intelligence cluster
| Actor | What it does |
|---|---|
| EU TED Tender & Award Watch | Watch EU-wide public procurement: tenders, awards, incumbent changes. |
| CanadaBuys Tender Watch | Watch Government of Canada tender opportunities and awards. |
| AusTender Award Watch | Watch Australian federal contract awards and incumbents. |
| GeBIZ Tender & Award Watch | Watch Singapore GeBIZ tenders open, change, close and award. |
| MAS Directory Change Watch | Watch Singapore MAS financial-institution licence changes. |
Compliance & honest limits
- Public, logged-out official source only — no API key, login, cookie, CAPTCHA, or access-control defeating.
- Client-side targeting: filters are applied to the bounded window this actor fetched, not pushed into the upstream query.
- Watch mode's first run seeds a private baseline and emits zero deltas by design — deltas start on the second run.
- A source-confirmed empty window is
SUCCEEDED-0: GENUINE_EMPTY; truncated runs arePARTIAL; exhausted retries areBLOCKED. source_receiptrecords are always emitted and are never billed.
FAQ
Where does the data come from?
The official UK Find a Tender Service (find-tender.service.gov.uk) OCDS Release Packages API public, logged-out feed. No API key, login, or cookie is used, and no access control is defeated.
What does watch mode actually do?
The first run stores a private baseline and emits zero deltas. Every later run emits only procedure_delta events keyed on the source-native procedure id — new opportunity, notice updated, tender-to-award, and incumbent change.
Does zero results mean I was blocked?
No, and you never have to guess. Every run emits a source_receipt with an explicit terminal state: NORMAL, GENUINE_EMPTY, PARTIAL, or BLOCKED, plus a source-shape canary result.
What am I charged when nothing changed?
The $0.02 start and the $0.10 source check. Deltas are the primary billable unit, so a quiet window is cheap by design. Receipts are never billed.
How do I bound the window?
Use updatedFrom / updatedTo — it defaults to a recent bounded window rather than attempting the full historical archive.
Can I track a specific buyer or category?
Yes — that is the main targeting path. Pass buyerNames, cpvCodes, keywords, or noticeKinds.
Will this reconstruct the full contract history?
No. It is a bounded, deduplicated recurring feed, not a historical archive backfill. That honesty is deliberate.
Troubleshooting
- Watch mode emitted nothing? Expected on the first run — it seeds the baseline. Deltas begin on run two with the same
baselineId. - Zero records? Check the date window first, then read the
source_receipt:GENUINE_EMPTYmeans the source really had nothing in that window. - Run marked PARTIAL? Collection was truncated against
maxItemsor a retry budget. RaisemaxItemsor narrow the window and re-run. - Filters returning too little? Filters apply client-side to the fetched window, so widen the date window before widening the filters.
- Need the untouched upstream payload? Set
includeRaw: trueto carry the raw source object alongside the normalized record.
About
Part of the NexGenData procurement-watch family — one honest, deterministic contract across UK, EU, Canadian, Australian and Singaporean public procurement. Built by NexGenData. Questions or need a custom feed? Open an issue on the Actor page.