UK Contracts Finder Scraper — Public Tenders & Awards avatar

UK Contracts Finder Scraper — Public Tenders & Awards

Pricing

from $1.60 / 1,000 notices

Go to Apify Store
UK Contracts Finder Scraper — Public Tenders & Awards

UK Contracts Finder Scraper — Public Tenders & Awards

UK public tenders and contract awards from Contracts Finder: buyer, title, CPV codes, value, deadline, region and winning supplier. Filter by keyword, CPV code, region or value, and flag notices that are new since your last run. Official API, no login.

Pricing

from $1.60 / 1,000 notices

Rating

0.0

(0)

Developer

Northbell

Northbell

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

6 minutes ago

Last modified

Share

Search the UK government's Contracts Finder by keyword, CPV code, region, value or notice kind and get one clean row per notice: buyer, title, description, CPV codes, value range and currency, deadline, delivery regions and — on award notices — the winning supplier and awarded value, with a link to the notice on Contracts Finder. $2.00 per 1,000 notices, no login, no API key.

Run it again, or put it on a daily schedule, and every row also tells you whether the notice is new since the last run (isNew). Set What to return to Only new and you pay only for the notices you have not seen before.

What Contracts Finder holds now. Under the Procurement Act 2023, procurements started on or after 24 February 2025 are published on Find a Tender, not on Contracts Finder (GOV.UK guidance). Contracts Finder still carries the notices of procurements started before that date, so most of what it publishes today are award results (on 16 October 2026: 83 award notices and 8 open opportunities). The form starts on Award results for that reason. For new UK tenders to bid on, search Find a Tender.

What you get

FieldWhat it is
noticeId, noticeReference, urlContracts Finder's notice id, the reference the buyer or its procurement portal gave it and the link to its page
noticeKind, noticeType, statusopen-call (a live opportunity), closed-call, award, planning (future opportunity), early-engagement, withdrawn; Contracts Finder's own type (Contract, Pipeline, PreProcurement) and status (Open, Closed, Awarded, Withdrawn)
publishedOn, updatedAtthe date the notice was first published (UK date) and the time of its last update, with the UK offset
deadlinethe submission deadline with time and offset as the notice states it. null on award notices (their stored deadline is the old tender deadline, not a live one)
isNew, previousRunAttrue / false whether you had not seen this notice in your previous run of the same search, and when that run was (null on the first run)
buyerNamethe buying organisation (a public body)
title, descriptionthe title, and the description cleaned of markup and cut at 500 characters on a word boundary (… marks a cut)
cpvCodes, mainCpv, cpvDescriptionthe notice's CPV codes (8 digits), the first one, and Contracts Finder's text for them
valueMin, valueMax, currencythe value as stated, in pounds (GBP). A single stated value arrives as valueMin alone; a range as both. null where the buyer stated nothing
regionsthe delivery regions the buyer ticked (["Wales"], ["Any region"], or all twelve for a UK-wide notice)
contractStart, contractEndthe contract's start and end dates
suitableForSmewhether the buyer marked the notice as suitable for small businesses
awardedSupplier, awardedValue, awardedDate, awardedToSmeon award notices: the supplier name as the buyer entered it (several winners come in one text, separated by commas), the value awarded, the date, and whether the winner is marked as an SME
observedAtwhen the row was collected

Run it again and again

  • On a schedule: save your input as a task and add a Schedule: the same search every morning. Send each run to Google Sheets, Slack or email with an integration on the task.
  • Watch for changes: Set What to return to Only notices that are new since the last run.
  • In bulk: Combine Keywords, CPV codes, Regions and a value range in one run.

Use it for

  • Bid monitoring: a daily schedule with your keywords or CPV codes, Open opportunities and Only new, sent to Sheets, Slack or your CRM
  • Lead lists for suppliers: the public bodies that buy what you sell: buyer, region, CPV, value and the notice link
  • Market research: Award results by CPV code and region show who wins, how often and for how much
  • Pipeline planning: Planning notices (future opportunities and early engagement) announce purchases before the call is published

Input

{
"keywords": ["software"],
"cpvCodes": ["72000000"],
"regions": ["London", "South East"],
"noticeKind": "open-calls",
"valueFrom": 50000,
"publishedWithinDays": 7,
"maxNotices": 200,
"output": "new"
}
  • All filters are combined with AND; the entries inside one list are combined with OR.
  • keywords: Contracts Finder searches the notice title and description and treats every word separately (OR): in a live check on 16 Oct 2026, road found 19 open notices, maintenance 58 and road maintenance 71, the union of the two. A phrase in quotation marks found none, so the Actor removes quotation marks. Use short single words.
  • cpvCodes: a code covers its whole branch: 72000000 matched 29 open notices on 16 Oct 2026, and 20 of them carried only narrower 72… codes such as 72223000. Contracts Finder does not accept a short code such as 72 (0 notices), so the Actor pads it to 72000000.
  • regions: the delivery region as Contracts Finder names it (London, Wales, Yorkshire and The Humber…). Notices that apply to the whole UK are included, because the buyer ticked every region.
  • valueFrom / valueTo: in pounds. A notice that states no value is left out when you set a value range (30 of 30 award rows in a live check with valueFrom had a value).
  • noticeKind: open-calls (live opportunities), awards, planning (future opportunities and early engagement) or all (also closed and withdrawn notices).
  • publishedWithinDays, publishedFrom, publishedTo — Contracts Finder works in whole days, in UK time. It returns a notice when it was first published or last updated in the period: of 416 award notices returned for 14–15 Oct 2026, 26 had been published earlier and updated in the period. publishedFrom / publishedTo (YYYY-MM-DD) replace Published or updated within.
  • Results are sorted newest first (by last update), and maxNotices (default 200, up to 5,000) cuts the list from the old end. With Only new it is the number of new notices to return: the Actor reads down the list, past the notices you have already seen (up to 5,000 notices deep), until it has found that many. Notices below the cut-off are not marked as seen, so they come back as new in your next run.

"Is it new" is remembered per search — the same keywords, CPV codes, regions, value range and notice kind — in a named key-value store in your Apify account, so the second run of the same search already shows isNew. Changing the period or Maximum notices keeps the same history. A notice counts as seen by its Contracts Finder notice id.

Pricing

$2.00 per 1,000 notices, plus $0.01 per run. Error rows (a search Contracts Finder rejects, Contracts Finder not answering) are free. With Only new, notices you have already seen are skipped and not charged. The $0.01 run-start fee is the one charge every run pays, even one that returns nothing.

Notes

  • Source: the public notice search of Contracts Finder (/api/rest/2/search_notices), run by the Crown Commercial Service. Anonymous access, nothing from behind a login. Contracts Finder's terms say most of its content is published under the Open Government Licence v3.0, with some exemptions listed on its site. Contains public sector information licensed under the Open Government Licence v3.0. The terms also ask users not to crawl in a way that impairs the service: the Actor sends one search at a time, waits a second between searches, and waits five minutes and tries once more if the service answers HTTP 403, the "too many requests" answer its API documentation describes.
  • Buyers are public bodies. No contact persons, email addresses or phone numbers are returned; the Actor never reads those fields, and it removes e-mail addresses and phone numbers that buyers typed into titles and descriptions (36 of 754 descriptions in a read of 520 open and 234 award notices on 16 Oct 2026 held an e-mail address). It cannot recognise a person's name written into free text, so a description can still name a contact. awardedSupplier is whatever the buyer entered; for a sole trader or a small firm that can be the trader's own name, as Contracts Finder publishes it.
  • Contracts Finder returns at most 1,000 notices per search. When a period reaches that, the Actor splits it in half and asks again, newest half first, down to single days. If one single day still reaches 1,000 it adds a free error row saying the list for that day may be incomplete; narrow the search with a notice kind, region, CPV code or keyword.
  • Values are in pounds sterling; Contracts Finder has no currency field and its notice pages show £. A value of 0 means the buyer stated none (100 of the 520 open notices state no value at all), so valueMin / valueMax are null there. Some buyers enter a placeholder such as 1, passed on as stated.
  • deadline is filled on every open notice in that read (520 of 520). awardedSupplier was empty on 101 of 234 award notices; awardedValue was filled on 233 of 234.
  • Descriptions are long (median 1,000 characters, longest 5,777 among the 520 open notices), so they are cut at 500.
  • Dates: publishedOn is the UK calendar date; deadline and updatedAt keep the offset Contracts Finder sends (Z or +01:00).
  • If Contracts Finder is rate limiting or down, the Actor waits and retries, then adds a free error row, and the run is marked failed when nothing at all could be read. Reading the 520 open notices in one go took about 20 seconds on 16 Oct 2026.

For EU tenders, see EU Tenders Scraper (TED). If the winner of an award is a UK company, see UK Companies House Scraper for its register entry.

For AI agents

{"noticeKind": "open-calls", "publishedWithinDays": 3, "maxNotices": 5} returns up to 5 rows, newest first, each with buyer, title, CPV codes, deadline and value. Rows have type: notice or error. Fields that do not apply to a notice are null (or an empty list), never missing. Schedule the same input daily with "output": "new" to get only what was published or updated since the previous run.

**Something broke or looks wrong?** Open an issue on this Actor's Issues tab and I'll look at it. **Found it useful?** A short review on the Store page helps other people find it.