UK Tenders Scraper: Find a Tender and Contracts Finder Notices avatar

UK Tenders Scraper: Find a Tender and Contracts Finder Notices

Pricing

$4.00 / 1,000 tenders

Go to Apify Store
UK Tenders Scraper: Find a Tender and Contracts Finder Notices

UK Tenders Scraper: Find a Tender and Contracts Finder Notices

Returns UK public tenders, contract awards and pipeline notices from the official Find a Tender and Contracts Finder APIs, one row per notice with buyer, value in GBP, deadline, CPV codes, source and link. Filter by keyword, CPV code, stage, value and date. onlyNew for daily alerts.

Pricing

$4.00 / 1,000 tenders

Rating

0.0

(0)

Developer

Viktor Wiberg

Viktor Wiberg

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

11 hours ago

Last modified

Share

UK public procurement notices from the government's two official services, Find a Tender and Contracts Finder, read through their open OCDS APIs. You get one clean row per notice with title, short description, buyer, region, CPV codes, estimated value in GBP, publication date, tender deadline, stage, the OCDS process id (ocid), which service it came from and a link to the full notice. Notices from both services are mixed newest first in one dataset with the same fields.

Use it to get a daily alert for new UK tenders in your field, to see which public bodies buy what you sell, or to follow contract awards and their values. Schedule a run with the dates left empty and onlyNew: true for a simple tender alert.

What is covered

Source (sources)What it carries
find-a-tenderNotices that UK buyers publish under the Procurement Act 2023 (in force since 24 February 2025), including many below-threshold opportunities, plus the older notices under the Public Contracts Regulations 2015 and the utilities, concession and defence regulations. Notices from Public Contracts Scotland that are also published on Find a Tender are included.
contracts-finderSmaller contracts, mainly in England: opportunities and awards from 12 000 GBP for central government and 30 000 GBP for other public bodies, many of them call-offs from frameworks and dynamic purchasing systems. This is where small firms find a lot of the work they can actually win.

Both are read by default. Set sources to one of them to read only that service.

For scale: in the seven days from 27 September to 3 October 2026 the Find a Tender API returned 2 352 notices across all stages. From 29 September to 6 October 2026 the Contracts Finder API returned 53 tender notices (44 new, 9 amendments).

Not included: notices that buyers only publish on their own portals. Notices from 2021-01-01 onwards can be searched.

Example from a real run

Input: empty. The actor then returns the 50 newest open tender notices from the last seven days, from both services.

{}

The run on 6 October 2026 read 348 notices, returned 50 (46 from Find a Tender, 4 from Contracts Finder) and took 5.5 seconds. One of the Contracts Finder rows (delivery regions shortened here):

{
"id": "9e406bf2-0f16-423c-a4f2-98f1431438a6-916843",
"ocid": "ocds-b5fd17-36dda9bb-6f66-4a27-9e0e-d3fdc63d0c4c",
"title": "Tourism Campaign - Digital Marketing",
"description": "This contract is to provide North York Moors National Park with Digital Marketing for our Tourism Campaign running through 2027. The contract will commence in November 2026 and complete in February 2028.",
"buyer": "North York Moors National Park",
"buyerCity": "York",
"buyerRegion": null,
"deliveryRegions": ["Scotland", "North East", "Yorkshire and the Humber", "London"],
"country": "GB",
"cpvCodes": ["79342100", "38900000"],
"mainCpvCode": "79342100",
"estimatedValue": null,
"currency": null,
"awardedValue": null,
"suppliers": [],
"supplierCount": 0,
"publicationDate": "2026-10-06",
"publishedAt": "2026-10-06T17:45:07+01:00",
"deadline": "2026-11-10T12:00:00Z",
"deadlineDate": "2026-11-10",
"stage": "tender",
"releaseTag": "tender",
"noticeType": null,
"tenderStatus": "active",
"procedureType": "Open procedure (below threshold)",
"contractNature": "services",
"aboveThreshold": false,
"legalBasis": null,
"url": "https://www.contractsfinder.service.gov.uk/Notice/9e406bf2-0f16-423c-a4f2-98f1431438a6",
"noticeUrl": "https://www.contractsfinder.service.gov.uk/Notice/9e406bf2-0f16-423c-a4f2-98f1431438a6",
"source": "contracts-finder",
"sourceName": "Contracts Finder, UK Cabinet Office",
"license": "Open Government Licence v3.0"
}

A Find a Tender row from an earlier run, with keywords "software" over 27 September to 3 October 2026 (description shortened):

{
"id": "093549-2026",
"title": "003726 - Internal Audit Management System",
"buyer": "Durham County Council",
"buyerRegion": "UKC14",
"mainCpvCode": "48100000",
"estimatedValue": 170000,
"currency": "GBP",
"deadlineDate": "2026-11-05",
"stage": "tender",
"noticeType": "UK4",
"procedureType": "Below threshold - open competition",
"legalBasis": "Procurement Act 2023",
"url": "https://www.find-tender.service.gov.uk/Notice/093549-2026",
"source": "find-a-tender"
}

A larger run with stages tender and award over 30 September to 6 October 2026 and maxResults 1 000 read 1 200 notices in 9.7 seconds and returned 700 from Find a Tender (171 tender, 529 award) and 300 from Contracts Finder (22 tender, 278 award).

Input

FieldTypeDefaultDescription
sourcesarraybothfind-a-tender and/or contracts-finder. See "What is covered".
keywordsstringemptyWords that must all appear in the title, description or buyer name, in any order and any case. Example: "cloud hosting".
cpvCodesarrayemptyCPV codes. Trailing zeros match the whole category, so 72000000 (IT services) also matches 72222300.
stagesarray["tender"]tender, planning and/or award. See below.
publishedFromstring6 days before publishedToFirst publication date, YYYY-MM-DD, UK time. Earliest 2021-01-01.
publishedTostringtodayLast publication date (inclusive). At most 31 days per run.
valueMinintegeremptyMinimum estimated value (or awarded value for awards) in GBP excluding VAT. Notices without a value are left out when set.
maxResultsinteger50Maximum number of notices to return, newest first.
onlyNewbooleanfalseReturn only notices that earlier runs with the same input did not deliver. See "Monitoring and scheduling".

A run with empty input returns the 50 newest tender notices from the last seven days, from both services.

Stages

StageWhat it meansOCDS release tags
tenderOpen opportunities, their updates and cancellations (UK4 tender notices and older contract notices)tender, tenderUpdate, tenderAmendment, tenderCancellation
planningPipeline, preliminary market engagement and planned procurement noticesplanning, planningUpdate
awardContract awards, contract details, modifications and terminationsaward, awardUpdate, awardCancellation, contract, contractUpdate, contractAmendment, contractTermination

Example input: construction tenders worth at least 1 million GBP in the last two weeks.

{
"cpvCodes": ["45000000"],
"stages": ["tender"],
"publishedFrom": "2026-09-20",
"publishedTo": "2026-10-03",
"valueMin": 1000000,
"maxResults": 200
}

Example input: IT contract awards in September 2026.

{
"cpvCodes": ["72000000", "48000000"],
"stages": ["award"],
"publishedFrom": "2026-09-01",
"publishedTo": "2026-09-30",
"maxResults": 1000
}

Output

One row per notice. The dataset view "Tenders" shows the most important columns.

FieldDescription
idNotice id in its service: 093549-2026 on Find a Tender, a release id such as 9e406bf2-0f16-423c-a4f2-98f1431438a6-916843 on Contracts Finder
ocidOCDS process id. All notices for the same procurement (planning, tender, award) share it
titleTitle of the procurement
descriptionShort description, plain text, at most about 1 000 characters
buyer, buyerCity, buyerRegionBuying organisation, its town and its ITL/NUTS region code (Find a Tender only; Contracts Finder does not give one, so it is null)
deliveryRegionsWhere the work is delivered, as the notice states it: ITL/NUTS codes on Find a Tender (UKC14), region names on Contracts Finder (North East)
countryAlways GB
cpvCodes, mainCpvCodeAll CPV codes in the notice and the main one
estimatedValue, currencyEstimated value excluding VAT, or the sum of the lots when all lots have a value in the same currency
awardedValueValue of the contracts or awards in an award notice
suppliers, supplierCountWinning suppliers that are registered companies (Companies House number), and the number of winning suppliers
publicationDate, publishedAtPublication date and exact time
deadline, deadlineDateDeadline for tenders, when the notice has one
stage, releaseTagtender, planning or award, and the OCDS release tag
noticeTypeFind a Tender notice type when stated, for example UK4 (tender notice) or UK6 (contract award notice). null on Contracts Finder
tenderStatusactive, planned, complete, cancelled and so on
procedureType, contractNature, aboveThreshold, legalBasisProcedure, goods/services/works, whether above the threshold, and the law it is run under. On Contracts Finder aboveThreshold is read from the procedure text ("Open procedure (below threshold)") and is null when it does not say; legalBasis is null
url, noticeUrlLink to the notice on the service it came from (the two fields are the same)
sourcefind-a-tender or contracts-finder
sourceName, licenseName of the service and the license, for attribution

Monitoring and scheduling

Set onlyNew to true to use the actor for recurring monitoring. The actor then remembers which notices it has delivered for the same input, in a named key-value store in your Apify account (nightwave-state-uk-find-a-tender, one record per input). Each run returns and charges only notices that earlier runs did not deliver. The first run returns everything in the selection. A run without news finishes successfully with 0 rows.

A notice is identified by its service and its notice id, so the two services are tracked separately. Leave the dates empty: the default range is the last seven days, so a daily run looks at a week of notices and returns the ones it has not delivered before. Set maxResults above the number of notices your search normally gets in a week.

onlyNew and maxResults are not part of the remembered input, so you can change them without starting over. Changing any other field starts a fresh state. To start over with the same input, delete the record in the key-value store.

Example: a daily run at 07:00 UK time that returns new IT tenders. In Apify Console, open Schedules, create a schedule with the cron expression 0 7 * * * and the time zone Europe/London, and add this actor with the input below.

{
"cpvCodes": ["72000000", "48000000"],
"stages": ["tender"],
"onlyNew": true,
"maxResults": 200
}

The same schedule through the Apify API:

curl -X POST "https://api.apify.com/v2/schedules?token=<YOUR_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"name": "daily-uk-find-a-tender", "cronExpression": "0 7 * * *", "timezone": "Europe/London", "isEnabled": true, "isExclusive": true,
"actions": [{"type": "RUN_ACTOR", "actorId": "nightwave-owner~uk-find-a-tender",
"runInput": {"contentType": "application/json; charset=utf-8", "body": "<the input above as a JSON string>"}}]}'

Connect a webhook or an integration (Slack, e-mail, Google Sheets) to the actor in Apify Console if you want the new rows sent somewhere when the run finishes.

Good to know

  • Personal data is left out. Contact names, e-mail addresses and phone numbers in the notices are not used. E-mail addresses and phone numbers that a buyer has written into a title or description are replaced with [removed]. Winning suppliers are named only when they are registered companies, since other suppliers can be sole traders; they are still counted in supplierCount. Open the notice link for the buyer's official contact details.
  • The Find a Tender API can only filter by date. The actor reads every notice in the date range and applies the keyword, CPV, stage and value filters itself, newest first, and stops when maxResults is reached. A narrow search over 31 days reads about 14 000 notices and takes a few minutes; a run over seven days takes about 10 seconds. The Contracts Finder API also filters by stage, so it reads fewer pages.
  • The two services are read side by side and mixed by publication time, in the order each API returns its notices. maxResults counts rows from both together.
  • A procurement can appear on both services. The actor keeps both rows, since they are separate notices with their own ids and links.
  • An updated notice (for example a tenderUpdate with a new deadline) is a new row with its own id and the same ocid.
  • Values are what the buyer stated in the notice. Some buyers enter placeholder values such as 1 GBP.
  • Requests are retried four times on network errors, rate limits (respecting Retry-After) and server errors. A rejected request or a response in an unexpected format stops the run with a clear message instead of storing broken rows.

Use cases

  • A daily tender alert for your CPV codes or keywords, sent to Slack or e-mail with an Apify integration.
  • A list of UK public buyers that procure what you sell, with buyer, buyerCity and buyerRegion.
  • Deadline tracking: sort open tenders in your field by deadlineDate in a spreadsheet.
  • Follow a procurement from pipeline to award with ocid, and see the awarded value and winning companies.
  • Feed a bid management tool or CRM with the structured fields and the notice link.

FAQ

How often is the data updated? Every run reads both APIs live. Buyers publish notices throughout the day.

What does 1 000 rows cost? 4 USD (0.004 USD per notice, event tender), plus Apify platform usage. A test run on 6 October 2026 that returned 1 000 notices from both services used 0.0059 USD of platform usage. maxResults caps how many notices a run returns.

Can I use the data commercially? Yes. Find a Tender states that "Notice data is available under the Open Government Licence", Contracts Finder states that "All content is available under the Open Government Licence v3.0 except where otherwise stated", and the Open Government Licence v3.0 allows commercial and non-commercial reuse with attribution.

Data source and license

The data comes from the public Find a Tender OCDS release package API (GET https://www.find-tender.service.gov.uk/api/1.0/ocdsReleasePackages), which needs no API key. Find a Tender is run by the Cabinet Office. Its data and API documentation says: "Notice data is available under the Open Government Licence." The terms and conditions say that content published under the OGL can be reproduced as long as the licence's conditions are followed. Under the Open Government Licence v3.0 you may copy, publish, adapt and exploit the information commercially, as long as you acknowledge the source. Use the attribution "Contains public sector information licensed under the Open Government Licence v3.0." Every row carries sourceName and license for that purpose.

Contracts Finder data comes from its public OCDS search API (GET https://www.contractsfinder.service.gov.uk/Published/Notices/OCDS/Search), which needs no API key for published notices. Contracts Finder is also run by the Cabinet Office. Every response from the API names the Open Government Licence v3.0 as its license, and the terms and conditions, shared with Find a Tender, say: "You can reproduce content published on Contracts Finder and Find a Tender under the OGL as long as you follow the licence's conditions." They also say that most content is made available "through feeds for other websites and applications to use".

The actor reshapes the notices (selected fields, plain text descriptions, summed lot values) but does not change their content. It is not affiliated with or endorsed by the Cabinet Office, Find a Tender or Contracts Finder.

Pricing

Pay per result: 0.004 USD per row returned (event tender), which is 4 USD per 1 000 notices. Apify bills platform usage on top as usual; it is small (see the FAQ). maxResults caps how many rows a run returns, so you always know the highest possible cost.

Contact

Built and maintained by Nightwave AB. Questions, bugs and feature requests: kontakt@nightwave.se

På svenska

Actorn hämtar brittiska offentliga upphandlingar från den brittiska regeringens två officiella tjänster, Find a Tender (främst större kontrakt) och Contracts Finder (mindre kontrakt från 12 000 GBP för statliga och 30 000 GBP för övriga köpare), via deras öppna OCDS-API:er. Varje annons blir en rad med titel, kort beskrivning, köpare, region, CPV-koder, uppskattat värde i GBP, publiceringsdatum, sista anbudsdag, skede, källa, processens ocid och länk. Båda källorna läses som standard och blandas med de nyaste först; välj en med sources.

  • Filtrera på sökord (alla ord måste finnas i titel, beskrivning eller köparens namn), CPV-koder (72000000 träffar hela IT-kategorin), skede (pågående upphandlingar, planerade upphandlingar eller tilldelningar), lägsta värde i GBP och publiceringsdatum (högst 31 dagar per körning).
  • Find a Tenders API kan bara filtrera på datum, så actorn läser alla annonser i intervallet och filtrerar själv. Sju dagar tar ungefär 10 sekunder.
  • Med onlyNew: true lämnar en schemalagd körning bara annonser som inte levererats tidigare, och bara de debiteras.
  • Kontaktpersoners namn, e-post och telefonnummer tas inte med. Vinnande leverantörer namnges bara när de är registrerade bolag (Companies House-nummer), eftersom andra kan vara enskilda näringsidkare.
  • Källor: Find a Tender och Contracts Finder (båda Cabinet Office), Open Government Licence v3.0, som tillåter kommersiell vidareanvändning med källhänvisning.
  • Pris: 0,004 USD per annons, 4 USD per 1 000.