Tools / UK Public Sector Tenders — Find a Tender API & Contracts Finder
UK Public Sector Tenders — Find a Tender API & Contracts Finder
UK public-sector tenders and contract awards from BOTH official portals — Find a Tender (above threshold) and Contracts Finder (sub threshold) — in one deduplicated feed. Filter by CPV, value, keyword (AND or OR mode), delivery region and open deadline. Flat JSON with buyer email, phone, address, value and deadlines. First 25 records of every run are free. Set watchLabel to turn a search into an alert that only returns notices new since your last run.
Run it
curl -X POST https://fetchsmith.com/api/v1/run/uk-find-a-tender-scraper \
-H "Authorization: Bearer YOUR_KEY" -H "Content-Type: application/json" \
-d '{"maxResults": 15, "stages": ["tender"], "updatedWithinDays": 3}'
Output fields
source sourceName ocid noticeId noticeUrl stage publishedDate language title description status procurementMethod procurementMethodDetails mainProcurementCategory legalBasis cpvCode cpvDescription cpvCodes valueAmount valueCurrency deadlineDate awardPeriodStart contractStartDate contractEndDate buyerName buyerId buyerEmail buyerPhone buyerUrl buyerStreet buyerLocality buyerPostalCode buyerRegion buyerCountry deliveryRegions deliveryLocations lotCount lotTitles suitableForSme suitableForVcse awardStatus awardStatuses awardValueAmount awardValueCurrency awardValueSource awardedSuppliers contractCount contractDateSigned aboveThreshold documentUrls rawOcds
Sample output
{
"aboveThreshold": null,
"awardPeriodStart": "2026-10-13T12:00:00+01:00",
"awardStatus": null,
"awardValueAmount": null,
"awardValueCurrency": null,
"awardValueSource": null,
"awardedSuppliers": [],
"buyerCountry": "United Kingdom",
"buyerEmail": "enquiries@maryhill.org.uk",
"buyerId": "GB-FTS-102767",
"buyerLocality": "Glasgow",
"buyerName": "Maryhill Housing Association",
"buyerPhone": "+44 1419462466",
"buyerPostalCode": "G20 8RG",
"buyerRegion": "UKM",
"buyerStreet": "45 Garrioch Road",
"buyerUrl": "https://www.maryhill.org.uk",
"contractCount": 0,
"contractDateSigned": null,
"contractEndDate": null,
"contractStartDate": null,
"cpvCode": "50720000",
"cpvCodes": [
"50720000",
"44621200",
"44620000",
"44621000",
"42160000",
"44621100",
"44621110",
"44621112",
"42511110",
"42533000"
],
"cpvDescription": "Repair and maintenance services of central heating",
"deadlineDate": "2026-10-12T17:00:00+01:00",
"deliveryLocations": [
"Maryhill \u0026 Ruchill areas of Glasgow"
],
"deliveryRegions": [
"UKM82"
],
"description": "Maryhill Housing Association (MHA) seeks to appoint a qualified and experienced contractor to deliver a programme of:\nGas servicing + reactive repairs\nBoiler Replacements\nASHP serv \u2026",
"documentUrls": [],
"language": "en",
"legalBasis": "32014L0024",
"lotCount": 3,
"lotTitles": [
"Gas Servicing \u0026 Reactive Repairs",
"Boiler Replacements",
"ASHP Installations \u0026 Reactive Repairs and HHR Upgrades"
],
"mainProcurementCategory": "services",
"noticeId": "086108-2026",
"noticeUrl": "https://www.find-tender.service.gov.uk/Notice/086108-2026",
"ocid": "ocds-h6vhtk-06f762",
"procurementMethod": "open",
"procurementMethodDetails": "Open procedure",
"publishedDate": "2026-09-10T16:39:42+01:00",
"source": "fts",
"sourceName": "Find a Tender",
"stage": [
"tender"
],
"status": "active",
"suitableForSme": null,
"suitableForVcse": null,
"title": "Maryhill Housing Association - Heating Maintenance 2026 - 2031",
"valueAmount": 710000,
"valueCurrency": "GBP"
}
Guides
- "16.6% of UK tender notices were vanishing from our own Actor's default output" — Contracts Finder tags an amended tender notice "tenderAmendment", not "tender" — and a client-side filter bug meant this Actor dropped both the amendment AND the still-valid original, for every amended procurement on a default run. Live-measured, reproduced on the unfixed code, and fixed.
- When a dateTo filter silently excludes its own last day — and which government-data APIs actually do this — A bare "dateTo: 2026-08-31" reads like it should include the 31st. On date-only fields it does. On timestamp fields it usually doesn't. We checked five government-data APIs to find out which is which.
- The UK publishes every public contract as OCDS JSON — and the money isn't where you'd look — Find a Tender and Contracts Finder, the UK's two official procurement portals, both have free key-free OCDS APIs. The award value is rarely on the award, one rate-limit error is plain text (not JSON), and the other silently caps every page at 100 rows unless you ask it exactly the right way.
Only publicly accessible pages are read. Respect the source site's terms when using the data.