Guide · snapshot 2026-10-14 · 1,363 procurements
Finding edtech contract renewals at English schools and academy trusts
School contracts for MIS, IT support, networks, devices, filtering and cloud licences are published as notices on two government sites, but not joined to the school and trust records sellers work from. School Signals does that join, estimates when each contract will be re-procured, and links every row back to the official notice.
Coverage warning. Partial coverage: only notices published on Contracts Finder or Find a Tender are included, and many school purchases are never published. Re-procurement windows are estimates (contract end minus 9 to 3 months), not published dates. Check the official notice before acting.
Where the data comes from
| Source | What it contributes | Licence |
|---|---|---|
| Contracts Finder (2019 onwards) and Find a Tender (2021 onwards), via the Open Contracting Data Registry bulk files | Tenders, early-engagement notices and awards: buyer, title, CPV code, values, supplier, dates, extension options | OGL v3.0 |
| DfE Get Information about Schools (GIAS), two extracts 12 months apart | Open schools, academy trusts, trust membership and join dates; transfers, conversions and closures | OGL v3.0 |
| DfE open academies and academy projects in development | Converter and sponsored academy pipeline | OGL v3.0 |
| DfE Get help buying for schools: ICT | DfE-listed buying options with provider, reference and expiry (snapshot only) | OGL v3.0 |
DfE has said organisations need structured school and trust data for their own systems and otherwise scrape pages or process bulk CSV files; that is why it designed a read API for GIAS (DfE design history, 5 March 2026). GIAS and the contract notices stay free at source. What is sold here is the join, the categorisation and the renewal estimate.
How it is built
- Buyer filter: English schools, academy trusts, diocesan and schools buying organisations, and councils when the notice is clearly about schools. Universities, NHS, FE colleges and devolved-nation bodies are excluded.
- Categories: rules on titles with the main CPV code as fallback, into 13 edtech categories (below). Some rows are misfiled.
- Matching: Companies House number to trust, then school name plus postcode, then trust name, then unique school name. Councils are tied to their area. Unmatched buyers are dropped, not guessed.
- Renewal timing:
contract_endis the published end, or start plus published duration (flagged). Extensions are reported, not added. The re-procurement window is end minus 9 months to end minus 3 months: an estimate. - Organisation-level only: no named staff, no personal emails or phone numbers; supplier names that look like individuals are withheld.
- Checked: on the South East sample, 43 of 43 renewal rows matched the official record, and 90 of 90 checkable trust changes matched DfE's academies list.
The 13 categories
- CCTV, access & visitor management
- Classroom AV & interactive displays
- Cloud, licences & productivity
- Cyber security, filtering & safeguarding tech
- Devices & end-user hardware
- IT managed services & support
- Learning platforms, content & assessment
- MIS & school administration software
- Networks, Wi-Fi & connectivity
- Parent communication, payments & cashless
- Print & MFD
- School websites & digital
- Telephony
Free: search and sample
Find a buyer id and see how much evidence exists before paying:
curl "https://pay.adamhaleworks.workers.dev/api/school-signals/search?q=ACTIVATE%20LEARNING"
Real answer (first result, snapshot 2026-10-14):
{
"id": "trust:15710",
"name": "ACTIVATE LEARNING EDUCATION TRUST",
"kind": "trust",
"region": "South East",
"local_authority": null,
"evidence": {
"published_contracts": 20,
"renewals_next_12_months": 3,
"live_tenders": 0,
"trust_changes": 0
},
"brief_available": true
}
The South East sample (CSV zip) and its renewals report (PDF) show the full table format.
Paid: renewal queries, $0.03
GET /x402/v1/school-renewals returns up to 25 contracts with a named incumbent whose end date falls in your window, soonest first. Parameters: ending_within_months (1-24, default 12), include_recently_ended, category, region, supplier, buyer. If nothing matches you get a 404 and no payment request; the 402 carries X-Result-Count.
GET https://pay.adamhaleworks.workers.dev/x402/v1/school-renewals?ending_within_months=6&category=MIS+%26+school+administration+software
One real row from that query (13 matched at build time):
{
"buyer": {
"id": "trust:17050",
"name": "ESTEEM MULTI-ACADEMY TRUST",
"kind": "trust",
"region": "East Midlands",
"local_authority": null
},
"category": "MIS & school administration software",
"title": "Procurement of Management Information System",
"incumbent": "ARBOR EDUCATION PARTNERS LIMITED",
"published_value_gbp": 99992.85,
"awarded_value_gbp": 99992.85,
"estimated_value_gbp": 99992.85,
"award_date": "2023-10-24",
"contract_start": "2024-01-01",
"contract_end": "2026-12-31",
"contract_end_basis": "published end date",
"months_to_end": 2.4,
"extension": {
"possible": false,
"max_extension_end": null,
"note": null
},
"estimated_reprocurement_window": {
"start": "2026-03-31",
"end": "2026-09-30",
"basis": "estimate: contract end minus 9 to 3 months, not a published date"
},
"procurement_method": "Call-off from a framework agreement",
"frameworks_mentioned": "CCS G-Cloud",
"possible_later_notice": null,
"source": {
"publisher": "Contracts Finder",
"notice_type": "compiled",
"published": "2023-11-23",
"notice_url": "https://www.contractsfinder.service.gov.uk/Notice/25299b4e-8ee9-42bb-84ea-4619a80f3011",
"record_api_url": "https://www.contractsfinder.service.gov.uk/api/rest/2/get_published_notice/json/25299b4e-8ee9-42bb-84ea-4619a80f3011"
}
}
Paid: buyer brief, $0.20
GET /x402/v1/school-buyer-brief?buyer=<id> for one school (school:<URN>), trust (trust:<GIAS UID>) or council (org:<slug>): hierarchy, contracts and incumbents, upcoming renewals with windows, live tenders, trust changes in the last 12 months and source links. A school brief includes its trust's contracts. Ambiguous names get a 409 with candidates; buyers with no published evidence get a 404; neither is charged.
GET https://pay.adamhaleworks.workers.dev/x402/v1/school-buyer-brief?buyer=trust:15710
Summary block of that real brief:
{
"published_contracts": 20,
"with_named_incumbent": 17,
"renewals_next_12_months": 3,
"live_tenders": 0,
"trust_changes": 0,
"scope_note": "Includes contracts let by the trust's schools themselves."
}
Paid: England snapshot, 295 USDC
The whole England build as of 2026-10-14: an Excel workbook and 9 CSVs (renewals, 1,363 contracts, 33 live tenders, 1,123 trust changes, 2,028 trusts, 22,981 schools, incumbents, framework usage, DfE buying options), the data dictionary, methodology, licence, AI disclosure and a SHA-256 manifest. Immutable: no refreshes. Licence: 12 months internal use, up to 3 named users.
School Signals England snapshot (2026-10-14)
295 USDC on Base
File: School-Signals-England-Snapshot-2026-10-14-USDC.zip, 5.2 MB. SHA-256 eb29ec3c98aa120d594c02e2831e00b46f33c81cb6432ce6ea1ef3c0e8008583
Option 1: plain USDC transfer (any wallet)
You get an order page with an order-specific amount (295 USDC plus at most 0.009999 USDC, so the payment identifies your order), valid 24 hours. Send it as one canonical USDC transfer on Base, paste the transaction hash, and the download appears after 10 confirmations.
Option 2: x402 (agents and x402 clients)
GET https://pay.adamhaleworks.workers.dev/x402/v1/school-signals-england-snapshot
Returns HTTP 402 with x402 v2 "exact" terms (295000000 atomic USDC to 0x491Fcf30a5aa0483B3cd8C0041d21801F195B3AF). The official x402 client caps automatic payments at $1 by default; raise it for this purchase, for example x402Client.fromConfig({ …, spendControls: { maxAmountPerPayment: "$296" } }), or use option 1.
Licence: /licence/school-signals-snapshot/. Download links last 48 hours and are re-issued from the order page for 30 days. Payment goes straight to the seller's own wallet. There is no merchant of record, card processor or platform in between, and payments on Base are irreversible.
Attribution and freshness
Contains public sector information licensed under the Open Government Licence v3.0. (OGL v3.0). Snapshot date: 2026-10-14; every answer repeats it. Contract windows are computed against the day you ask. API terms: /terms/.