UK Public Tenders Scraper avatar

UK Public Tenders Scraper

Pricing

$8.00 / 1,000 results

Go to Apify Store
UK Public Tenders Scraper

UK Public Tenders Scraper

UK government tenders and awards from Find a Tender and Contracts Finder, one row shape, newest first. Filter by keyword, CPV, stage, date. Procurement Act notices included. No contact data. $8 per 1,000 notices.

Pricing

$8.00 / 1,000 results

Rating

0.0

(0)

Developer

Jesse Hawkins

Jesse Hawkins

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

20 days ago

Last modified

Share

UK public-sector tenders, contract awards and pipeline notices from both official government portals, in one clean feed:

  • Find a Tender, the UK's service for higher-value public procurement, including every Procurement Act 2023 notice;
  • Contracts Finder, lower-value contracts, mainly in England.

Give keywords, CPV codes, a stage or a date range, and get one row per notice, newest first: title, description, buyer, CPV codes, value, deadlines, contract dates, award date, suppliers and the link to the official notice. $8.00 per 1,000 notices. No API key, no browser, no proxy.

Why another UK tenders Actor

Three things the two APIs do, found while building this one and handled here:

  • Find a Tender's own stages=tender filter misses Procurement Act notices. On 2026-10-01 it returned 7 of the day's 66 tender notices: only those under the 2015 regulations. This Actor reads every notice and takes the stage from the notice itself, so the other 59 are in your results.
  • Contracts Finder's paging stops early on longer date ranges. For 9 to 10 September 2026 its "next page" link ended after 100 notices of 237. This Actor pages by date instead, so it reads them all.
  • Both portals throttle. They answer 429 Too Many Requests with a two-minute wait. This Actor paces its requests and waits as asked, so a long run slows down instead of failing.

Input

{
"keywords": "software, cloud hosting, cyber",
"cpvCodes": ["72"],
"stage": "tender",
"portal": "both",
"dateFrom": "2026-09-01",
"maxItems": 500
}
  • keywords: comma-separated phrases. A notice matches if any phrase is in its title, description, lot titles or descriptions, or buyer name. Case-insensitive; a phrase matches at the start of a word, so cyber finds cybersecurity. A short all-capitals phrase (IT, CCTV) matches capitals only, so IT does not match every "it".
  • cpvCodes: CPV codes or prefixes. 72 or 72000000 selects all IT services, 45 all construction. With keywords, a notice must match both.
  • stage: all (default), planning, tender (open opportunities and their changes), award, or contract (contract changes and terminations).
  • portal: both (default), fts (Find a Tender) or cf (Contracts Finder).
  • dateFrom, dateTo: YYYY-MM-DD or YYYY-MM-DDTHH:MM:SS, UK time unless it ends in Z or an offset; also today and yesterday. Find a Tender filters by when a notice was last updated, Contracts Finder by when it was published. Default: the last 30 days. publishedWithinDays sets the window as a number of days instead.
  • maxItems: stop after this many notices, newest first. Default 100; 0 returns every match in the window.
  • dedupeByOcid: on by default: one row per procurement (its newest matching notice). Off: a tender and its award are both returned.
  • includeRawOcds: add the full OCDS release as rawOcds, with personal data removed (see below).

The field names are the ones other UK tender Actors on the Store use (keywords, cpvCodes, dateFrom, dateTo, stage, portal, maxItems, dedupeByOcid, includeRawOcds), and keyword, stages, updatedFrom, updatedTo, publishedFrom, publishedTo, publishedWithinDays and maxResults are read too, so an existing input usually runs here unchanged.

Output

One row per notice. A real row from a run on 2026-10-05 (

{"keywords": "soapbox", "dateFrom": "2026-10-01", "dateTo": "2026-10-01"}
), description shortened:

{
"ocid": "ocds-h6vhtk-077f1b",
"noticeId": "093054-2026",
"portal": "fts",
"stage": "tender",
"releaseTags": ["tender"],
"title": "Provision and Delivery of an Annual Town Centre Soapbox Racing Event 2027-2029",
"description": "Kettering Town Council invites tenders from suitably capable event operators to plan, promote, manage and deliver an annual public soapbox racing event in Kette ...",
"status": "active",
"buyerName": "Kettering Town Council",
"buyerId": "GB-PPON-PCVT-2884-LDPW",
"buyerStreetAddress": "10 Headlands",
"buyerLocality": "Kettering",
"buyerRegion": "UKF25",
"buyerPostalCode": "NN15 7HP",
"buyerCountry": "United Kingdom",
"cpvCodes": ["79952000"],
"mainCpvCode": "79952000",
"mainCpvDescription": "Event services",
"valueAmount": 160000.0,
"valueCurrency": "GBP",
"valueAmountGross": 192000.0,
"valueMinAmount": null,
"procurementMethod": "open",
"procurementMethodDetails": "Below threshold - open competition",
"mainProcurementCategory": "services",
"aboveThreshold": false,
"suitableForSme": null,
"suitableForVcse": null,
"deliveryRegions": ["UKC", "UKD", "UKE", "UKF", "UKG", "UKH", "UKI", "UKJ", "UKK"],
"publishedDate": "2026-10-01T18:10:45+01:00",
"deadline": "2026-10-23T12:00:00+01:00",
"expressionOfInterestDeadline": null,
"enquiryDeadline": "2026-10-09T12:00:00+01:00",
"contractStartDate": "2026-12-14T00:00:00+00:00",
"contractEndDate": "2029-09-30T23:59:59+01:00",
"awardDate": null,
"awardValueAmount": null,
"awardValueCurrency": null,
"awardCount": 0,
"supplierNames": [],
"contractValueAmount": null,
"contractValueCurrency": null,
"contractSignedDate": null,
"noticeUrl": "https://www.find-tender.service.gov.uk/Notice/093054-2026",
"sourceUrl": "https://www.find-tender.service.gov.uk/api/1.0/ocdsReleasePackages/093054-2026",
"releaseId": "093054-2026"
}
  • Dates are UK time with their offset, as the portals publish them.
  • valueAmount is the notice's own value, or the sum of its lots' values when it has none of its own. valueMinAmount is Contracts Finder's lower bound when it gives a range. A missing value is null, never estimated.
  • deadline is the tender submission deadline. Many Procurement Act notices on Find a Tender set expressionOfInterestDeadline instead (the deadline to ask to take part), so check both.
  • awardValueAmount adds up the award values when they are all in one currency; supplierNames lists every supplier awarded.
  • contractValueAmount and contractSignedDate come from signed contracts. Find a Tender's contract details notices put the value there, not on the award.
  • contractStartDate and contractEndDate are the notice's own contract period, else the earliest start and latest end over its awards and lots.
  • noticeUrl is the official notice page; sourceUrl is the OCDS record it was read from.

No personal data

Notices carry the buyer's contact person: name, e-mail and phone. This Actor never returns them. The OCDS contactPoint is dropped, and in every text it copies, e-mail addresses become [email removed] and phone numbers [phone removed]. rawOcds has the same removal, and also drops suppliers' street addresses and postcodes, since a sole trader's may be a home. Contact the buyer through the official notice page in noticeUrl.

Price

Pay per event: $8.00 per 1,000 notices returned, nothing per run. Notices filtered out by your keywords, CPV codes or stage are not billed.

RunNoticesCost
{"keywords": "software", "maxItems": 20}20$0.16
Default: newest 100 of the last 30 days100$0.80
Every tender-stage notice of one weekday, both portals (2026-10-01)119$0.95

Set Maximum cost per run to cap a run; it stops there and keeps what it returned.

Speed and limits

  • Find a Tender publishes about 450 notices on a weekday and Contracts Finder about 200 (2026-10-01). A keyword search reads every notice in the window, 100 per request, and keeps the matches. Measured on 2026-10-05: 1.5 to 6.5 seconds per 100 notices read, so about 15 seconds for 4 days, 40 seconds to 3 minutes for a week, 3 to 15 minutes for 30 days. A year can pass the default one-hour run timeout: raise it, or split the year.
  • A capped run stops as soon as it has maxItems notices.
  • If a portal is down or keeps refusing, the run returns what the other portal gave and says which one failed in its status message. It fails only if neither answered.
  • Coverage is what the two portals publish. Scotland (Public Contracts Scotland), Wales (Sell2Wales) and Northern Ireland have portals of their own; most of their above-threshold notices also appear on Find a Tender.

What it will not do

  • No contact names, e-mail addresses or phone numbers, ever.
  • No tender documents: they sit on each buyer's own e-tendering system, often behind a supplier login. Follow noticeUrl.
  • No scraping of buyers' portals. The two official APIs only.

Not affiliated with the Cabinet Office or Crown Commercial Service. The data is published under the Open Government Licence v3.0; credit "Find a Tender" and "Contracts Finder" where you publish it.

Changelog

  • 0.1 (2026-10-05): first release.