1. Overview

This dataset provides contract-level records of public contracts awarded through Contracts Finder, the UK government’s portal for public sector procurement opportunities and awards, enriched with the project’s classification of who won each contract. It was produced by the UK Third and Civil Society Sector Database project, which collects, processes, and links public administrative data on civil society organisations throughout the UK.

Unlike the project’s payments dataset, this file covers contracts awarded to all suppliers — private companies, public bodies and individuals as well as civil society organisations. Civil society suppliers (registered charities, community interest companies, co-operatives and mutuals, and other nonprofit companies) are identified by matching the supplier name to the TCSS Organisation Register; where a match is found the record carries the organisation’s uid. Retaining the non-civil-society awards is what makes it possible to measure civil society’s share of the public contract market and to test the reliability of the buyer’s own voluntary-sector flags.

The dataset contains 402,782 awarded contract notices from 4,687 public buyers, naming 107,354 distinct suppliers. 17,332 awards (4.3%) went to 4,878 register-confirmed civil society organisations. Coverage is effectively continuous from 2015, when the current version of Contracts Finder was launched, to early 2026.

402,782Awarded Contracts
107,354Suppliers
4,687Buyers
17,332Awards to CSOs

Related dataset. This guide covers the Contracts Finder dataset (contractsfinder-enriched-refined.csv): one row per awarded contract notice, all suppliers. The project also publishes a payments dataset (cso-procurement-dataset-refined.csv): one row per payment (or Contracts Finder award) made to a register-confirmed civil society organisation, drawn from central government transparency spending data, NHS payment records and Contracts Finder. Use this dataset to study the contract market — what was tendered, who won it, what it was for, and civil society’s share; use the payments dataset to measure money actually paid to civil society organisations over time. The payments dataset has its own guide: Procurement Payments — A Guide to the Dataset.

2. What is Contracts Finder?

Contracts Finder is the UK government’s free online service for publishing public sector contract opportunities and awards in England (and some UK-wide and devolved-administration notices). Since February 2015, under the Public Contracts Regulations 2015, public bodies have been required to publish on Contracts Finder any opportunity above a low-value threshold — currently £12,000 including VAT for central government and £30,000 for the wider public sector (£10,000 and £25,000 excluding VAT before 2022) — together with the subsequent award notice giving the winning supplier, the awarded value and the contract dates. A small number of older awards were back-published “for transparency purposes” when the current portal was launched and carry award dates before 2015.

How the data were collected

Awarded contract notices are retrieved from the Contracts Finder API by the project’s own Contracts Finder collector, which pages through the published notices and stores each award with its full metadata. Every record in this dataset has noticeType = Contract and noticeStatus = Awarded; opportunities that had not yet been awarded at collection time are not included. 20.5% of records (82,618) were added by a later “gap-fill” collection pass (is_gap = TRUE) that retrieved notices missed by the initial run.

How the data were enriched

Two kinds of enrichment are added to the raw notices (see Appendix A1). First, the buyer is classified into a funder type (UK Government, Local Government, NHS, and so on) using the same classification cascade as the payments dataset. Second, the supplier name is normalised and matched to the TCSS Organisation Register; where a civil society organisation is found the record receives its uid and a supplier_type (Charity, CIC, Co-operative/Mutual or Other CSO). Suppliers that do not match the register are labelled Non-CSO, and awards naming several suppliers at once, or carrying an unusable supplier string, are labelled Excluded and not matched.

3. Dataset Contents

The dataset is supplied as a single CSV file, contractsfinder-enriched-refined.csv, containing 402,782 records across 52 fields. Each row is a single awarded contract notice. The fields are organised into the groups below. Field names in lower camel case (e.g., awardedValue) come directly from the Contracts Finder API; fields in snake case (e.g., supplier_type) are added by the project.

Notice & Contract Details

FieldDescriptionTypeCoverage
idContracts Finder internal notice identifier (unique in this dataset)Text100%
noticeIdentifierContracts Finder notice reference number, as shown on the portal. A small number of notices share a reference (1,703 rows); use id as the unique keyText>99.9%
parentIdIdentifier of the parent notice (for call-offs under a framework or related notices)Text10.9%
isSubNoticeWhether the record is a sub-notice of a parent notice (True/False)Boolean100%
noticeTypeType of notice — always Contract in this datasetText100%
noticeStatusStatus of the notice — always Awarded in this datasetText100%
deptPublishing department/buyer label from the source portalText100%
organisationNameBuyer organisation name as published on the notice (not standardised; see funder_name)Text100%
titleContract titleText>99.9%
descriptionContract descriptionText>99.9%
sectorSector tag, where provided by the buyerText8.2%
cpvDescriptionPrimary Common Procurement Vocabulary (CPV) category descriptionText100%
cpvDescriptionExpandedExpanded CPV category description(s)Text100%
cpvCodesCPV code(s) for the contractText100%
cpvCodesExtendedExtended CPV code listText100%

Buyer (Funder)

FieldDescriptionTypeCoverage
funder_nameCanonical (standardised, uppercase) buyer name assigned by the project; consistent with the payments datasetText99.9%
funder_name_altAlternative buyer name, where applicable — typically the parent central government department of an agency (e.g., DVSA mapped to DFTRANSPORT)Text9.3%
funder_idUnique buyer identifier (e.g., F01726); consistent with the payments datasetText99.9%
funder_typeBuyer classification: UK Government, Local Government, NHS, Education Institution, CSO, Police, Fire and Rescue, Private Sector, Other, or Junk/Invalid (see Appendix A2)Text99.9%
funder_type_altClassification of the alternative buyer nameText14.8%
funder_type_detailA more granular buyer classification, refining funder_typeText99.9%

Supplier & Civil-Society Classification

FieldDescriptionTypeCoverage
awardedSupplierSupplier name(s) as recorded on the award notice; several names separated by commas where a notice records more than one winnerText99.8%
normalized_supplierNormalised supplier name used for register matching (uppercased, punctuation removed, whitespace collapsed)Text99.8%
supplier_idInternal supplier identifier (e.g., S017036); consistent with the payments datasetText99.7%
supplier_typeSupplier classification: Charity, CIC, Co-operative/Mutual, Other CSO, Non-CSO (did not match the register), or Excluded (multi-supplier or unusable supplier string, not matched)Text99.7%
supplier_type_detailA more granular supplier classification, refining supplier_type (e.g., Private Sector, Education, NHS, multi_supplier)Text99.6%
uidTCSS Organisation Register identifier; present only where the supplier matched a register entry, i.e. is a confirmed civil society organisation. This is the recommended indicator of a civil society awardText4.3%
organisation_nameMatched organisation name from the registerText3.8%
is_multi_supplierWhether the award named more than one supplier (TRUE/FALSE)Boolean100%

Values & Dates

FieldDescriptionTypeCoverage
awardedValueAwarded contract value (£) as entered by the buyer. Zero for 16,058 records (4.0%); see Section 6 for outliersNumeric100%
valueLowLower bound of the estimated contract value (£)Numeric100%
valueHighUpper bound of the estimated contract value (£)Numeric100%
publishedDateDate and time the notice was published (ISO 8601, e.g., 2019-03-01T00:00:00Z)Date-time100%
approachMarketDateDate the buyer approached the market, where recordedDate-time0.6%
deadlineDateSubmission deadline dateDate-time>99.9%
awardedDateDate the contract was awarded — the recommended date for time-series analysisDate-time>99.9%
startContract start dateDate-time>99.9%
endContract end dateDate-time>99.9%
lastNotifableUpdateDate of the last notifiable update to the noticeDate-time100%

Voluntary-Sector & SME Flags

FieldDescriptionTypeCoverage
isSuitableForVcoBuyer flag — the contract was advertised as suitable for voluntary and community organisations (True/False)Boolean100%
awardedToVcseBuyer flag — the contract was recorded as awarded to a voluntary, community or social enterprise (True/False)Boolean>99.9%
isSuitableForSmeBuyer flag — the contract was advertised as suitable for small and medium-sized enterprises (True/False)Boolean100%
awardedToSmeBuyer flag — the contract was recorded as awarded to an SME (True/False)Boolean>99.9%

Note: The four flags above are self-reported by the buyer and are not validated against any register. They are an unreliable guide to which contracts actually went to civil society organisations: across the whole dataset only 11% of contracts flagged “suitable for” the voluntary sector, and 33% of those flagged “awarded to” it, went to a register-confirmed civil society organisation — and the “awarded to” flag captures only 18% of the awards that did go to one. The register-matched uid and supplier_type fields provide the validated classification; see Section 4 for the full comparison.

Geography

FieldDescriptionTypeCoverage
postcodePostcode entered on the notice (usually the contract delivery or buyer location, not the supplier’s registered address)Text32.5%
coordinatesLatitude, longitude pair associated with the notice; 0,0 (no location) for 69.3% of recordsText100%
regionRegion code(s) for the contract; may list several regions, or Any regionText87.6%
regionTextRegion name(s) corresponding to regionText87.6%

Linkage Fields

FieldDescriptionTypeCoverage
is_gapIndicates the record was retrieved by the gap-fill collection pass (TRUE/FALSE)Boolean100%
payment_yearYear field carried over for cross-dataset linkage (see note)Numeric>99.9%
payment_dateDate field carried over for cross-dataset linkage (see note)Text>99.9%
total_value_payments_to_orgTotal value of payments to the matched supplier across the payments dataset (£); populated for all rows but meaningful only for register-matched suppliersNumeric100%
total_number_payments_to_orgTotal number of payments to the matched supplier across the payments datasetNumeric100%

Note: For contract-level analysis, use the contract dates — awardedDate, publishedDate, start and end. The payment_year and payment_date fields are derived from awardedDate during the linkage process to align with the payments dataset and should not be treated as additional information; a handful of records carry implausible values (e.g., 24, 1898, 2108) inherited from the source award date. Records can be linked to the payments dataset and the TCSS Organisation Register using supplier_id and (for matched civil society organisations) uid.

4. Coverage & Completeness

Core Field Coverage

The contract fields from the portal — identifiers, title, description, CPV codes, values, dates and flags — are present in every record. The only exceptions are 74 records with no awardedDate and a few with no supplier name. The project’s buyer classification is missing for a small number of records whose buyer name could not be resolved (funder_id for 583, 0.1%; funder_type for 390), and supplier_type for 1,345 records. The uid is present only for the 4.3% of awards won by a register-confirmed civil society organisation; geographic fields are the least complete.

id
100.0%
awardedValue
100.0%
funder_id
99.9%
supplier_type
99.7%
regionText
87.6%
postcode
32.5%
uid (CSO awards only)
4.3%

Who Buys: Buyer Type Distribution

Central government departments and agencies (36% of awards) and local authorities (35%) between them publish the large majority of notices. The picture for awards to civil society organisations is different: local government is the largest buyer from civil society (49% of CSO awards), followed by UK Government (30%) and the NHS (9%).

Buyer Type All awards Share Awards to CSOs Share of CSO awards
UK Government 146,614 36.4% 5,146 29.7%
Local Government 142,345 35.3% 8,483 48.9%
NHS 37,148 9.2% 1,547 8.9%
Education Institution 31,526 7.8% 803 4.6%
CSO 16,597 4.1% 383 2.2%
Police, Fire and Rescue 10,317 2.6% 337 1.9%
Private Sector 9,005 2.2% 279 1.6%
Other 6,821 1.7% 205 1.2%
Junk/Invalid 2,019 0.5% 146 0.8%
(not classified) 390 0.1% 3 <0.1%

Who Wins: Supplier Type Distribution

Most awards go to suppliers that do not match the TCSS Organisation Register (Non-CSO) — overwhelmingly private companies, with some public bodies and universities. 10,076 awards (2.5%) are Excluded from matching because the notice names several suppliers at once (9,699) or carries an unusable supplier string (386). Among civil society winners, charities dominate.

Supplier Type Awards Share Distinct suppliers
Non-CSO 374,029 92.9% 92,894
Charity 11,348 2.8% 3,185
Excluded 10,076 2.5% 9,708
Other CSO 3,417 0.8% 883
CIC 1,458 0.4% 596
(not classified) 1,345 0.3% —
Co-operative/Mutual 1,109 0.3% 227

Note: From the August 2026 release the supplier_type label and the uid match are consistent by construction (Spine-only rule): every row typed Charity, CIC, Co-operative/Mutual or Other CSO carries a uid, and every row with a uid carries one of those types. Counts in this guide use the uid. Releases up to and including June 2026 had 1,546 CSO-typed rows without a uid and 166 the reverse.

Which Registers the Civil Society Winners Come From

Among the 17,332 awards to register-confirmed civil society organisations, the uid prefix shows the source register. Registered charities in England and Wales account for 64% of CSO awards; nonprofit companies registered only at Companies House (community interest companies, companies limited by guarantee) for 28%.

Prefix Source Register Awards to CSOs Distinct organisations Share
GB-CHC Charity Commission for England & Wales 11,006 3,100 63.5%
GB-COH Companies House 4,863 1,471 28.1%
GB-MPR Mutuals Public Register (FCA) 703 199 4.1%
GB-COOP Co-operatives UK 406 28 2.3%
GB-SC Office of the Scottish Charity Regulator 309 69 1.8%
GB-NIC Charity Commission for Northern Ireland 45 11 0.3%

Year-by-Year Award Counts

Award counts by awardedDate year. Coverage is effectively continuous from 2015, when the current Contracts Finder service launched and publication became mandatory, to early 2026 (collection date). The 1,633 awards dated before 2015 pre-date the current service (they were migrated from its predecessor or back-published for transparency) and should not be read as full coverage of those years; 37 records carry award dates after 2026 (source data errors), 145 fall outside 2010–2026 altogether, and 74 have no award date.

Award year All awards Awards to CSOs CSO share
2010 31 2 6.5%
2011 84 6 7.1%
2012 105 1 1.0%
2013 207 13 6.3%
2014 1,098 61 5.6%
2015 14,541 672 4.6%
2016 22,007 950 4.3%
2017 25,271 1,188 4.7%
2018 28,549 1,238 4.3%
2019 32,459 1,343 4.1%
2020 33,974 1,324 3.9%
2021 46,550 2,032 4.4%
2022 52,448 2,415 4.6%
2023 55,407 2,688 4.9%
2024 52,432 2,163 4.1%
2025 36,674 1,203 3.3%
2026 725 23 3.2%

Buyer Flags versus Register Match

Each notice carries four buyer-entered flags. The table compares them with the register match: how many flagged contracts actually went to a register-confirmed civil society organisation (precision), and what share of all CSO awards each flag captures (recall). The voluntary-sector flags are poor on both counts — the “suitable for VCO” flag is mostly attached to contracts won by other suppliers, and the “awarded to VCSE” flag is set on only 9,292 notices and misses most awards that did go to civil society.

Flag Awards flagged Share of all awards …of which register-matched CSO CSO share among flagged Share of all CSO awards captured
isSuitableForVco = True 79,008 19.6% 8,540 10.8% 49.3%
awardedToVcse = True 9,292 2.3% 3,071 33.0% 17.7%
isSuitableForSme = True 270,011 67.0% 12,821 4.7% 74.0%
awardedToSme = True 136,950 34.0% 6,479 4.7% 37.4%

What Civil Society Organisations Are Contracted For

The primary CPV category gives a broad-brush view of the services procured. Health and social work and education and training services together account for the largest share of awards to civil society organisations.

CPV category (primary) Awards to CSOs Share of CSO awards
Health and social work services 2,814 16.2%
Education and training services 2,036 11.7%
Research and development services and related consultancy services 586 3.4%
Health services 505 2.9%
Other community, social and personal services 445 2.6%
Social work and related services 330 1.9%
Health and social work services and Other community, social and personal services 239 1.4%
Research services 231 1.3%
Business services: law, marketing, consulting, recruitment, printing and security 209 1.2%
Software package and information systems 191 1.1%

Largest Buyers from Civil Society

The buyers awarding the most contracts to register-confirmed civil society organisations, using the standardised funder_name.

Buyer (funder_name) Buyer Awards to CSOs Distinct CSOs
MOJUST Ministry of Justice 829 203
NHS ENGLAND NHS England 662 380
DEFRA Department for Environment, Food & Rural Affairs 541 190
LEEDS CITY COUNCIL Leeds City Council 449 188
DFEDUCATION Department for Education 348 161
BRISTOL CITY COUNCIL Bristol City Council 341 139
UK SHARED BUSINESS SERVICES LIMITED UK Shared Business Services 275 126
DARLINGTON BOROUGH COUNCIL Darlington Borough Council 263 82
UNIVERSITY OF THE WEST OF ENGLAND University of the West of England 227 60
MODEF Ministry of Defence 223 119
DFTRANSPORT Department for Transport 186 59
DOHEALTH Department of Health & Social Care 186 94
HAMPSHIRE COUNTY COUNCIL Hampshire County Council 160 85
UNIVERSITY OF NEWCASTLE University of Newcastle 152 30
HEE Health Education England 147 117

Contract Values

Awarded values are entered by buyers and are highly skewed; a few framework agreements carry headline values in the tens of billions of pounds, and 4.0% of awards record a value of zero. Medians are therefore more informative than totals. The total awarded to civil society organisations is £24.5 billion, of which 2 awards valued at £1 billion or more contribute a large share; excluding those, the total is £22.2 billion.

25th percentile Median 75th percentile 90th percentile Total (£bn)
All awards £31,260 £80,000 £299,251 £1,559,203 2,819
Awards to CSOs £36,348 £91,503 £351,313 £1,500,000 24.5

Geography

Geographic fields describe the contract (usually where it is delivered or the buyer’s location), not the supplier. 12.4% of records have no region, 17.9% are tagged Any region and 20.3% list more than one region; a postcode is present for 32.5%. For supplier location, link to the TCSS Organisation Register on uid (see Appendix A4).

regionText Awards Share
(more than one region listed) 81,639 20.3%
Any region 71,902 17.9%
(missing) 50,056 12.4%
London 29,388 7.3%
Yorkshire and The Humber 28,384 7.0%
South East 25,891 6.4%
South West 25,214 6.3%
North East 17,880 4.4%
North West 17,761 4.4%
West Midlands 17,249 4.3%
East of England 16,225 4.0%
East Midlands 16,123 4.0%
Wales 2,444 0.6%
Scotland 2,205 0.5%
Northern Ireland 195 <0.1%

5. What Can You Learn?

Because the dataset retains every awarded notice, not only those won by civil society, it supports questions about civil society’s place in the public contract market as a whole.

Research Questions

  • Market share — What share of public contracts, by number and value, is awarded to civil society organisations, and how does this vary by buyer type, service category (CPV) and over time?
  • Who commissions civil society — Which departments, councils and NHS bodies award the most contracts to charities, CICs and co-operatives? Are there buyers that never do?
  • What is commissioned — Using the CPV codes, titles and descriptions, what kinds of services are civil society organisations contracted to deliver, and how does this differ from the services won by private companies?
  • Tendering practice — Do contracts flagged as suitable for the voluntary sector or for SMEs actually go to those suppliers? How long do buyers allow between publication and deadline, and does this differ for contracts civil society wins?
  • Text analysis — The title and description fields support classification of contracts by policy area, beneficiary group or delivery model using text-mining or large-language-model methods.
  • Cross-dataset linkage — By linking on uid to the TCSS Organisation Register and financial datasets, researchers can compare contract winners with the wider civil society population in size, age, location and activity, and relate contract income to organisations’ accounts.

Example: Testing the Buyer Flags

A simple first analysis is to ask whether the awardedToVcse flag can be trusted. Of the 9,292 awards flagged as won by a voluntary, community or social enterprise, 33% match a register-confirmed civil society organisation; conversely, of the 17,332 awards that did go to a register-confirmed organisation, only 18% carry the flag. Researchers relying on the portal’s own flags would therefore both over-count awards to some suppliers and miss the great majority of genuine civil society awards. Section 4 gives the full comparison for all four flags.

Tip: This dataset can be linked to the TCSS Organisation Register using the uid field, enabling enrichment with organisation characteristics such as location, registration dates, and industrial classification codes. See Appendix A4 for worked examples.

6. Limitations & Caveats

Publication Thresholds and Scope

Contracts Finder captures contracts above the publication thresholds (currently £12,000 for central government and £30,000 for the wider public sector, including VAT) awarded by English and some UK-wide buyers. Smaller contracts, grants, and most procurement by the Scottish, Welsh and Northern Irish public sectors (which use their own portals) are not covered. Compliance with the publication duty is incomplete, so the dataset understates the true number of public contracts.

Awarded Values

The awardedValue is entered by the buyer and is not audited. Values are sometimes the total ceiling of a multi-supplier framework rather than the amount any one supplier will receive (the largest recorded value is £150 billion), sometimes zero or a placeholder, and occasionally in the wrong units. Sum values with care; use medians or trimmed totals, and treat the 16,058 zero-value awards as missing.

Supplier Matching

Supplier names were matched to the TCSS Organisation Register using exact and fuzzy name matching (Jaro-Winkler similarity, threshold ≥ 0.90) followed by alias resolution (see Appendix A3). Some false positives (incorrect matches) and false negatives (missed matches) are possible, particularly for organisations with common or ambiguous names, trading names that differ from the registered name, or awards to consortia. Awards naming several suppliers (24,156 records, is_multi_supplier = TRUE) are not matched, so a civil society organisation that won a place on a multi-supplier framework will not be identified.

Buyer Classification

Buyers are classified using a multi-layer cascade of metadata signals, external lookups, and keyword rules (see Appendix A2). The organisationName field is free text and the same buyer appears under many spellings (e.g., “Ministry of Justice” and “Ministry of Justice.”); use the standardised funder_name/funder_id for grouping. Edge cases may be misclassified, and 0.1% of records have no buyer classification at all.

10.9% of records are sub-notices of a parent notice (call-offs under a framework, lots, or re-published notices); a contract may therefore appear more than once. Use parentId and isSubNotice to identify these, and id as the unique key. From the revised September 2026 release, variation notices are collapsed onto the original award: notices from the same buyer to the same supplier whose buyer reference identifies the same contract are represented by the earliest notice, with awardedValue set to the highest value stated among them (see the Changelog). Variations or republications published under a different reference are not collapsed, so some double counting of contracts and values remains.

Dates Outside the Core Range

Award dates range from 1898 to 2108 because of legacy back-publication and source data errors. For time-series analysis, filter on awardedDate to 2015–2025 and note that 2026 is a partial year.

Geography

The postcode, coordinates and region fields describe the notice, not the supplier, and are incomplete (69.3% of coordinates are 0,0). Do not use them to locate civil society organisations; link to the Organisation Register instead.

What’s NOT in the Data

The dataset does not include:

  • Opportunities that had not been awarded at the time of collection, or notices of other types (pipeline, early engagement)
  • Contracts below the publication thresholds, or procurement published only on Public Contracts Scotland, Sell2Wales or eTendersNI
  • Actual payments made under each contract (see the payments dataset)
  • Bidder lists, unsuccessful tenders or award criteria
  • Supplier characteristics beyond the register match (link to the Organisation Register for these)

7. Citation & Licence

Licence: This dataset is licensed under the Creative Commons Attribution 4.0 International License (CC BY 4.0). You are free to share, adapt, and build upon this data for any purpose, provided you give appropriate credit. The underlying notices are published by HM Government on Contracts Finder under the Open Government Licence v3.0.

Suggested Citation

McDonnell, D. et al. (2026). TCSS Contracts Finder Records. UK Third and Civil Society Sector Database. Available at: https://uk-third-sector-database.github.io/data/. Licensed under CC BY 4.0.

If you would like to learn more about this dataset and how it can be applied to your project or research programme, please contact research@brawdata.com.

8. Changelog

Version Date Changes
1.3 September 2026 Revised September 2026 data release (402,782 notices, 17,332 awards to 4,878 register-confirmed civil society organisations). Contract variations are collapsed onto the original award (owner ruling D86). Buyers often publish a variation to an awarded contract as a further award notice, and the value on such a notice sometimes records the increment and sometimes restates the whole contract value, so one contract could previously be counted, and its value summed, several times. Notices from the same buyer to the same supplier whose buyer reference identifies the same contract, once variation wording, punctuation and leading zeros are disregarded, now form one contract family; each family is represented by its earliest notice, with awardedValue set to the highest value stated in the family, and the other notices are removed. The dataset falls from 406,113 to 402,782 notices. Republications under different references are not collapsed, because they cannot be distinguished from separate contracts with the same supplier. Two suppliers are also reclassified as Non-CSO by owner rulings: GATWICK AIRPORT LTD, which had acquired the register identity of the charity Gatwick Travel Care (GB-CHC-298127) when a supplier-name de-duplication step merged the two names (ruling D85); and Restore plc, a records-management company, which had acquired the register identity of The Restore Trust (GB-COH-07133624) because name cleaning removes the legal-form word “PLC” before matching (ruling D87). All figures and tables re-derived. supplier_id values are re-minted each release, and those of non-civil-society suppliers are renumbered in this release; use uid to link across releases.
1.2 September 2026 September 2026 data release (406,113 notices, 17,529 awards to 4,879 register-confirmed civil society organisations). Rebuilt on run 6 of the project’s refined supplier lookup: generic-name, census-match and legal-form safeguards for name-only register matches (owner rulings D77 to D81, the last holding a match for review when the supplier name states a company form that the register record does not share) and rejection of matches inherited from register records removed before the first award. All figures and tables re-derived. supplier_id values are re-minted each release; use uid to link across releases.
1.1 August 2026 August 2026 data release (406,113 notices, unchanged). Supplier classification now follows the Spine-only rule: supplier_type and uid are consistent on every row (1,546 CSO-typed rows without a uid demoted to Non-CSO; 13 charities recorded under compound register identifiers, e.g. British Red Cross, RNIB, Sense, NatCen, now classified Charity); 19,591 awards to 5,222 register-confirmed organisations. Supplier name matching also recovered notices whose supplier names contain apostrophes. Coverage tables re-derived. supplier_id values are re-minted each release; use uid to link across releases.
1.0 August 2026 First standalone guide for the Contracts Finder Records dataset (June 2026 data release, 406,113 records). The dataset was previously documented as Section 3B of the combined Procurement Records guide (v1.1, June 2026); this guide adds full coverage tables, the buyer-flag comparison, research uses, limitations and linkage examples.

A1. Pipeline Overview

The dataset is produced in three stages.

Stage Component Purpose
1 Contracts Finder collector (contracts_finder) Retrieves awarded contract notices from the Contracts Finder API, including an initial full collection and a later gap-fill pass (is_gap), and stores each notice with its full metadata.
2 Buyer classification (02-build-funder-lookup.R) Standardises the buyer name to funder_name/funder_id and classifies it into a funder type using the multi-layer cascade described in Appendix A2; shared with the payments dataset.
3 Supplier matching and enrichment (03-build-supplier-lookup.R, 03a–03c alias scripts, 04-assemble-final-datasets.R) Normalises awardedSupplier, flags multi-supplier and unusable strings as Excluded, matches the remainder to the TCSS Organisation Register (exact then fuzzy), applies validated alias merges, assigns supplier_id, supplier_type and uid, and attaches the per-organisation payment totals from the payments dataset.

Note: The civil-society awards in this file (those with a uid) are the same awards that appear in the payments dataset with data_source = Contracts Finder or contractsfinder, where the awardedValue is carried as the payment amount. Analyses that combine the two datasets should use one or the other for Contracts Finder awards, not both.

A2. Buyer Classification

Buyers are classified into nine types (eight substantive types plus a Junk/Invalid catch-all) using the same multi-layer cascade as the payments dataset. Classification is applied independently to funder_name (producing funder_type) and funder_name_alt (producing funder_type_alt). The cascade proceeds in order; the first match wins.

Classification Cascade

Pre-filter: Junk/Invalid Detection

Entries with purely numeric names, hash-like strings, or very short names (fewer than 3 meaningful characters) are flagged as Junk/Invalid and excluded from subsequent cascade layers. In this dataset 0.5% of awards have a Junk/Invalid buyer.

Layer 1: Metadata Signals

Information already present in the source data is used as the first classification signal:

  • Funders from the NHSSpend data source (payments dataset) are classified as NHS
  • Funders from the Central Government data source (payments dataset) are classified as UK Government; Contracts Finder buyers manually refined to a parent department carry that department in funder_name_alt
  • The note field in the funder masterlist may contain signals such as “ministerial” or “non-ministerial”, indicating UK Government

Layer 2: External Lookups

Unclassified funders are matched against two external reference databases:

  • findthatcharity — a comprehensive lookup of UK organisations. The organisationType field is mapped to funder types (e.g., nhs-trust → NHS, local-authority → Local Government). Both exact and fuzzy matching (Jaro-Winkler, threshold ≥ 0.90) are used.
  • TCSS Organisation Register — funders that match the Organisation Register are classified as CSO (a civil society organisation acting as a funder).

Layer 3: Keyword Rules

Remaining unclassified funders are matched using pattern-matching rules applied to the funder name. Rules are applied in priority order; the first match wins:

  1. NHS — names containing “NHS” combined with “TRUST”, “CCG”, “ICB”, etc.
  2. UK Government — known department abbreviations (FCDO, DFID, etc.) and patterns like “BRITISH EMBASSY”, “SCOTTISH GOVERNMENT”
  3. Local Government — names containing “CITY COUNCIL”, “COUNTY COUNCIL”, “BOROUGH COUNCIL”, etc.
  4. Police, Fire and Rescue — names containing “CONSTABULARY”, “POLICE”, “FIRE” + “RESCUE”
  5. Education Institution — names containing “UNIVERSITY”, “COLLEGE”, “ACADEMY TRUST”, school patterns
  6. CSO — names ending in “CIC” or containing “TRUST” or “CHARITY” (after NHS and Academy Trusts have been captured)
  7. Private Sector — commercial companies identified by the external lookups (registered companies that are not civil society organisations)
  8. Other — all remaining unclassified funders

Funder Type Taxonomy

Funder Type Description Examples
UK Government Central government departments, agencies, and arm’s-length bodies DEPARTMENT FOR EDUCATION, MINISTRY OF DEFENCE, DVLA
NHS NHS trusts, clinical commissioning groups, integrated care boards NHS ENGLAND, BARTS HEALTH NHS TRUST, NHS HRAW CCG
Local Government County, district, borough, and unitary councils; combined authorities MANCHESTER CITY COUNCIL, KENT COUNTY COUNCIL
Education Institution Universities, colleges, academy trusts, schools UNIVERSITY OF OXFORD, HARRIS FEDERATION
CSO Civil society organisations acting as funders (grant-makers, intermediaries) THE NATIONAL LOTTERY COMMUNITY FUND
Police, Fire and Rescue Police forces, fire and rescue services METROPOLITAN POLICE, LONDON FIRE BRIGADE
Private Sector Commercial companies appearing as the buyer — typically procurement intermediaries or managed-service providers acting on behalf of public bodies (identified mainly through the external lookups) ATAMIS LTD, EU SUPPLY LIMITED
Other Funders not classifiable into the above categories Various unclassified public bodies
Junk/Invalid Clearly erroneous entries (numeric strings, hash tokens) 3149053, 37300

A3. Supplier Matching & Alias Resolution

The awardedSupplier field contains supplier names as entered by the buyer on the award notice — often inconsistent in spelling, abbreviation, and formatting. The pipeline matches these names to organisations in the TCSS Organisation Register to assign a standardised uid to each supplier.

Matching Process

Matching proceeds in two stages:

  1. Exact matching — supplier names are normalised (uppercased, punctuation removed, whitespace collapsed) and matched exactly against the Organisation Register.
  2. Fuzzy matching — unmatched suppliers are compared to the Register using Jaro-Winkler string similarity. Matches with a similarity score ≥ 0.90 are accepted. This captures variations in spelling, abbreviation (e.g., “LTD” vs “LIMITED”), and minor data entry errors.

Alias Resolution

After initial matching, the pipeline identifies potential aliases — cases where the same organisation appears under different supplier names. This is common when departments record the same supplier differently (e.g., “ST LUKE’S HOSPICE” vs “SAINT LUKES HOSPICE”).

Alias resolution proceeds in three steps:

  1. Candidate generation (Script 03a) — deterministic rules identify supplier name pairs that may refer to the same organisation, based on shared UIDs, similar names, or overlapping funder relationships.
  2. Batch review — candidate pairs are grouped into batches and reviewed using a combination of LLM-assisted classification and manual checks. Each pair is labelled as a confirmed alias or a false positive.
  3. Merge (Scripts 03b–03c) — confirmed aliases are assembled into a validated alias file, and the supplier lookup is updated to consolidate duplicate entries under a single canonical record.

Note: The LLM review step occurs externally between Scripts 03a and 03b. In a fully automated run where reviewed batches already exist, all scripts execute in sequence without manual intervention.

A4. Linking to Other TCSS Datasets

The dataset can be linked to other datasets in the UK Third and Civil Society Sector Database using the uid field (register-matched civil society suppliers) and to the payments dataset using supplier_id or uid.

Available Linkages

Dataset Join Key What It Adds
Procurement Payments uid or supplier_id Payments made to the same civil society organisations by central government and NHS bodies, for comparing contract awards with money actually paid
Organisation Register uid Organisation name, postcode, registration and removal dates, source registers, SIC codes
Charity Financial Records uid Annual income, expenditure, and detailed financial breakdowns for registered charities (GB-CHC, GB-SC, GB-NIC prefixed UIDs)
Nonprofit Financial Records uid Companies House accounts data — balance sheets, profit and loss, employee numbers — for nonprofit companies (GB-COH prefixed UIDs)
CIC Founding Purposes (CIC 36/37 forms) uid Community interest statements, beneficiary descriptions, and activity summaries for Community Interest Companies

Example: Civil Society’s Share of Awards by Buyer Type

import pandas as pd

cf = pd.read_csv("contractsfinder-enriched-refined.csv", low_memory=False)

# A register-confirmed civil society award is one with a uid
cf["is_cso"] = cf["uid"].notna()

# Use the award date, not payment_year, for time series
cf["award_year"] = pd.to_datetime(cf["awardedDate"], utc=True, errors="coerce").dt.year
core = cf[cf["award_year"].between(2015, 2025)]

# Share of awards (by number) won by civil society, per buyer type
share = core.groupby("funder_type")["is_cso"].mean().sort_values(ascending=False)
print((100 * share).round(1))

Example: Linking CSO Awards to the Organisation Register

import pandas as pd

cf = pd.read_csv("contractsfinder-enriched-refined.csv", low_memory=False)
spine = pd.read_csv("TSCS_spine.spine.csv")

cso_awards = cf[cf["uid"].notna()]
merged = cso_awards.merge(
    spine[["uid", "organisationname", "postcode", "dateregistered"]],
    on="uid",
    how="left"
)

# Example: which registered organisations win the most contracts?
print(merged.groupby(["uid", "organisationname"]).size().sort_values(ascending=False).head(10))

Tip: When linking datasets, use a left join from the Contracts Finder data to preserve all award records, even if some organisations are not found in the target dataset. Check for missing values after the join to assess linkage coverage.