UK Tender Notices from Find a Tender
Pricing
from $1.40 / 1,000 tender notices
UK Tender Notices from Find a Tender
UK public procurement notices from the official Find a Tender API, one row per notice. Pick a last-update window and stage. You pay only for notice rows.
Pricing
from $1.40 / 1,000 tender notices
Rating
0.0
(0)
Developer
Gabor Molnar
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
18 days ago
Last modified
Categories
Share
Get UK public procurement notices from Find a Tender, the UK government's official notice service, with one dataset row per notice. You choose a date window and a stage, and the Actor pages through the official API for you. You don't need an API key.
Input
{"updatedFrom": "2026-09-28T00:00:00","updatedTo": "2026-09-28T23:59:59","stage": "tender","maxNotices": 100}
updatedFromandupdatedTotake times asYYYY-MM-DDTHH:MM:SS, with no timezone. Find a Tender matches them against when a notice was last updated, not when it was first published. The window can be at most 31 days long.stageisplanning,tender(the default) oraward. One notice can belong to more than one stage.maxNoticesis between 1 and 1000, and defaults to 100.cursorcontinues an earlier run. See "Continuing a run" below.
Output
Each notice is one row with these fields:
ocidandid. Theocidnames the procurement process and theidnames this notice within it. Several notices can share anocid, so use the pair as the key.date,tags,title,status,buyer(the buying organisation's name),cpv(the main CPV code),value(amount and currency) anddeadline. If a notice gives its deadline as a bare date, you get the bare date. A field the notice leaves out isnull.sourceUrl, the API request that returned the notice, pluslicenceandattribution.
The Actor returns only these fields. It leaves out contact details, addresses, suppliers, descriptions, documents and the raw OCDS record. It doesn't filter by sector or region.
The live API can move a notice from one page to the next while the Actor reads them. You still get that notice once.
A run adds one status row, with every notice field set to null, in three cases:
no_noticesmeans nothing matched the window and stage.more_availablemeans the run reachedmaxNoticesand Find a Tender has more.- A failure code from the table below means a request failed. Notices read before the failure stay in the dataset.
Continuing a run
A more_available or failure row carries a nextCursor. To pick up where the run stopped, run again with the same updatedFrom, updatedTo and stage, and put that value in cursor. After rate_limited, wait for the time in the row's retryAfter first. In our tests Find a Tender accepted about ten requests in quick succession and then asked for a two-minute wait. A run of 1000 notices makes ten requests, so a second large run, or a continuation, started straight after it is likely to be rate_limited. Notices updated between the two runs can move, because the API serves live data.
Pricing
You pay for each notice row. Status rows are free.
| reasonCode | Meaning | Charged |
|---|---|---|
notice | One notice | yes |
no_notices | Nothing matched the window and stage | no |
more_available | The run reached maxNotices and more notices exist | no |
invalid_window | A time in the wrong format, a date that doesn't exist, a window that ends before it starts, or one longer than 31 days | no |
rate_limited | Find a Tender answered HTTP 429 | no |
upstream_error | Another HTTP error, a refused redirect, a network failure or a timeout | no |
invalid_response | Invalid JSON, an unexpected shape or licence, or a next-page link for a different query | no |
too_large | A response larger than 4 MiB | no |
Each request has a 15-second deadline. If the connection drops, the Actor tries once more. An HTTP error, including 429 or 503, ends the run, because Find a Tender asks clients to send nothing until its Retry-After time has passed. Running the same window twice fetches and bills its notices twice.
Notices read before a failed request are charged, because they are in your dataset. If a run reaches your spending limit, it stops with the notices already saved and adds no status row, so there is no nextCursor to continue from. Use maxNotices to bound what a run costs.
Coverage
The Actor reads Find a Tender only. Other UK services, such as Contracts Finder, publish notices that may not appear here. An empty result means Find a Tender returned nothing for that query. It doesn't mean no UK contract opportunity exists.
Source and licence
The data comes from the Find a Tender OCDS release API. Find a Tender's data documentation licenses notice data under the Open Government Licence v3.0.
Every row carries the attribution "Contains public sector information licensed under the Open Government Licence v3.0." and a link to the licence. Keep both when you share the data. The licence doesn't cover personal data or third-party rights. Neither the Cabinet Office nor any contracting authority endorses this Actor. Check the original notice before you act on it.