UK Council Spending API · Local Government Transparency Code

Council payments, in one schema.

English councils publish every payment over £500 as spreadsheets, each in its own layout. Search them together by council, supplier, date and amount, see totals by supplier, council and month, and trace every line back to the file it came from.

request
curl -s "https://api.olympus.new-odyssey.com/v1/uk-council-spending/transactions?council=$COUNCIL_CODE&supplier_name=$SUPPLIER&date_from=2026-04-01&limit=50" \
  -H "X-API-Key: $OLYMPUS_API_KEY"
200 OK (shape)
{
  "data": [{
    "transaction_id": "ukspend:…",
    "council_code": "…",
    "payment_date": "…",
    "amount": "…",
    "supplier": {
      "name": "…", "normalised_name": "…", "supplier_key": "…",
      "redacted": false, "company_number": "…", "charity_number": null
    },
    "department": "…", "expense_type": "…", "description": "…",
    "file_period": { "start": "…", "end": "…", "outside_period": false },
    "provenance": { "source_url": "…", "source_version": "…", … }
  }],
  "meta": {
    "datasets": [ … ],
    "notices": [{ "code": "as_published", "message": "…" }],
    "pagination": { "limit": 50, "has_more": true, "next_cursor": "…" }
  }
}
Read this first

As published, nothing invented.

Amounts, dates and names are what each council publishes. Councils differ in their threshold (over £500, over £250 or all spend), in whether amounts include VAT and in which date they give. Every response says so in meta.notices, and each file's column mapping is returned with it.

Suppliers are grouped by a normalised name, which is not identity: a supplier is linked to a company only through a Companies House number the council publishes. Redacted payees stay redacted. GET /v1/uk-council-spending/coverage lists the councils, files and months loaded.

Endpoints

Transactions, suppliers, councils, coverage.

Transactions page newest first with a cursor. Supplier and council summaries add totals by month, council and expense type, and the shared identifier blocks for council areas and numbered suppliers.

EndpointWhat it returns
GET/v1/uk-council-spending/transactionsSearch payments
GET/v1/uk-council-spending/suppliersFind suppliers and their totals
GET/v1/uk-council-spending/suppliers/{supplier_key}Supplier summary
GET/v1/uk-council-spending/councils/{council_code}Council summary
GET/v1/uk-council-spending/coverageCouncils served, their files and months
One schema

Every council, the same fields.

Each council's headers are mapped onto the common fields; the mapping used for every file is part of the council summary, so you can check it against the original.

FieldMeaning
council_codeThe paying council, by its ONS GSS code, checked against the ONS names-and-codes lists.
payment_date, amountAs the council publishes them. Amounts are decimal strings in pounds; credits are negative.
supplier.nameThe payee as published.
supplier.normalised_nameA documented grouping form of the name (LIMITED as LTD, & as AND, punctuation removed).
supplier.company_numberOnly when the council's file publishes a Companies House number, validated.
supplier.redactedThe council redacted the payee, usually an individual. No name or number is given.
department, service, expense_type, descriptionThe council's own classification, as published.
file_period, provenanceThe file the line came from, its stated period and when this version was published.
Know before you build

Limits

Published files only

Files are found through catalogue APIs (data.gov.uk and councils' own open data portals), never by reading web pages. A month a council has not published, or published only as PDF, is listed as missing.

No categorisation added

Departments and expense types are the council's own. There is no common spending category, VAT adjustment or reconciliation to the council's accounts.

Not included

Purchase card files, contracts and tenders, grants registers, and councils outside England until they are added to coverage.