{
 "$comment": "Where each council publishes its spending over £500 (England) or its equivalent (Scotland, Wales), and how to read it. Kept by hand: the seed set chosen in Part 11, found by searching each council website, its open data portal and data.gov.uk on 2026-09-24. status: usable | partial (current data but a quirk, noted) | blocked (the site blocks automated downloads) | not-published. discover.kind: page (an index page, links matched by linkPattern; also = more index pages; {YEAR}/{PREVYEAR} are calendar years) | api (a CSV export URL; {FROM} is the first day of the window) | ckan (a CKAN hub; search finds the packages) | files (the explicit list below). columns names the file columns when the generic matcher would guess wrong. Councils not listed are auto-discovered from data.gov.uk where they keep it current, and otherwise shown as not yet collected.",
 "checked": "2026-09-24",
 "councils": [
  {
   "code": "E08000025",
   "name": "Birmingham",
   "status": "usable",
   "reason": null,
   "landing": "https://cityobservatory.birmingham.gov.uk/explore/assets/payments-to-suppliers-over-gbp500/",
   "discover": {
    "kind": "api",
    "url": "https://cityobservatory.birmingham.gov.uk/api/explore/v2.1/catalog/datasets/payments-to-suppliers-over-gbp500/exports/csv?delimiter=%2C&where=date%3E%3Ddate'{FROM}'"
   },
   "files": [],
   "period": "rolling",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "date",
    "department",
    "beneficiary",
    "summary",
    "amount",
    "merchant_category",
    "supplier_number"
   ],
   "licence": "Open Government Licence v3.0",
   "notes": "Birmingham City Observatory (OpenDataSoft/Huwise) dataset 'payments-to-suppliers-over-gbp500', ~248k rows covering 2024-07-01 to 2026-07-23 (rolling ~2 years; dataset modified 2026-09-22). Export CSV has UTF-8 BOM; default delimiter is ';' so pass delimiter=%2C (verified). Dates ISO YYYY-MM-DD; amount plain decimal (no £). Human labels: Date, Directorate, Beneficiary, Summary, Amount, Merchant Category, Supplier Number. Curl works (no Cloudflare). Per-month counts: .../records?select=count(*)&group_by=date_format(date,'yyyy-MM'). Separate purchase-card dataset: https://cityobservatory.birmingham.gov.uk/api/explore/v2.1/catalog/datasets/purchase-card-transactions/exports/csv?delimiter=%2C (to 2026-09). Council page https://www.birmingham.gov.uk/info/20011/your_council/952/open_data links here.",
   "columns": {
    "date": "date",
    "service": "department",
    "supplier": "beneficiary",
    "description": "summary",
    "amount": "amount",
    "expenseType": "merchant_category"
   }
  },
  {
   "code": "E08000003",
   "name": "Manchester",
   "status": "blocked",
   "reason": "Manchester's website blocks automated downloads (a bot challenge), so the files can only be read in a browser.",
   "landing": "https://www.manchester.gov.uk/document-downloads-open-data-downloads/document-downloads-currentexpenditure-exceeding-500-download",
   "discover": {
    "kind": "page",
    "url": "https://www.manchester.gov.uk/document-downloads-open-data-downloads/document-downloads-currentexpenditure-exceeding-500-download/expenditure-exceeding-500-download-20262027",
    "linkPattern": "https://www\\.manchester\\.gov\\.uk/__data/assets/(?:file|excel_doc)/\\d+/\\d+/[^\"]+\\.(?:csv|xlsx)"
   },
   "files": [
    {
     "period": "2025-07",
     "url": "https://www.manchester.gov.uk/__data/assets/excel_doc/0038/177878/July-2526-publish-copy.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-08",
     "url": "https://www.manchester.gov.uk/__data/assets/excel_doc/0034/177874/August-2526-publish-copy.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-09",
     "url": "https://www.manchester.gov.uk/__data/assets/excel_doc/0035/177884/September-2526-publish-copy.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-10",
     "url": "https://www.manchester.gov.uk/__data/assets/excel_doc/0034/177883/October-2526-publish-copy.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-11",
     "url": "https://www.manchester.gov.uk/__data/assets/excel_doc/0033/177882/November-2526-publish-copy.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-12",
     "url": "https://www.manchester.gov.uk/__data/assets/excel_doc/0035/177875/December-2526-publish-copy.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-01",
     "url": "https://www.manchester.gov.uk/__data/assets/excel_doc/0037/177877/January-2526-publish-copy.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-02",
     "url": "https://www.manchester.gov.uk/__data/assets/excel_doc/0036/177876/February-2526-publish-copy.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-03",
     "url": "https://www.manchester.gov.uk/__data/assets/excel_doc/0031/177880/March-2526-publish-copy.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-04",
     "url": "https://www.manchester.gov.uk/__data/assets/file/0032/184856/035f2f32411ca8bef60becb004168da6b94f9858.csv",
     "format": "csv"
    },
    {
     "period": "2026-05",
     "url": "https://www.manchester.gov.uk/__data/assets/file/0033/184857/32887a2669a99490ffd8f19a40db17a0f1a0609e.csv",
     "format": "csv"
    },
    {
     "period": "2026-06",
     "url": "https://www.manchester.gov.uk/__data/assets/file/0034/184858/965668c1cb938de1c709e039f807c1c5eadceead.csv",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "Body Name",
    "Service Area",
    "Expenses type",
    "Invoice Payment Date",
    "Transaction Number",
    "Supplier Name",
    "Net Amount"
   ],
   "licence": "not stated on the (browser-viewed) page; OGL is typical for the council's open data catalogue",
   "notes": "File URLs collected via a real Chrome browser (Cloudflare passes there); linkPattern tested against browser-fetched HTML only, NOT curl (curl gets 403 everywhere incl. file URLs). One index page per financial year: current FY 2026/27 page (discover url) and archived FY pages, e.g. https://www.manchester.gov.uk/document-downloads-open-data-downloads/document-downloads-archivedexpenditure-exceeding-500-download/expenditure-exceeding-500-year-20252026 (the old 'current' 2025/26 URL redirects there). Link text 'Expenditure exceeding £500 <Month> <Year>' gives the period. 2025/26 files are XLSX (excel_doc), 2026/27 files CSV. Header verified from June 2026 CSV: CRLF, dates DD/MM/YYYY, amounts quoted with £ sign and thousands commas (e.g. \"£4,635,215.00\"); £ appears to be Windows-1252/Latin-1 encoded, not UTF-8. Oddity: the 'June 2026' CSV contains many rows dated June 2025 alongside June 2026 - check dates. XLSX headers not verified. data.gov.uk package 'expenditure-over-500' (manchester-city-council) only links to these HTML pages."
  },
  {
   "code": "E08000035",
   "name": "Leeds",
   "status": "usable",
   "reason": null,
   "landing": "https://datamillnorth.org/dataset/2gpp0/council-spending",
   "discover": {
    "kind": "page",
    "url": "https://datamillnorth.org/dataset/2gpp0/council-spending",
    "linkPattern": "https://datamillnorth\\.org/download/2gpp0/[a-z0-9]+/[Ss]pending_\\d{4}_\\d{1,2}\\.csv"
   },
   "files": [
    {
     "period": "2025-07",
     "url": "https://datamillnorth.org/download/2gpp0/m0z/Spending_2025_07.csv",
     "format": "csv"
    },
    {
     "period": "2025-08",
     "url": "https://datamillnorth.org/download/2gpp0/fc5/Spending_2025_08.csv",
     "format": "csv"
    },
    {
     "period": "2025-09",
     "url": "https://datamillnorth.org/download/2gpp0/nby/Spending_2025_09.csv",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://datamillnorth.org/download/2gpp0/b0g/spending_2025_10.csv",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://datamillnorth.org/download/2gpp0/gtc/Spending_2025_11.csv",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://datamillnorth.org/download/2gpp0/zjc/Spending_2025_12.csv",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://datamillnorth.org/download/2gpp0/n6f/spending_2026_01.csv",
     "format": "csv"
    },
    {
     "period": "2026-02",
     "url": "https://datamillnorth.org/download/2gpp0/jnm/Spending_2026_02.csv",
     "format": "csv"
    },
    {
     "period": "2026-03",
     "url": "https://datamillnorth.org/download/2gpp0/fcn/spending_2026_03.csv",
     "format": "csv"
    },
    {
     "period": "2026-04",
     "url": "https://datamillnorth.org/download/2gpp0/s40/spending_2026_4.csv",
     "format": "csv"
    },
    {
     "period": "2026-05",
     "url": "https://datamillnorth.org/download/2gpp0/x35/spending_2026_05.csv",
     "format": "csv"
    },
    {
     "period": "2026-06",
     "url": "https://datamillnorth.org/download/2gpp0/qlp/spending_2026_06.csv",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 0,
   "headerRowIndex": 0,
   "header": [
    "Organisation Code",
    "Organisation Label",
    "Effective Date",
    "Organisational Unit",
    "Service Division Label",
    "Category Internal Name",
    "Purpose",
    "Detailed Expenditure Code",
    "Payment Date",
    "Transaction Number",
    "Irrecoverable VAT Amount",
    "Amount",
    "Capital Or Revenue",
    "Beneficiary Name",
    "Procurement Card"
   ],
   "licence": "Open Government Licence v3",
   "notes": "Data Mill North (Leeds City Council). Page is plain HTML, curl works; regex tested against curl-fetched HTML (36 matches, 2023-2026). Leeds publishes ALL transactions (not only >£500; first row of June 2026 is £247) incl. procurement-card rows flagged in 'Procurement Card' Yes/No column - filter Amount>=500 if needed. Period is in the filename (Spending_YYYY_MM.csv; case varies; April 2026 is 'spending_2026_4.csv' with no zero-pad). PDF duplicates also listed (ignore). Dates DD/MM/YYYY, amounts plain decimals. Some characters mis-encoded (e.g. 'Supplies & Services?'). DMN /api/action/package_show returned 404, so scrape the page. Council page: https://www.leeds.gov.uk/performance-and-spending/our-financial-plans/spending-over-%C2%A3500",
   "columns": {
    "date": "Payment Date",
    "service": "Service Division Label",
    "expenseType": "Category Internal Name",
    "description": "Purpose",
    "supplier": "Beneficiary Name",
    "amount": "Amount",
    "id": "Transaction Number"
   },
   "card": {
    "column": "Procurement Card",
    "test": "^y"
   }
  },
  {
   "code": "E08000012",
   "name": "Liverpool",
   "status": "usable",
   "reason": null,
   "landing": "https://liverpool.gov.uk/council/spending-and-performance/transparency-in-local-government/",
   "discover": {
    "kind": "page",
    "url": "https://liverpool.gov.uk/council/spending-and-performance/transparency-in-local-government/",
    "also": [
     "https://liverpool.gov.uk/council/spending-and-performance/transparency-in-local-government-archive/"
    ],
    "linkPattern": "/media/[a-z0-9]+/[^\"]*500[^\"]*\\.(?:xlsx|csv)"
   },
   "files": [
    {
     "period": "2025-07",
     "url": "https://liverpool.gov.uk/media/p25pnqsg/july-over-500.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-08",
     "url": "https://liverpool.gov.uk/media/otjd5s2z/aug-over-500.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-09",
     "url": "https://liverpool.gov.uk/media/2cfj2qlw/september-over-500-report.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-10",
     "url": "https://liverpool.gov.uk/media/huof5oue/over-500-final-report-october-25.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-11",
     "url": "https://liverpool.gov.uk/media/2uhjw5zp/over-500-final-report-november-25.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-12",
     "url": "https://liverpool.gov.uk/media/2fyp4qyz/december-2025-over-500-report.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-01",
     "url": "https://liverpool.gov.uk/media/bszpmapk/january-2026-over-500-report.csv",
     "format": "csv"
    },
    {
     "period": "2026-02",
     "url": "https://liverpool.gov.uk/media/ascozcpw/february-2026-over-500-report.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-03",
     "url": "https://liverpool.gov.uk/media/ptdj4glf/march-2026-over-500-report.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-04",
     "url": "https://liverpool.gov.uk/media/1gti5vvq/over-500-april.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-05",
     "url": "https://liverpool.gov.uk/media/lj0dwrmk/over-500-may-2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-06",
     "url": "https://liverpool.gov.uk/media/wzphqqvf/over-500-june-2026.xlsx",
     "format": "xlsx"
    }
   ],
   "period": "monthly",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "Service Area",
    "Expense Type",
    "Description",
    "SAP Document Number",
    "Posting Date",
    "Vendor",
    "Actual Value"
   ],
   "licence": "not stated",
   "notes": "Links are relative (/media/...) - prefix https://liverpool.gov.uk. Current page holds calendar-year 2026 only; earlier months move to https://liverpool.gov.uk/council/spending-and-performance/transparency-in-local-government-archive/ (scrape both; regex tested on both via curl: 6 and 21 matches). Filenames inconsistent and often lack a year (over-500-april.xlsx = April 2026; july-over-500.xlsx = July 2025) - take period from the anchor's sr-only span text 'Expenditure report <Month> <Year> (XLS)' (July/Aug 2025 labels say just 'July'/'Aug'). Mix of XLSX and CSV (Jan 2026 is CSV though labelled XLS); PDF duplicates alongside. XLSX: single sheet (e.g. 'over 500 June'), header row 0, Posting Date a real date, values numeric. CSV: UTF-8 BOM, dates DD/MM/YYYY, amounts with £ and thousands commas, negatives like '-£561.40'. Files include some rows with old posting dates (e.g. 2020 credits). Redaction wording 'REDACTED PERSONAL DATA'. Liverpool Data Mill North dataset is stale (6 old CSVs) - ignore.",
   "columns": {
    "date": "Posting Date",
    "service": "Service Area",
    "expenseType": "Expense Type",
    "description": "Description",
    "supplier": "Vendor",
    "amount": "Actual Value",
    "id": "SAP Document Number"
   }
  },
  {
   "code": "E06000023",
   "name": "Bristol",
   "status": "usable",
   "reason": null,
   "landing": "https://www.bristol.gov.uk/council/council-spending-and-performance/spending-over-500",
   "discover": {
    "kind": "page",
    "url": "https://www.bristol.gov.uk/council/council-spending-and-performance/spending-over-500",
    "linkPattern": "/files/documents/\\d+-[a-z0-9-]*(?:supplier-spend|over-500)[a-z0-9-]*"
   },
   "files": [
    {
     "period": "2025-09",
     "url": "https://www.bristol.gov.uk/files/documents/10353-supplier-spend-september-2025",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://www.bristol.gov.uk/files/documents/10468-copy-of-supplier-spend-oct-2025v1-1",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://www.bristol.gov.uk/files/documents/10469-copy-of-supplier-spend-nov-2025-v1-1",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://www.bristol.gov.uk/files/documents/10597-supplier-spend-december-2025",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://www.bristol.gov.uk/files/documents/10861-supplier-spend-january-2026",
     "format": "csv"
    },
    {
     "period": "2026-02",
     "url": "https://www.bristol.gov.uk/files/documents/10860-supplier-spend-february-2026",
     "format": "csv"
    },
    {
     "period": "2026-03",
     "url": "https://www.bristol.gov.uk/files/documents/10862-supplier-spend-march-2026",
     "format": "csv"
    },
    {
     "period": "2026-04",
     "url": "https://www.bristol.gov.uk/files/documents/11141-supplier-spend-april-2026",
     "format": "csv"
    },
    {
     "period": "2026-05",
     "url": "https://www.bristol.gov.uk/files/documents/11142-supplier-spend-may-2026",
     "format": "csv"
    },
    {
     "period": "2026-06",
     "url": "https://www.bristol.gov.uk/files/documents/11340-supplier-spend-june-2026",
     "format": "csv"
    },
    {
     "period": "2026-07",
     "url": "https://www.bristol.gov.uk/files/documents/11339-supplier-spend-july-2026",
     "format": "csv"
    },
    {
     "period": "2026-08",
     "url": "https://www.bristol.gov.uk/files/documents/11601-supplier-spend-august-2026",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "Body",
    "Body Name",
    "Name",
    "amount",
    "Pay Date",
    "Transaction Number",
    "Description 1",
    "Description 2",
    "Description 3"
   ],
   "licence": "Open Government Licence",
   "notes": "Relative links (prefix https://www.bristol.gov.uk). Document URLs have no extension; they 303-redirect to the CSV (content-type text/csv, Content-Disposition filename 'Supplier Spend <Month> <Year>.csv'). Period from link text '<Month> <Year>' (slugs inconsistent, e.g. copy-of-supplier-spend-oct-2025v1-1). Regex tested against curl HTML: 80 matches back to 2020. Despite the 'charset=utf-8' header the file is Windows-1252 (£ is byte 0xA3). Amounts with £ and thousands commas, quoted when containing commas; dates DD/MM/YYYY; amounts exclude VAT. Column 'Body Name' actually holds an OS URI and 'Name' is the supplier; trailing empty column possible. opendata.bristol.gov.uk has a 'spend-over-ps500' dataset but its API path did not respond - use the page.",
   "columns": {
    "date": "Pay Date",
    "service": "Description 1",
    "expenseType": "Description 2",
    "description": "Description 3",
    "supplier": "Name",
    "amount": "amount",
    "id": "Transaction Number"
   }
  },
  {
   "code": "E08000039",
   "name": "Sheffield",
   "status": "usable",
   "reason": null,
   "landing": "https://datamillnorth.org/dataset/council-spend-over-250-emd0m",
   "discover": {
    "kind": "page",
    "url": "https://datamillnorth.org/dataset/council-spend-over-250-emd0m",
    "linkPattern": "https://datamillnorth\\.org/download/emd0m/[a-z0-9]+/PUBLISHED%20REPORT%20-%20[A-Za-z]+%20\\d{4}\\.xlsx"
   },
   "files": [
    {
     "period": "2025-09",
     "url": "https://datamillnorth.org/download/emd0m/71e/PUBLISHED%20REPORT%20-%20September%202025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-10",
     "url": "https://datamillnorth.org/download/emd0m/yew/PUBLISHED%20REPORT%20-%20October%202025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-11",
     "url": "https://datamillnorth.org/download/emd0m/ltv/PUBLISHED%20REPORT%20-%20NOVEMBER%202025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-12",
     "url": "https://datamillnorth.org/download/emd0m/54e/PUBLISHED%20REPORT%20-%20December%202025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-01",
     "url": "https://datamillnorth.org/download/emd0m/tl4/PUBLISHED%20REPORT%20-%20January%202026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-02",
     "url": "https://datamillnorth.org/download/emd0m/kgn/PUBLISHED%20REPORT%20-%20February%202026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-03",
     "url": "https://datamillnorth.org/download/emd0m/fbq/PUBLISHED%20REPORT%20-%20March%202026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-04",
     "url": "https://datamillnorth.org/download/emd0m/nn4/PUBLISHED%20REPORT%20-%20April%202026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-05",
     "url": "https://datamillnorth.org/download/emd0m/sde/PUBLISHED%20REPORT%20-%20May%202026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-06",
     "url": "https://datamillnorth.org/download/emd0m/xz2/PUBLISHED%20REPORT%20-%20JUNE%202026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-07",
     "url": "https://datamillnorth.org/download/emd0m/e99/PUBLISHED%20REPORT%20-%20July%202026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-08",
     "url": "https://datamillnorth.org/download/emd0m/qcw/PUBLISHED%20REPORT%20-%20August%202026.xlsx",
     "format": "xlsx"
    }
   ],
   "period": "monthly",
   "threshold": 250,
   "headerRowIndex": 0,
   "header": [
    "Body Name",
    "Body",
    "Directorate",
    "Organisation Code",
    "Org Code Description",
    "Object Code",
    "Object Code Description",
    "Certified Date",
    "Supplier Reference",
    "Value",
    "Supplier",
    "Category",
    "Category Description",
    "Supplier No"
   ],
   "licence": "Open Government Licence v3",
   "notes": "Sheffield publishes spend over £250 (rows below £500 present, e.g. 472.34) - filter Value>=500 if needed. Main file per month: 'PUBLISHED REPORT - <Month> <YYYY>.xlsx' (month case varies: 'NOVEMBER', 'JUNE'). The same page also lists separate 'Credit Card Spend' / 'Barclay Card Spend' / 'PUBLISHED PROCUREMENT CARD SPEND' and 'Precision Pay Spend' files, whose download filenames are sometimes just '<Month> <Year>.xlsx' (e.g. https://datamillnorth.org/download/emd0m/2ly/August%202026.xlsx is the Aug 2026 credit-card file, header Unit Name And Number, Merchant, Merchant Location, MCC, MCC Description, Date Occurred, Month, Date Posted, Settlement Amount) - the regex excludes these. XLSX single sheet 'Sheet1', header row 0; Certified Date a real date; Value numeric; Supplier names have a leading space. Curl works; regex tested on curl HTML (12 matches for Sep 2025-Aug 2026 among others).",
   "columns": {
    "date": "Certified Date",
    "service": "Directorate",
    "expenseType": "Object Code Description",
    "description": "Category Description",
    "supplier": "Supplier",
    "amount": "Value"
   },
   "skipLinks": "(?:Card|Precision)"
  },
  {
   "code": "E10000016",
   "name": "Kent County Council",
   "status": "blocked",
   "reason": "Kent County Council's website blocks automated downloads (a bot challenge), so the files can only be read in a browser.",
   "landing": "https://www.kent.gov.uk/about-the-council/finance-and-budget/spending/invoices-over-250",
   "discover": {
    "kind": "page",
    "url": "https://www.kent.gov.uk/about-the-council/finance-and-budget/spending/invoices-over-250",
    "linkPattern": "/__data/assets/file/\\d{4}/\\d+/Invoices-over-250-(?:in-)?[A-Za-z]+-\\d{4}\\.csv"
   },
   "files": [
    {
     "period": "2026-06",
     "url": "https://www.kent.gov.uk/__data/assets/file/0003/239070/Invoices-over-250-in-June-2026.csv",
     "format": "csv"
    },
    {
     "period": "2026-05",
     "url": "https://www.kent.gov.uk/__data/assets/file/0005/239072/Invoices-over-250-in-May-2026.csv",
     "format": "csv"
    },
    {
     "period": "2026-04",
     "url": "https://www.kent.gov.uk/__data/assets/file/0010/239068/Invoices-over-250-in-April-2026.csv",
     "format": "csv"
    },
    {
     "period": "2026-03",
     "url": "https://www.kent.gov.uk/__data/assets/file/0016/236041/Invoices-over-250-in-March-2026.csv",
     "format": "csv"
    },
    {
     "period": "2026-02",
     "url": "https://www.kent.gov.uk/__data/assets/file/0005/236039/Invoices-over-250-in-February-2026.csv",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://www.kent.gov.uk/__data/assets/file/0019/234235/Invoices-over-250-in-January-2026.csv",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://www.kent.gov.uk/__data/assets/file/0012/231510/Invoices-over-250-in-December-2025.csv",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://www.kent.gov.uk/__data/assets/file/0009/231201/Invoices-over-250-in-November-2025.csv",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://www.kent.gov.uk/__data/assets/file/0006/230478/Invoices-over-250-in-October-2025.csv",
     "format": "csv"
    },
    {
     "period": "2025-09",
     "url": "https://www.kent.gov.uk/__data/assets/file/0020/223184/Invoices-over-250-September-2025.csv",
     "format": "csv"
    },
    {
     "period": "2025-08",
     "url": "https://www.kent.gov.uk/__data/assets/file/0018/223182/Invoices-over-250-August-2025.csv",
     "format": "csv"
    },
    {
     "period": "2025-07",
     "url": "https://www.kent.gov.uk/__data/assets/file/0004/218893/Invoices-over-250-in-July-2025.csv",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 250,
   "headerRowIndex": 1,
   "header": [
    "Body",
    "Reference No",
    "Supplier Name ",
    "Payment Date",
    "Invoice NET",
    "Directorate",
    "Service Code",
    "Service Description",
    "Cost Type Code",
    "Cost Type Description"
   ],
   "licence": "not stated",
   "notes": "Threshold is £250 net of VAT (invoices and credit notes). Row 0 is a title line ('Invoices over £250 June 2026,,,,,,,,,'); header on row 1. 'Supplier Name ' has a trailing space; supplier values may have leading spaces. Payment Date format DD-MM-YYYY (e.g. 02-06-2026). Invoice NET is a plain number (no £). CRLF line endings. The whole site (www.kent.gov.uk incl. /__data/assets/) sits behind a Cloudflare managed challenge: curl gets 403 HTML. Link list and the June 2026 header were read in a real browser (same-origin fetch returned 206). File URLs listed were taken from the live page; only June 2026 was actually fetched. Filenames inconsistent ('-in-' sometimes missing). PDF and XLSM versions also on the page; separate purchase card page at https://www.kent.gov.uk/about-the-council/finance-and-budget/spending/purchase-card-spending. Fetcher would need a browser/challenge-capable client."
  },
  {
   "code": "E10000030",
   "name": "Surrey County Council",
   "status": "usable",
   "reason": null,
   "landing": "https://www.surreyi.gov.uk/dataset/council-spending-e6rgn",
   "discover": {
    "kind": "page",
    "url": "https://www.surreyi.gov.uk/dataset/council-spending-e6rgn",
    "linkPattern": "https://www\\.surreyi\\.gov\\.uk/download/e6rgn/[a-z0-9]+/ERP%20Spend%20Q[1-4]%20\\d{4}-\\d{2,4}(?:%20)?\\.csv"
   },
   "files": [
    {
     "period": "2026-04",
     "url": "https://www.surreyi.gov.uk/download/e6rgn/8wl/ERP%20Spend%20Q1%202026-2027.csv",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://www.surreyi.gov.uk/download/e6rgn/g17/ERP%20Spend%20Q4%202025-2026.csv",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://www.surreyi.gov.uk/download/e6rgn/sdj/ERP%20Spend%20Q3%202025-2026.csv",
     "format": "csv"
    },
    {
     "period": "2025-07",
     "url": "https://www.surreyi.gov.uk/download/e6rgn/hex/ERP%20Spend%20Q2%202025-2026.csv",
     "format": "csv"
    },
    {
     "period": "2025-04",
     "url": "https://www.surreyi.gov.uk/download/e6rgn/tx3/ERP%20Spend%20Q1%202025-2026.csv",
     "format": "csv"
    },
    {
     "period": "2025-01",
     "url": "https://www.surreyi.gov.uk/download/e6rgn/9km/ERP%20Spend%20Q4%202024-2025.csv",
     "format": "csv"
    },
    {
     "period": "2024-10",
     "url": "https://www.surreyi.gov.uk/download/e6rgn/jm7/ERP%20Spend%20Q3%202024-2025.csv",
     "format": "csv"
    }
   ],
   "period": "quarterly",
   "threshold": 250,
   "headerRowIndex": 0,
   "header": [
    "Date spend occurred",
    "Department incurring spend",
    "Beneficiary name",
    "Summary of purpose of spend",
    " Gross Amount ",
    "Merchant category"
   ],
   "licence": "Open Government Licence v3.0",
   "notes": "Surrey-i open data portal; page HTML fetches fine with curl and lists all quarterly CSVs (regex matched 13 'ERP Spend' files 2023-24 onward; older 'SAP Spend Data' files use a different name). Quarters are financial-year quarters: 'Q1 2026-2027' = Apr-Jun 2026; file period given here as first month of the quarter. Encoding varies by file: Q1 2026-27 is Windows-1252 (£ as byte 0xA3) and its header has spaces around ' Gross Amount '; Q1-Q4 2025-26 are UTF-8 with BOM and header 'Gross Amount' without spaces. Amounts formatted like ' £1,048,816.13 ' (quoted, £ sign, thousands commas, padding spaces). Date format DD/MM/YYYY. CRLF. Threshold £250; excludes purchase-card spend (per portal description). Personal data redacted as 'Redacted Personal Data'. Filename quirks: 'Q1 2024-25' short year; 'Q1 2023-2024%20.csv' trailing space.",
   "columns": {
    "date": "Date spend occurred",
    "service": "Department incurring spend",
    "supplier": "Beneficiary name",
    "description": "Summary of purpose of spend",
    "amount": "Gross Amount",
    "expenseType": "Merchant category"
   }
  },
  {
   "code": "E10000014",
   "name": "Hampshire County Council",
   "status": "blocked",
   "reason": "Hampshire County Council's website blocks automated downloads (a bot challenge), so the files can only be read in a browser.",
   "landing": "https://www.hants.gov.uk/aboutthecouncil/informationandstats/opendata/opendatasearch/supplierpayments",
   "discover": {
    "kind": "page",
    "url": "https://www.hants.gov.uk/aboutthecouncil/informationandstats/opendata/opendatasearch/supplierpayments",
    "linkPattern": "https://documents\\.hants\\.gov\\.uk/opendata/\\d{4}-\\d{4}-All-Departments-Output-HCC-Transparency-Reporting-[a-z]+\\d{4}\\.xlsx"
   },
   "files": [
    {
     "period": "2026-06",
     "url": "https://documents.hants.gov.uk/opendata/2026-2027-All-Departments-Output-HCC-Transparency-Reporting-june2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-05",
     "url": "https://documents.hants.gov.uk/opendata/2026-2027-All-Departments-Output-HCC-Transparency-Reporting-may2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-04",
     "url": "https://documents.hants.gov.uk/opendata/2026-2027-All-Departments-Output-HCC-Transparency-Reporting-april2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-03",
     "url": "https://documents.hants.gov.uk/opendata/2025-2026-All-Departments-Output-HCC-Transparency-Reporting-march2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-02",
     "url": "https://documents.hants.gov.uk/opendata/2025-2026-All-Departments-Output-HCC-Transparency-Reporting-february2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-01",
     "url": "https://documents.hants.gov.uk/opendata/2025-2026-All-Departments-Output-HCC-Transparency-Reporting-january2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-12",
     "url": "https://documents.hants.gov.uk/opendata/2025-2026-All-Departments-Output-HCC-Transparency-Reporting-december2025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-11",
     "url": "https://documents.hants.gov.uk/opendata/2025-2026-All-Departments-Output-HCC-Transparency-Reporting-november2025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-10",
     "url": "https://documents.hants.gov.uk/opendata/2025-2026-All-Departments-Output-HCC-Transparency-Reporting-october2025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-09",
     "url": "https://documents.hants.gov.uk/opendata/2025-2026-All-Departments-Output-HCC-Transparency-Reporting-september2025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-08",
     "url": "https://documents.hants.gov.uk/opendata/2025-2026-All-Departments-Output-HCC-Transparency-Reporting-august2025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-07",
     "url": "https://documents.hants.gov.uk/opendata/2025-2026-All-Departments-Output-HCC-Transparency-Reporting-july2025.xlsx",
     "format": "xlsx"
    }
   ],
   "period": "monthly",
   "threshold": 500,
   "headerRowIndex": 2,
   "header": [
    "Authority",
    "Departments",
    "Spending area",
    "Expense type",
    "Posting date",
    "Doc ref",
    "Amount",
    "Cap / Rev",
    "Supplier name (Amended)"
   ],
   "licence": "not stated",
   "notes": "Single sheet 'Data'. Row 0 is a title ('Hampshire County Council - Transparency Reports - June 2026NS'), row 1 'Data extracted: 11/08/2026', header on row 2. Posting date is an Excel serial number (e.g. 46190). Amount plain numeric. Cap / Rev = 'C'/'R'. Redacted suppliers appear as 'Personal Payments' or 'No Supplier Name Quoted'. Published ~2 months in arrears. URL pattern is predictable: {FY}-All-Departments-Output-HCC-Transparency-Reporting-{monthname lowercase}{YYYY}.xlsx, FY = financial year (e.g. 2026-2027 from April 2026). Both www.hants.gov.uk and documents.hants.gov.uk return Cloudflare 403 'Just a moment...' to curl (one HEAD of 12 got 200, the GET then got 403). Link list (July 2025-June 2026 all present) and June 2026 header read in a real browser via same-origin fetch (2.45MB). data.gov.uk packages (supplierpayments, hampshire-county-council-payments-to-suppliers) stopped in 2014."
  },
  {
   "code": "E10000017",
   "name": "Lancashire County Council",
   "status": "not-published",
   "reason": "search tool only: payments available only through a Liberty Create (Netcall) search app that requires a month/year form query; no bulk file downloads listed",
   "landing": "https://www.lancashire.gov.uk/council/transparency/published-information/council-information/check-council-spending/payments-to-suppliers/",
   "discover": {
    "kind": "files"
   },
   "files": [],
   "period": "monthly",
   "threshold": 250,
   "headerRowIndex": 0,
   "header": [],
   "licence": "not stated",
   "notes": "Council states monthly reports of payments to suppliers over £250 (incl. VAT). transparency.lancashire.gov.uk redirects to https://www2.apps.lancashire.gov.uk/w/webpage/transparency, a JS form ('Search payment details', Month/Year required plus optional filters). An old export URL (https://transparency.lancashire.gov.uk/files/transparency_012024_1.csv) now returns the HTML app shell, not CSV. data.gov.uk has no current Lancashire spend package. Would need reverse-engineering of the Liberty Create search/export endpoint."
  },
  {
   "code": "E10000012",
   "name": "Essex County Council",
   "status": "usable",
   "reason": null,
   "landing": "https://www.essex.gov.uk/about-council/spending-and-council-tax/finance-and-spending-breakdowns",
   "discover": {
    "kind": "page",
    "url": "https://www.essex.gov.uk/about-council/spending-and-council-tax/finance-and-spending-breakdowns",
    "linkPattern": "/sites/default/files/\\d{4}-\\d{2}/[^\\\"]*?(?:[Dd]ay(?:%20|_)to(?:%20|_)day(?:%20|_)spending|Published%20data)[^\\\"]*?\\.xlsx?"
   },
   "files": [
    {
     "period": "2026-07",
     "url": "https://www.essex.gov.uk/sites/default/files/2026-09/Day_to_day_spending_-_Essex_County_Council_-_July_to_September_2026.xls",
     "format": "xls"
    },
    {
     "period": "2026-04",
     "url": "https://www.essex.gov.uk/sites/default/files/2026-07/Day%20to%20day%20spending%20-%20April%20to%20June%202026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-01",
     "url": "https://www.essex.gov.uk/sites/default/files/2026-04/January%20to%20March%202026%20-%20day%20to%20day%20spending%20-%20Essex%20County%20Council.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-10",
     "url": "https://www.essex.gov.uk/sites/default/files/2026-01/Day%20to%20day%20spending%20-%20October%20to%20December%202025%20-%2013.01.26.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-07",
     "url": "https://www.essex.gov.uk/sites/default/files/2025-10/July%20to%20September%202025%20-%20Published%20data.xls",
     "format": "xls"
    },
    {
     "period": "2025-04",
     "url": "https://www.essex.gov.uk/sites/default/files/2025-07/Day%20to%20day%20spending%20-%20April%20to%20June%202025%20-%20Essex%20County%20Council.xls",
     "format": "xls"
    }
   ],
   "period": "quarterly",
   "threshold": 0,
   "headerRowIndex": 7,
   "header": [
    "Date",
    "Name",
    "Value",
    "Function",
    "Source",
    "Spend Description ",
    "Merchant Group",
    "Merchant Category"
   ],
   "licence": "Open Government Licence v3.0",
   "notes": "Publishes ALL spend regardless of value ('We publish all items of spending every 3 months, regardless of value'); filter >=500 client-side. One workbook per quarter with ONE SHEET PER MONTH named e.g. 'April 2026', 'May 2026', 'June 2026', plus a 'Field Descriptions' sheet. Each month sheet: rows 0-6 are a summary block (SUMIF formulas for Accounts Payable / Mileage & Expenses / Purchase Card / Total); header on row 7 (0-based). Date is a real Excel date. 'Spend Description ' has a trailing space. Source = 'Accounts Payable', 'Purchase Card' or 'Mileage & Expenses' (purchase cards are in the same file; Merchant Group/Category only for cards). Formats mix legacy .xls (BIFF8, 11-21MB) and .xlsx (~5MB) - fetcher needs an .xls reader. Filenames are inconsistent; hrefs are relative (prefix https://www.essex.gov.uk); regex matches 2023-2026 quarterly files. File period given as first month of the quarter. The Jul-Sep 2026 .xls was uploaded in 2026-09 (saved 16 Sep 2026) and already contains July/August/September 2026 sheets, so September is likely partial and the file may be replaced. Link text gives the quarter, e.g. 'April to June 2026 (XLS, 4.64MB)'. Page and files fetch fine with curl. Licence from the Essex Open Data catalogue entry (data.essex.gov.uk dataset 2gxlw), which just links back to this page.",
   "columns": {
    "date": "Date",
    "supplier": "Name",
    "amount": "Value",
    "service": "Function",
    "expenseType": "Merchant Category",
    "description": "Spend Description"
   },
   "card": {
    "column": "Source",
    "test": "card"
   }
  },
  {
   "code": "E09000007",
   "name": "Camden",
   "status": "usable",
   "reason": null,
   "landing": "https://opendata.camden.gov.uk/Finance/Camden-Council-Spend-Over-500-GBP/3ixw-qvb8",
   "discover": {
    "kind": "api",
    "url": "https://opendata.camden.gov.uk/resource/3ixw-qvb8.csv?$where=payment_date%20%3E%3D%20%27{FROM}T00:00:00%27&$limit=500000&$order=payment_date"
   },
   "files": [],
   "period": "rolling",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "organisation_label",
    "organisation_uri",
    "payment_date",
    "payment_month",
    "payment_year",
    "financial_year",
    "beneficiary_name",
    "purpose",
    "organisational_unit",
    "amount_gbp",
    "irrecoverable_vat_amount_gbp",
    "latest_financial_year",
    "latest_year",
    "latest_month",
    "unique_identifier"
   ],
   "licence": "Open Government Licence v3.0 (Socrata dataset metadata)",
   "notes": "Socrata dataset 3ixw-qvb8, one table of all years, updated monthly (rows through 2026-08-28 as of 2026-09-24). SODA endpoint header uses field names (above); payment_date ISO 'YYYY-MM-DDT00:00:00.000'; amount_gbp plain decimal, no pound sign. 91,879 rows since 2025-04-01, so set $limit high (SODA default is 1000) or page with $offset. Alternative full export with display-name header ('Organisation Label,Organisation URI,Payment Date,...,Amount GBP,...,Unique Identifier', Payment Date DD/MM/YYYY): https://opendata.camden.gov.uk/api/views/3ixw-qvb8/rows.csv?accessType=DOWNLOAD (whole history, large). Redacted payees appear as 'REDACTED'. Also on data.gov.uk as CKAN package camden-council-spend-over-500-gbp, which links to the same Socrata export. Plain curl works.",
   "columns": {
    "date": "payment_date",
    "supplier": "beneficiary_name",
    "description": "purpose",
    "service": "organisational_unit",
    "amount": "amount_gbp",
    "id": "unique_identifier"
   }
  },
  {
   "code": "E09000012",
   "name": "Hackney",
   "status": "usable",
   "reason": null,
   "landing": "https://www.hackney.gov.uk/council-and-elections/finances-and-transparency/transparency/council-spending-over-ps250",
   "discover": {
    "kind": "page",
    "url": "https://www.hackney.gov.uk/council-and-elections/finances-and-transparency/transparency/council-spending-over-ps250",
    "linkPattern": "https:\\/\\/drive\\.google\\.com\\/(?:file\\/d\\/[A-Za-z0-9_-]+\\/view|open\\?id=[A-Za-z0-9_-]+)[^\"]*"
   },
   "files": [
    {
     "period": "2025-08",
     "url": "https://drive.google.com/uc?export=download&id=13XbHuNtznFRSeFoQTo3wEyJi8kztdpRb",
     "format": "csv"
    },
    {
     "period": "2025-09",
     "url": "https://drive.google.com/uc?export=download&id=1JJ-LPEa6zsIhpGLsRIux8zEcZQO6Prkk",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://drive.google.com/uc?export=download&id=1cTNaGdH0S-uciLwJT8jY8Dt2whQjFqhw",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://drive.google.com/uc?export=download&id=1Rx241AwySRc_WgowvgErll3Zx7Hq9RYG",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://drive.google.com/uc?export=download&id=14SVAuHeAp3YCfUAp1_5M9feIf6IGcU4f",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://drive.google.com/uc?export=download&id=1GGLSH5CWiBKr1xfYIMgxrdDc60xhqbjh",
     "format": "csv"
    },
    {
     "period": "2026-02",
     "url": "https://drive.google.com/uc?export=download&id=1lmPq5258JqI7Eneh4ZVGXa9IefWPW1M8",
     "format": "csv"
    },
    {
     "period": "2026-03",
     "url": "https://drive.google.com/uc?export=download&id=1Fk2vgviALb5XnbQEeTlYN1ui_D2Rnh_o",
     "format": "csv"
    },
    {
     "period": "2026-04",
     "url": "https://drive.google.com/uc?export=download&id=1mX3scidXEgVy_-x9jFvJ-PQFYYXkvEID",
     "format": "csv"
    },
    {
     "period": "2026-05",
     "url": "https://drive.google.com/uc?export=download&id=1pL0Qy2z-oQhFwm4LG887cR6XX-htdFBR",
     "format": "csv"
    },
    {
     "period": "2026-06",
     "url": "https://drive.google.com/uc?export=download&id=1SdjNYx0l1c5qSMS9mzIhYXyYvsjgtcvd",
     "format": "csv"
    },
    {
     "period": "2026-07",
     "url": "https://drive.google.com/uc?export=download&id=1p9Y7n_l8lVxiTp1GMl1p-iuV8nXimwhr",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 250,
   "headerRowIndex": 0,
   "header": [
    "1. YEAR",
    "2. MONTH",
    "3. DATE INCURRED",
    "4. DATE PAID",
    "5. BENEFICIARY",
    "6. SUPPLIER NO.",
    "7. DEPARTMENT",
    "8. PURPOSE OF EXPENDITURE",
    "9. MERCHANT CATEGORY",
    "Total"
   ],
   "licence": "not stated on the page",
   "notes": "Threshold is GBP 250 (Hackney publishes spending over 250). Files are hosted on Google Drive: page links are https://drive.google.com/file/d/<ID>/view?usp=sharing (link text e.g. 'July 2026 (CSV 1.2MB)'); the fetcher must rewrite to https://drive.google.com/uc?export=download&id=<ID> (redirects to drive.usercontent.google.com, 200, plain CSV; ~1MB so no virus-scan interstitial). Each month also has a Google Sheets link (docs.google.com/spreadsheets/...): ignore those; the pattern matches only drive.google.com CSV links (a few old ones use drive.google.com/open?id=). Period comes from link text / accordion heading 'Monthly spending reports - YYYY' (page covers 2013-2026, 271 matching links). UTF-8, no BOM. Dates DD/MM/YY (2-digit year). Total column like ' £ 750.00 ' (leading space, pound sign, thousands commas possible). No separate card file found. Page is large (inline base64 images) but plain curl works.",
   "columns": {
    "date": "4. DATE PAID",
    "supplier": "5. BENEFICIARY",
    "service": "7. DEPARTMENT",
    "description": "8. PURPOSE OF EXPENDITURE",
    "expenseType": "9. MERCHANT CATEGORY",
    "amount": "Total"
   },
   "rewrite": [
    {
     "from": "https://drive\\.google\\.com/(?:file/d/([A-Za-z0-9_-]+)/view|open\\?id=([A-Za-z0-9_-]+))[^\"]*",
     "to": "https://drive.google.com/uc?export=download&id=$1$2"
    }
   ]
  },
  {
   "code": "E09000003",
   "name": "Barnet",
   "status": "usable",
   "reason": null,
   "landing": "https://open.barnet.gov.uk/dataset/expenditure-reporting-202627-2ywz8",
   "discover": {
    "kind": "page",
    "url": "https://open.barnet.gov.uk/api/datasets/export.json",
    "linkPattern": "https:\\/\\/open\\.barnet\\.gov\\.uk\\/download\\/[a-z0-9]+\\/[a-z0-9]+\\/Expenditure%20Report%20[A-Za-z]+%20\\d{4}[^\"]*\\.csv"
   },
   "files": [
    {
     "period": "2025-08",
     "url": "https://open.barnet.gov.uk/download/e6p4n/m2n/Expenditure%20Report%20August%202025.csv",
     "format": "csv"
    },
    {
     "period": "2025-09",
     "url": "https://open.barnet.gov.uk/download/e6p4n/enn/Expenditure%20Report%20September%202025.csv",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://open.barnet.gov.uk/download/e6p4n/hbm/Expenditure%20Report%20October%202025.csv",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://open.barnet.gov.uk/download/e6p4n/tdy/Expenditure%20Report%20November%202025.csv",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://open.barnet.gov.uk/download/e6p4n/s3p/Expenditure%20Report%20December%202025.csv",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://open.barnet.gov.uk/download/e6p4n/04d/Expenditure%20Report%20January%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-02",
     "url": "https://open.barnet.gov.uk/download/e6p4n/kt2/Expenditure%20Report%20February%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-03",
     "url": "https://open.barnet.gov.uk/download/e6p4n/mzw/Expenditure%20Report%20March%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-04",
     "url": "https://open.barnet.gov.uk/download/2ywz8/7q2/Expenditure%20Report%20April%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-05",
     "url": "https://open.barnet.gov.uk/download/2ywz8/v38/Expenditure%20Report%20May%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-06",
     "url": "https://open.barnet.gov.uk/download/2ywz8/72m/Expenditure%20Report%20June%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-07",
     "url": "https://open.barnet.gov.uk/download/2ywz8/f1f/Expenditure%20Report%20July%202026.csv",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 0,
   "headerRowIndex": 0,
   "header": [
    "Cost Centre Hierarchy - Directorate",
    "Cost Centre Hierarchy - Department",
    "Payment Reference Number",
    "Expenditure Type",
    "Payment Number",
    "Supplier Name",
    " Distribution Amount ",
    "Payment Date"
   ],
   "licence": "not stated",
   "notes": "Barnet publishes ALL expenditure (no 500 floor; July 2026 file has ~25k rows, over half under 500), so filter to >=500 if needed. One DataPress dataset per financial year ('Expenditure Reporting 2025/26' id e6p4n, '2026/27' id 2ywz8), so dataset IDs change each April; discover via the JSON catalogue https://open.barnet.gov.uk/api/datasets/export.json (all datasets with resource urls; regex tested: 120 matches; the file name gives month and year; some files carry a ' V2'/' v2' suffix) or per dataset https://open.barnet.gov.uk/api/dataset/<id>. Ignore '<year> Agency Expenditure' datasets (Matrix SCM breakdown). The main www.barnet.gov.uk site is behind Imperva bot protection (curl gets 'Pardon Our Interruption'), but open.barnet.gov.uk works with plain curl. Encoding Windows-1252: amounts like \"£5,087.28\" with the 0xA3 pound byte, thousands commas, negatives present; header ' Distribution Amount ' has leading/trailing spaces. Payment Date DD-Mon-YYYY (01-Jul-2026).",
   "columns": {
    "date": "Payment Date",
    "supplier": "Supplier Name",
    "amount": "Distribution Amount",
    "service": "Cost Centre Hierarchy - Directorate",
    "expenseType": "Expenditure Type",
    "description": "Cost Centre Hierarchy - Department",
    "id": "Payment Reference Number"
   }
  },
  {
   "code": "E09000008",
   "name": "Croydon",
   "status": "usable",
   "reason": null,
   "landing": "https://www.croydon.gov.uk/council-and-elections/budgets-and-spending/accounts-and-payments/payments-over-ps500",
   "discover": {
    "kind": "page",
    "url": "https://www.croydon.gov.uk/council-and-elections/budgets-and-spending/accounts-and-payments/payments-over-ps500/{YEAR}",
    "also": [
     "https://www.croydon.gov.uk/council-and-elections/budgets-and-spending/accounts-and-payments/payments-over-ps500/{PREVYEAR}"
    ],
    "linkPattern": "/sites/default/files/\\d{4}-\\d{2}/[^\"]*[Pp]ayments-over-[^\"]*\\.xlsx"
   },
   "files": [
    {
     "period": "2025-09",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-05/payments-over-500-Sepember2025-rev.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-10",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-05/october-25-payments-over-500-rev.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-11",
     "url": "https://www.croydon.gov.uk/sites/default/files/2025-12/nov-25-payments-over-500.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-12",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-02/payments-over-500-december-2025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-01",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-02/january-2026-payments-over-500.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-02",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-05/february-2026-payments-over-500.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-03",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-05/march-2026-payments-over-500.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-04",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-07/april-2026-payments-over-500.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-05",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-07/may-2026-payments-over-500.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-06",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-07/june-2026-payments-over-500.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-07",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-08/july-2026-payments-over-500.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-08",
     "url": "https://www.croydon.gov.uk/sites/default/files/2026-09/august-2026-payments-over-500.xlsx",
     "format": "xlsx"
    }
   ],
   "period": "monthly",
   "threshold": 500,
   "headerRowIndex": 6,
   "header": [
    "Payment Date",
    "Vendor Name",
    "Vendor Type",
    "Cost Centre Code",
    "Cost Centre Description",
    "Cost Centre Level 2 Code",
    "Cost Centre Level 2 Description",
    "Cost Centre Level 3 Code",
    "Cost Centre Level 3 Description",
    "Cost Centre Level 4 Code",
    "Cost Centre Level 4 Description",
    "Cost Centre Level 5 Code",
    "Cost Centre Level 5 Description",
    "Cost Centre Level 6 Code",
    "Cost Centre Level 6 Description",
    "Cost Centre Level 7 Code",
    "Cost Centre Level 7 Description",
    "Subjective Code",
    "Subjective Description",
    "Account Code",
    "Account Description",
    "Amount",
    "Payment Number",
    "Invoice Line Number",
    "Distribution Number",
    "Invoice Number",
    "Invoice Creation Date"
   ],
   "licence": "Open Government Licence (site footer)",
   "notes": "Index is one page per CALENDAR year: .../payments-over-ps500/<YYYY> (fetch the current and previous year; the parent landing page links to all years 2018-2026). Pattern tested: 12 matches on /2025, 8 on /2026. Relative hrefs (prefix https://www.croydon.gov.uk). Filenames are inconsistent (e.g. 'payments-over-500-Sepember2025-rev.xlsx', 'october-25-...-rev.xlsx', '...-amended.xlsx'); earlier months get replaced by revised files under new upload-folder paths, so take the month from link text / file contents and re-fetch. XLSX only, single sheet 'PUBLISH Croydon GL Supplier ' (trailing space). Header row is NOT fixed: index 6 in Aug 2026 and Jan 2026 but 7 in Sep 2025 (Jan 2026 has 28 columns) - scan for the row whose first cell is 'Payment Date'. Rows above hold report metadata (From/To Payment Date, 'Threshold Amount' 500). Dates are text with a leading non-breaking space, e.g. '\\u00a006-Aug-2026' (DD-Mon-YYYY); Amount numeric. Plain curl works."
  },
  {
   "code": "E09000030",
   "name": "Tower Hamlets",
   "status": "usable",
   "reason": null,
   "landing": "https://www.towerhamlets.gov.uk/lgnl/council_and_democracy/Transparency/payments_to_suppliers.aspx",
   "discover": {
    "kind": "page",
    "url": "https://www.towerhamlets.gov.uk/lgnl/council_and_democracy/Transparency/payments_to_suppliers.aspx",
    "linkPattern": "\\/Documents\\/Transparency-data\\/Payments-to-suppliers\\/[^\"]*250[^\"]*\\.(?:csv|xlsx)"
   },
   "files": [
    {
     "period": "2025-08",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-Spend-Aug-25.csv",
     "format": "csv"
    },
    {
     "period": "2025-09",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-spend-Sept-25.csv",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-Spend-Oct-25.csv",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-spend-Nov-2025.csv",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-Spend-Dec-2025.csv",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-Spend-Jan-2026.csv",
     "format": "csv"
    },
    {
     "period": "2026-02",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-spend-Feb-2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-03",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-Spend-March-26.csv",
     "format": "csv"
    },
    {
     "period": "2026-04",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-Spend-April-26.csv",
     "format": "csv"
    },
    {
     "period": "2026-05",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-Spend-May-26-new.csv",
     "format": "csv"
    },
    {
     "period": "2026-06",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-Spend-Jun-26-new.csv",
     "format": "csv"
    },
    {
     "period": "2026-07",
     "url": "https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/250-spend-Jul-26-New.csv",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 250,
   "headerRowIndex": 0,
   "header": [
    "Directorate",
    "Service",
    "Division",
    "Responsible Unit",
    "Expense Type",
    "Payment Date",
    "Trans No",
    "Net Amount",
    "Supplier Name"
   ],
   "licence": "not stated (page says published under a licence allowing wide re-use)",
   "notes": "Threshold is GBP 250. Each month usually has both CSV and XLSX of the same data; prefer CSV, fall back to XLSX (Feb 2026 is XLSX only). Relative hrefs (prefix https://www.towerhamlets.gov.uk). Filenames are very inconsistent ('250-Spend-Aug-25', '250-spend-Nov-2025', '250-Spend-April-26', '250-spend-Jul-26-New') and 2026/27 files still sit in the '2025-2026' folder, so take the period from link text (e.g. 'CSV July 2026', may contain &nbsp;) or from Payment Date. Pattern matches 177 links back to 2019 and excludes payment-card files. CSV is UTF-8 with BOM; Payment Date DD/MM/YYYY; Net Amount quoted with thousands commas, no pound sign. Separate purchase-card files per month, e.g. https://www.towerhamlets.gov.uk/Documents/Transparency-data/Payments-to-suppliers/2025-2026/PCARD-JUL-26-New.csv. Plain curl works.",
   "columns": {
    "date": "Payment Date",
    "supplier": "Supplier Name",
    "amount": "Net Amount",
    "service": "Service",
    "expenseType": "Expense Type",
    "description": "Division",
    "id": "Trans No"
   },
   "preferCsv": true
  },
  {
   "code": "E09000033",
   "name": "Westminster",
   "status": "usable",
   "reason": null,
   "landing": "https://www.westminster.gov.uk/about-council/transparency-hub/our-spending-and-finances/spending-procurement-and-data-transparency/expenditure-over-ps500",
   "discover": {
    "kind": "page",
    "url": "https://www.westminster.gov.uk/about-council/transparency-hub/our-spending-and-finances/spending-procurement-and-data-transparency/expenditure-over-ps500",
    "linkPattern": "\\/media\\/document\\/q[1-4]-\\d{4}-\\d{2}[^\"]*expenditure-over[^\"]*"
   },
   "files": [
    {
     "period": "2025-04",
     "url": "https://www.westminster.gov.uk/media/document/q1-2025-26-expenditure-over-%C2%A3500",
     "format": "csv"
    },
    {
     "period": "2025-07",
     "url": "https://www.westminster.gov.uk/media/document/q2-2025-26-expenditure-over-%C2%A3500",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://www.westminster.gov.uk/media/document/q3-2025-26-expenditure-over-%C2%A3500",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://www.westminster.gov.uk/media/document/q4-2025-26-expenditure-over-%C2%A3500",
     "format": "csv"
    },
    {
     "period": "2026-04",
     "url": "https://www.westminster.gov.uk/media/document/q1-2026-27-expenditure-over-%C2%A3500",
     "format": "csv"
    }
   ],
   "period": "quarterly",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "Posting date",
    "Supplier number",
    "Supplier name",
    "Expense type",
    "Department",
    "Amount"
   ],
   "licence": "not stated",
   "notes": "Quarterly by financial-year quarter: q1-2026-27 = Apr-Jun 2026 (file periods above are quarter start months). Links are relative Drupal media URLs /media/document/qN-YYYY-YY-expenditure-over-%C2%A3500 (some older slugs have '---', '-report' or a trailing zero-width space %E2%80%8B); they return the CSV directly (Content-Type text/csv, Content-Disposition filename q1-2026-27-expenditure-over-500.csv). Pattern matches 21 links (2021/22 onwards). UTF-8 with BOM; Posting date DD/MM/YYYY; Amount quoted with thousands commas, no pound sign. Supplier names truncated to ~30 chars. Separate procurement card page: https://www.westminster.gov.uk/about-council/transparency-hub/our-spending-and-finances/spending-procurement-and-data-transparency/procurement-card-transactions (e.g. /media/document/q1-2026-27-procurement-card-data). Plain curl works.",
   "columns": {
    "date": "Posting date",
    "supplier": "Supplier name",
    "amount": "Amount",
    "service": "Department",
    "expenseType": "Expense type"
   }
  },
  {
   "code": "E06000052",
   "name": "Cornwall",
   "status": "usable",
   "reason": null,
   "landing": "https://www.cornwall.gov.uk/the-council-and-democracy/council-spending-and-finance/payments-to-suppliers-where-the-invoiced-payments-are-greater-than-or-equal-to-500/",
   "discover": {
    "kind": "page",
    "url": "https://www.cornwall.gov.uk/the-council-and-democracy/council-spending-and-finance/payments-to-suppliers-where-the-invoiced-payments-are-greater-than-or-equal-to-500/",
    "linkPattern": "https://www\\.cornwall\\.gov\\.uk/media/[a-z0-9]+/[a-z]+-\\d{4}-csv\\.csv"
   },
   "files": [
    {
     "period": "2026-02",
     "url": "https://www.cornwall.gov.uk/media/qunlvrlu/february-2026-csv.csv",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://www.cornwall.gov.uk/media/jvolzwjc/january-2026-csv.csv",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://www.cornwall.gov.uk/media/51gb2gzl/december-2025-csv.csv",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://www.cornwall.gov.uk/media/2cganrna/november-2025-csv.csv",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://www.cornwall.gov.uk/media/l1bdt1eb/october-2025-csv.csv",
     "format": "csv"
    },
    {
     "period": "2025-09",
     "url": "https://www.cornwall.gov.uk/media/wjepncif/september-2025-csv.csv",
     "format": "csv"
    },
    {
     "period": "2025-08",
     "url": "https://www.cornwall.gov.uk/media/ic5hch5c/august-2025-csv.csv",
     "format": "csv"
    },
    {
     "period": "2025-07",
     "url": "https://www.cornwall.gov.uk/media/sygf0twt/july-2025-csv.csv",
     "format": "csv"
    },
    {
     "period": "2025-06",
     "url": "https://www.cornwall.gov.uk/media/reveqq3k/june-2025-csv.csv",
     "format": "csv"
    },
    {
     "period": "2025-05",
     "url": "https://www.cornwall.gov.uk/media/h3bdj23o/may-2025-csv.csv",
     "format": "csv"
    },
    {
     "period": "2025-04",
     "url": "https://www.cornwall.gov.uk/media/3jjocjv0/april-2025-csv.csv",
     "format": "csv"
    },
    {
     "period": "2025-03",
     "url": "https://www.cornwall.gov.uk/media/yw0b1mrn/march-2025-csv.csv",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    " Directorate",
    "Service/Board",
    " Description",
    " Subjective",
    " Supplier Name",
    " Payment Date",
    " Line Amount",
    " Invoice Amount",
    " Net Amount"
   ],
   "licence": "not stated",
   "notes": "Newest file is February 2026 (page says they aim to publish by end of the following month, so ~6 months behind as of Sept 2026). Header shown is Feb 2026. Column names have LEADING SPACES and the layout changes month to month: Jul 2025-Feb 2026 use the 9-column layout above (Aug 2025 uses 'Service' and 'Payment Date ' with trailing space; Sep/Oct 2025 have a trailing empty column); Jan-May 2025 add 'Entity Name',' Cost Centre', a second ' Description' and 'Voucher Number'; Mar 2025 adds 'Sub Service' and ' Project'; Jun 2025 has 'Invoice Number','UPRN', ' Payment Date' twice and 3 trailing empty columns. Payment Date is DD/MM/YYYY in some months and YYYY-MM-DD in others. Amounts sometimes quoted with thousands commas ('3,328.76'), sometimes plain. Subjective is 'code description', e.g. '43538 Brokerage Fees'. Line Amount can be below 500 (the invoice is >=500, split across lines). Redaction text 'Redacted - Personal Data'. Each month also has an Excel (.xlsx) link; the March 2025 'Excel' link actually points to a .csv. Page and files fetch fine with curl."
  },
  {
   "code": "E06000054",
   "name": "Wiltshire",
   "status": "partial",
   "reason": "index page is behind a Cloudflare challenge (403 to curl) and file URLs contain unpredictable media IDs; the CSV files themselves download fine with curl",
   "landing": "https://www.wiltshire.gov.uk/article/1392/Council-payments",
   "discover": {
    "kind": "files"
   },
   "files": [
    {
     "period": "2026-08",
     "url": "https://www.wiltshire.gov.uk/media/21509/2026-08-wiltshire-payments/excel/2026-08-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-07",
     "url": "https://www.wiltshire.gov.uk/media/21219/2026-07-wiltshire-payments/excel/2026-07-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-06",
     "url": "https://www.wiltshire.gov.uk/media/20974/2026-06-wiltshire-payments/excel/2026-06-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-05",
     "url": "https://www.wiltshire.gov.uk/media/20630/2026-05-wiltshire-payments/excel/2026-05-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-04",
     "url": "https://www.wiltshire.gov.uk/media/20155/2026-04-wiltshire-payments/excel/2026-04-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-03",
     "url": "https://www.wiltshire.gov.uk/media/19812/2026-03-wiltshire-payments/excel/2026-03-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-02",
     "url": "https://www.wiltshire.gov.uk/media/19288/2026-02-wiltshire-payments/excel/2026-02-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://www.wiltshire.gov.uk/media/18995/2026-01-wiltshire-payments/excel/2026-01-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://www.wiltshire.gov.uk/media/18704/2025-12-wiltshire-payments/excel/2025-12-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://www.wiltshire.gov.uk/media/18580/2025-11-wiltshire-payments/excel/2025-11-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://www.wiltshire.gov.uk/media/18344/2025-10-wiltshire-payments/excel/2025-10-wiltshire-payments.csv",
     "format": "csv"
    },
    {
     "period": "2025-09",
     "url": "https://www.wiltshire.gov.uk/media/18295/2025-09-wiltshire-payments/excel/2025-09-wiltshire-payments.csv",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 250,
   "headerRowIndex": 0,
   "header": [
    "Organisation Name",
    "Organisation Code",
    "Payment Date",
    "Invoice Amount Paid",
    "Supplier or Party Name",
    "Directorate",
    "Service Area",
    "Subjective Code Description",
    "BVACOP class"
   ],
   "licence": "Open Government Licence v3.0",
   "notes": "Page states the data is free to use under the Open Government Licence; monthly; generating system Oracle. Threshold £250 (reduced from £500 in Aug 2012 per the data.gov.uk description). Page hrefs are relative and carry a cache-buster query (?m=...); strip it. The bare /media/{id}/{YYYY-MM}-wiltshire-payments/excel/{YYYY-MM}-wiltshire-payments.csv URL downloads with curl (verified 206 for 2026-08); links were read in a real browser because the article page returns Cloudflare 403 'Just a moment...' to curl. Payment Date DD/MM/YYYY; Invoice Amount Paid plain number; supplier names may have a leading space; Organisation Code is an opendatacommunities URI. Redacted suppliers shown as 'REDACTED PERSONAL DATA' (per data.gov.uk description). The page groups files by financial year (2026 - 2027 etc.). data.gov.uk package wiltshire-council-spending-over-five-hundred stopped in 2011.",
   "note": "The index page blocks automated requests, so the file list is kept by hand and goes out of date."
  },
  {
   "code": "E06000016",
   "name": "Leicester",
   "status": "usable",
   "reason": null,
   "landing": "https://data.leicester.gov.uk/explore/?q=expenditure+exceeding",
   "discover": {
    "kind": "api",
    "url": "https://data.leicester.gov.uk/api/explore/v2.1/catalog/datasets/expenditure-exceeding-ps500-{YEAR}/exports/csv?delimiter=%2C",
    "also": [
     "https://data.leicester.gov.uk/api/explore/v2.1/catalog/datasets/expenditure-exceeding-ps500-{PREVYEAR}/exports/csv?delimiter=%2C"
    ]
   },
   "files": [
    {
     "period": "2026",
     "url": "https://data.leicester.gov.uk/api/explore/v2.1/catalog/datasets/expenditure-exceeding-ps500-2026/exports/csv?delimiter=%2C",
     "format": "csv"
    },
    {
     "period": "2025",
     "url": "https://data.leicester.gov.uk/api/explore/v2.1/catalog/datasets/expenditure-exceeding-ps500-2025/exports/csv?delimiter=%2C",
     "format": "csv"
    }
   ],
   "period": "rolling",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "unique_id",
    "payment_date",
    "department",
    "beneficiary",
    "purpose_of_expenditure",
    "amount",
    "vat",
    "vat_code",
    "merchant_category"
   ],
   "licence": "Open Government Licence v3.0",
   "notes": "OpenDataSoft portal (data.leicester.gov.uk). One dataset per CALENDAR year, updated in place (2026 dataset had payments 2026-01-06..2026-08-28, modified 2026-09-09). Dataset id is not fully consistent: expenditure-exceeding-ps500-{YYYY} for 2024/2025/2026 but expenditure-exceeding-gbp500-2023 for 2023 - discover new years via catalog search https://data.leicester.gov.uk/api/explore/v2.1/catalog/datasets?where=search(%22expenditure%22) filtering titles 'Expenditure exceeding £500 - YYYY'. Export CSV defaults to ';' delimiter unless delimiter=%2C given; UTF-8 with BOM; payment_date ISO YYYY-MM-DD; amount plain decimal, VAT separate column. Can filter rows with &where=payment_date>=date'2026-04-01'. The 2025 dataset contains a few rows back to 2024-07.",
   "columns": {
    "date": "payment_date",
    "supplier": "beneficiary",
    "service": "department",
    "description": "purpose_of_expenditure",
    "amount": "amount",
    "expenseType": "merchant_category",
    "id": "unique_id"
   }
  },
  {
   "code": "E06000018",
   "name": "Nottingham",
   "status": "usable",
   "reason": null,
   "landing": "https://www.nottinghamcity.gov.uk/your-council/about-the-council/access-to-information/nottingham-data-hub/",
   "discover": {
    "kind": "page",
    "url": "https://www.nottinghamcity.gov.uk/your-council/about-the-council/access-to-information/nottingham-data-hub/",
    "linkPattern": "/media/[a-z0-9]+/payments-to-suppliers-[^\"']*\\.xlsx"
   },
   "files": [
    {
     "period": "2026-Q1(Apr-Jun)",
     "url": "https://www.nottinghamcity.gov.uk/media/5cbjn2nz/payments-to-suppliers-2026-2027-q1.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025/26",
     "url": "https://www.nottinghamcity.gov.uk/media/eijpnt43/payments-to-suppliers-2025-2026-f.xlsx",
     "format": "xlsx"
    }
   ],
   "period": "quarterly",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "Payment Date",
    "Transaction Number",
    "Department",
    "Supplier Name",
    "Supplier Post Code",
    "Expenditure Category",
    "Net Amount"
   ],
   "licence": "not stated",
   "notes": "One xlsx per financial year, updated cumulatively each quarter (current file named ...-2026-2027-q1.xlsx; the filename and /media/<id>/ change on each update, so re-scan the page). Q1 2026-27 file covers 20260401..20260709 (a few July rows). Sheet 'Sheet1'. Payment Date is a TEXT string YYYYMMDD. Net Amount numeric; reversals appear as negative/positive pairs. Covers both 'Expenditure Exceeding £500' and procurement card transactions per the page. Page says data published with several months delay. Relative hrefs - prefix https://www.nottinghamcity.gov.uk.",
   "columns": {
    "date": "Payment Date",
    "supplier": "Supplier Name",
    "service": "Department",
    "expenseType": "Expenditure Category",
    "amount": "Net Amount",
    "id": "Transaction Number"
   }
  },
  {
   "code": "E06000043",
   "name": "Brighton and Hove",
   "status": "blocked",
   "reason": "Brighton and Hove's website blocks automated downloads (a bot challenge), so the files can only be read in a browser.",
   "landing": "https://www.brighton-hove.gov.uk/council-and-democracy/council-data-and-finance/payments-over-ps250",
   "discover": {
    "kind": "page",
    "url": "https://www.brighton-hove.gov.uk/council-and-democracy/council-data-and-finance/creditor-payments-over-ps250-2026-2027",
    "linkPattern": "/sites/default/files/\\d{4}-\\d{2}/Creditor%20Payments%20[Oo]ver%20250%20[A-Za-z]+%20\\d{4}\\.csv"
   },
   "files": [
    {
     "period": "2026-08",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2026-09/Creditor%20Payments%20Over%20250%20August%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-07",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2026-09/Creditor%20Payments%20Over%20250%20July%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-06",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2026-07/Creditor%20Payments%20Over%20250%20June%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-05",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2026-07/Creditor%20Payments%20Over%20250%20May%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-04",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2026-07/Creditor%20Payments%20Over%20250%20April%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-03",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2026-04/Creditor%20Payments%20Over%20250%20March%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-02",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2026-03/Creditor%20Payments%20Over%20250%20February%202026.csv",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2026-02/Creditor%20Payments%20Over%20250%20January%202026.csv",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2026-01/Creditor%20Payments%20Over%20250%20December%202025.csv",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2025-12/Creditor%20Payments%20Over%20250%20November%202025.csv",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2025-11/Creditor%20Payments%20Over%20250%20October%202025.csv",
     "format": "csv"
    },
    {
     "period": "2025-09",
     "url": "https://www.brighton-hove.gov.uk/sites/default/files/2025-10/Creditor%20Payments%20Over%20250%20September%202025.csv",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 250,
   "headerRowIndex": 0,
   "header": [
    "Creditor Name",
    "Transaction Number",
    "Date",
    "Net Amount",
    "Expenditure Summary",
    "Category",
    "Directorate",
    "Section"
   ],
   "licence": "not stated",
   "notes": "Threshold is £250 (not £500). One page per financial year: .../creditor-payments-over-ps250-2025-2026 and .../creditor-payments-over-ps250-2026-2027 (slug pattern creditor-payments-over-ps250-YYYY-YYYY). Links are absolute URLs; June 2025 file uses lowercase 'over'. File list and header were verified only via a real Chrome session (fetch within the page returned 200 text/csv); plain curl with browser UA is blocked by Incapsula (302 loop then 403) - the fetcher will need a headless browser or cannot use this source. Date DD/MM/YYYY; Net Amount plain number, CRLF line endings. data.gov.uk package local-authority-spending-over-500-brighton-and-hove has 0 resources."
  },
  {
   "code": "E06000026",
   "name": "Plymouth",
   "status": "usable",
   "reason": null,
   "landing": "https://www.plymouth.gov.uk/publication-scheme",
   "discover": {
    "kind": "page",
    "url": "https://www.plymouth.gov.uk/publication-scheme",
    "linkPattern": "/sites/default/files/\\d{4}-\\d{2}/Payments[^\"']*?(?:500|%C2%A3500)[^\"']*\\.(?:xlsx?|csv)"
   },
   "files": [
    {
     "period": "2026-08",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2026-09/Payments-over-500-August-2026.xls",
     "format": "xls"
    },
    {
     "period": "2026-07",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2026-08/Payments-Over-500-July-2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-06",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2026-07/Payments-Over-500-June-2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-05",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2026-06/Payments-over-500-May-2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-04",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2026-05/Payments-over-500-April-2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-03",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2026-04/Payments-over-500-March-2026.xls",
     "format": "xls"
    },
    {
     "period": "2026-02",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2026-03/Payments%20Over%20500-February-2026.xls",
     "format": "xls"
    },
    {
     "period": "2026-01",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2026-02/Payments-Over-500-January-2026.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-12",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2026-01/Payments-over-500-December-2025.xls",
     "format": "xls"
    },
    {
     "period": "2025-11",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2025-12/Payments-over-500-November-2025.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-10",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2025-11/Payments-over-500-October-2025.xls",
     "format": "xls"
    },
    {
     "period": "2025-09",
     "url": "https://www.plymouth.gov.uk/sites/default/files/2025-10/Payments-over-500-September-2025.xlsx",
     "format": "xlsx"
    }
   ],
   "period": "monthly",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "Body Name",
    "Body",
    "Service label",
    "Organisational unit",
    "Expenditure category",
    "Detailed Expenses type",
    "Date",
    "Transaction Number",
    "Amount",
    "Capital/\nRevenue",
    "Supplier Name",
    "Supplier ID"
   ],
   "licence": "not stated",
   "notes": "Month is in the filename (Payments-over-500-<Month>-<YYYY>), not the folder (folder = upload month). Format varies month to month: .xlsx, genuine BIFF .xls (Crystal Reports export, needs an .xls reader such as xlrd/SheetJS; Aug 2026 .xls has two extra empty trailing columns), occasionally .csv (March 2025). Capitalisation varies (Over/over, spaces as %20). Each month also has a .pdf twin - ignore. Header 'Capital/\\nRevenue' contains a literal newline. Date is an Excel datetime (with time). Personal data shown as 'Redacted personal data' in Supplier Name. Sheet 'Sheet1'. Relative hrefs - prefix https://www.plymouth.gov.uk. Page also lists an odd file under /sites/default/files/media-uploads/ (not matched by pattern).",
   "skipLinks": "\\.pdf$"
  },
  {
   "code": "E07000008",
   "name": "Cambridge",
   "status": "usable",
   "reason": null,
   "landing": "https://www.cambridge.gov.uk/invoice-payments-over-500",
   "discover": {
    "kind": "page",
    "url": "https://www.cambridge.gov.uk/invoice-payments-over-500",
    "linkPattern": "/media/[a-z0-9]+/[^\"']*\\.csv"
   },
   "files": [
    {
     "period": "2026/27",
     "url": "https://www.cambridge.gov.uk/media/kvin4u0a/payments-to-suppliers-2026-27.csv",
     "format": "csv"
    },
    {
     "period": "2025/26",
     "url": "https://www.cambridge.gov.uk/media/zgqjg0z5/payments-to-suppliers-2025-26.csv",
     "format": "csv"
    }
   ],
   "period": "rolling",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "Body Name ",
    "Supplier Name",
    "Account Number",
    "Invoice Date",
    "Document File Name",
    "Cost Centre / Project Code",
    "Cost Centre/Project Description",
    "Subjective Account",
    "Subjective description",
    " Invoice Amount (Excluding VAT) ",
    "Period"
   ],
   "licence": "not stated",
   "notes": "One CSV per financial year, appended as months are added (2026-27 file currently has Period 1..5 = Apr..Aug 2026). 'Period' column is the financial-year period number (1=April). Encoding Windows-1252 (£ as 0xA3). Amounts like \"£4,560.00\" with £ sign and thousands commas. Invoice Date DD/MM/YY (2-digit year). Header cells have leading/trailing spaces (trim them); some supplier names have a leading space. Procurement card data is separate at https://www.cambridge.gov.uk/procurement-card-spend. Relative hrefs - prefix https://www.cambridge.gov.uk. The /media/<id>/ may change when the file is replaced, so re-scan the page.",
   "columns": {
    "date": "Invoice Date",
    "supplier": "Supplier Name",
    "service": "Cost Centre/Project Description",
    "expenseType": "Subjective description",
    "amount": "Invoice Amount (Excluding VAT)"
   }
  },
  {
   "code": "E07000078",
   "name": "Cheltenham",
   "status": "usable",
   "reason": null,
   "landing": "https://www.cheltenham.gov.uk/about-the-council/council-performance-and-spending/financial-information/payments-to-suppliers-and-procurement-card-purchases/",
   "discover": {
    "kind": "page",
    "url": "https://www.cheltenham.gov.uk/about-the-council/council-performance-and-spending/financial-information/payments-to-suppliers-and-procurement-card-purchases/",
    "linkPattern": "/media/[a-z0-9]+/[a-z]+_?\\d{4}_(?:bank_payments|payments_to_suppliers)\\.csv"
   },
   "files": [
    {
     "period": "2026-07",
     "url": "https://www.cheltenham.gov.uk/media/cmwbu1kv/july_2026_bank_payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-06",
     "url": "https://www.cheltenham.gov.uk/media/h3tpfrcy/june_2026_bank_payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-05",
     "url": "https://www.cheltenham.gov.uk/media/130kp3fn/may_2026_bank_payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-04",
     "url": "https://www.cheltenham.gov.uk/media/wdngpgvs/april_2026_bank_payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-03",
     "url": "https://www.cheltenham.gov.uk/media/iyjaqcao/march_2026_bank_payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-02",
     "url": "https://www.cheltenham.gov.uk/media/ja1jve5v/february_2026_bank_payments.csv",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://www.cheltenham.gov.uk/media/vfnk3awr/january_2026_bank_payments.csv",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://www.cheltenham.gov.uk/media/talfbcqf/december2025_bank_payments.csv",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://www.cheltenham.gov.uk/media/gbdf4m4y/november_2025_bank_payments.csv",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://www.cheltenham.gov.uk/media/a1tmapqz/october_2025_payments_to_suppliers.csv",
     "format": "csv"
    },
    {
     "period": "2025-09",
     "url": "https://www.cheltenham.gov.uk/media/51id4plc/september_2025_bank_payments.csv",
     "format": "csv"
    },
    {
     "period": "2025-08",
     "url": "https://www.cheltenham.gov.uk/media/czzmcvxl/august_2025_bank_payments.csv",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "OrganisationURI",
    "OrganisationLabel",
    "Organisation Unit",
    "TransactionNumber",
    "Beneficiary Name",
    "Expense Type",
    "Purpose",
    "Payment Date",
    "Amount"
   ],
   "licence": "not stated",
   "notes": "Each month published as .csv and .xlsx twins. Filenames inconsistent: 'july_2026_bank_payments', 'december2025_bank_payments' (no underscore), 'october_2025_payments_to_suppliers' - parse month/year from name via /([a-z]+)_?(\\d{4})_/. Payment Date DD/MM/YYYY; Amount has thousands commas in quotes (\"4,899.77\"); OrganisationURI has trailing space. data.gov.uk package local_authority_spend_over_500_cheltenham is stale (2022). Relative hrefs - prefix https://www.cheltenham.gov.uk.",
   "columns": {
    "date": "Payment Date",
    "supplier": "Beneficiary Name",
    "service": "Organisation Unit",
    "expenseType": "Expense Type",
    "description": "Purpose",
    "amount": "Amount",
    "id": "TransactionNumber"
   },
   "preferCsv": true
  },
  {
   "code": "E07000041",
   "name": "Exeter",
   "status": "usable",
   "reason": null,
   "landing": "https://exeter.gov.uk/council-and-democracy/council-information/council-data/council-spending/",
   "discover": {
    "kind": "page",
    "url": "https://exeter.gov.uk/council-and-democracy/council-information/council-data/council-spending/",
    "linkPattern": "/media/[a-z0-9]+/spend-analysis[^\"']*\\.csv"
   },
   "files": [
    {
     "period": "2026-04..2026-06",
     "url": "https://exeter.gov.uk/media/fdpp4k4f/spend-analysis-report-q1-26-27_redacted.csv",
     "format": "csv"
    },
    {
     "period": "2026-01..2026-03",
     "url": "https://exeter.gov.uk/media/riofkkdh/spend-analysis-q4-25-26-redacted-21-04-26.csv",
     "format": "csv"
    },
    {
     "period": "2025-10..2025-12",
     "url": "https://exeter.gov.uk/media/wqfmniot/spend-analysis-q3-25-26-redacted.csv",
     "format": "csv"
    },
    {
     "period": "2025-07..2025-09",
     "url": "https://exeter.gov.uk/media/hrvlz0hp/spend-analysis-q2-25-26-1-redacted.csv",
     "format": "csv"
    },
    {
     "period": "2025-04..2025-06",
     "url": "https://exeter.gov.uk/media/3mepgx4n/spend-analysis-q1-25-26-redacted.csv",
     "format": "csv"
    }
   ],
   "period": "quarterly",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "Trans Date",
    "Supplier Name",
    "Trans Ref/No",
    "Net Amount",
    "Expense Description",
    "Service Code",
    "Category"
   ],
   "licence": "Open Government Licence (linked on page)",
   "notes": "Quarterly CSV + XLSX twins; quarter is in filename as q<N>-<yy>-<yy> (financial-year quarter, q1=Apr-Jun). Link text gives the month range (e.g. 'Apr 2026 - Jun 2026 (.csv)'). Trans Date DD/MM/YYYY; Net Amount plain number. Credit card transactions published separately on same page (e.g. /media/1esl0v4x/jan-25-may-2026.csv, 'Jan 2025 - May 2026'). Relative hrefs - prefix https://exeter.gov.uk.",
   "columns": {
    "date": "Trans Date",
    "supplier": "Supplier Name",
    "amount": "Net Amount",
    "expenseType": "Expense Description",
    "service": "Service Code",
    "description": "Category",
    "id": "Trans Ref/No"
   },
   "skipLinks": "(?:jan-25|credit)"
  },
  {
   "code": "E07000148",
   "name": "Norwich",
   "status": "partial",
   "reason": "last file January 2026 (no Feb-Aug 2026 files published as of 2026-09-24)",
   "landing": "https://www.norwich.gov.uk/your-council-explained/transparency-and-accountability/find-open-data/payments-over-500",
   "discover": {
    "kind": "page",
    "url": "https://www.norwich.gov.uk/your-council-explained/transparency-and-accountability/find-open-data/payments-over-500",
    "linkPattern": "https://www\\.norwich\\.gov\\.uk/(?:sites/default/files/\\d{4}-\\d{2}/Payments[^\"']*\\.csv|downloads/file/\\d+/payments_to_suppliers_over_500_-_[a-z]+_\\d{4}_csv)"
   },
   "files": [
    {
     "period": "2026-01",
     "url": "https://www.norwich.gov.uk/sites/default/files/2026-02/Payments%20to%20suppliers%20over%20%C2%A3500%20January%202026.csv",
     "format": "csv"
    },
    {
     "period": "2025-12",
     "url": "https://www.norwich.gov.uk/sites/default/files/2026-01/Payments%20over%20%C2%A3500%20-%20December%202025.csv",
     "format": "csv"
    },
    {
     "period": "2025-11",
     "url": "https://www.norwich.gov.uk/sites/default/files/2025-12/Payments%20over%20%C2%A3500%20November%202025.csv",
     "format": "csv"
    },
    {
     "period": "2025-10",
     "url": "https://www.norwich.gov.uk/sites/default/files/2025-12/Payments%20over%20%C2%A3500%20October%202025.csv",
     "format": "csv"
    },
    {
     "period": "2025-09",
     "url": "https://www.norwich.gov.uk/downloads/file/11037/payments_to_suppliers_over_500_-_september_2025_csv",
     "format": "csv"
    },
    {
     "period": "2025-08",
     "url": "https://www.norwich.gov.uk/downloads/file/10992/payments_to_suppliers_over_500_-_august_2025_csv",
     "format": "csv"
    },
    {
     "period": "2025-07",
     "url": "https://www.norwich.gov.uk/downloads/file/10914/payments_to_suppliers_over_500_-_july_2025_csv",
     "format": "csv"
    },
    {
     "period": "2025-06",
     "url": "https://www.norwich.gov.uk/downloads/file/10858/payments_to_suppliers_over_500_-_june_2025_csv",
     "format": "csv"
    },
    {
     "period": "2025-05",
     "url": "https://www.norwich.gov.uk/downloads/file/10824/payments_to_suppliers_over_500_-_may_2025_csv",
     "format": "csv"
    },
    {
     "period": "2025-04",
     "url": "https://www.norwich.gov.uk/downloads/file/10790/payments_to_suppliers_over_500_-_april_2025_csv",
     "format": "csv"
    },
    {
     "period": "2025-03",
     "url": "https://www.norwich.gov.uk/downloads/file/10755/payments_to_suppliers_over_500_-_march_2025_csv",
     "format": "csv"
    },
    {
     "period": "2025-02",
     "url": "https://www.norwich.gov.uk/downloads/file/10656/payments_to_suppliers_over_500_-_february_2025_csv",
     "format": "csv"
    }
   ],
   "period": "monthly",
   "threshold": 500,
   "headerRowIndex": 2,
   "header": [
    "Body Name",
    "Service Label",
    "Cost Centre",
    "Expenditure Category",
    "Account",
    "Accounting Date",
    "System Reference",
    "Line Amount SUM",
    "Vendor Name"
   ],
   "licence": "not stated",
   "notes": "Row 0 is a title ('Payments to suppliers over £500 - January 2026'), row 1 blank, header on row 2. Encoding Windows-1252. Some files have many trailing empty columns. Accounting Date DD/MM/YYYY; 'Line Amount SUM' quoted with thousands commas. Site moved to new Drupal: older months via /downloads/file/<id>/..._csv (still 200 text/csv), newer via /sites/default/files/YYYY-MM/...csv with inconsistent names ('Payments to suppliers over £500 <Month> <YYYY>' vs 'Payments over £500 [- ]<Month> <YYYY>'). Links on page are absolute; the Jan 2026 link appears twice. Old /info/20189/... landing URL now 404. Each month also has a PDF. Procurement card page: https://www.norwich.gov.uk/your-council-explained/transparency-and-accountability/find-open-data/government-procurement-card-transactions. data.gov.uk package norwich_expenditure_exceeding_500 stale (2014)."
  },
  {
   "code": "E07000178",
   "name": "Oxford",
   "status": "usable",
   "reason": null,
   "landing": "https://www.oxford.gov.uk/downloads/download/68/downloads-for-expenditure-over-500",
   "discover": {
    "kind": "page",
    "url": "https://www.oxford.gov.uk/downloads/download/68/downloads-for-expenditure-over-500",
    "linkPattern": "/downloads/file/\\d+/expenditure-over-500---\\d{8}---\\d{8}"
   },
   "files": [
    {
     "period": "2026-04..2026-06",
     "url": "https://www.oxford.gov.uk/downloads/file/4121/expenditure-over-500---01042026---30062026",
     "format": "csv"
    },
    {
     "period": "2026-01..2026-03",
     "url": "https://www.oxford.gov.uk/downloads/file/4109/expenditure-over-500---01012026---31032026",
     "format": "csv"
    },
    {
     "period": "2025-10..2025-12",
     "url": "https://www.oxford.gov.uk/downloads/file/3882/expenditure-over-500---01102025---31122025",
     "format": "csv"
    },
    {
     "period": "2025-07..2025-09",
     "url": "https://www.oxford.gov.uk/downloads/file/3833/expenditure-over-500---01072025---30092025",
     "format": "csv"
    },
    {
     "period": "2025-04..2025-06",
     "url": "https://www.oxford.gov.uk/downloads/file/3814/expenditure-over-500---01042025---30062025",
     "format": "csv"
    }
   ],
   "period": "quarterly",
   "threshold": 500,
   "headerRowIndex": 3,
   "header": [
    "Client",
    "Service Area",
    "",
    "Expenditure Catergory",
    "",
    "Expenditure Code",
    "Paid Date",
    "Trans No",
    "Amount",
    "Type of Expenditure",
    "Supplier ID",
    "Supplier Name"
   ],
   "licence": "not stated",
   "notes": "Link path encodes period as DDMMYYYY---DDMMYYYY. Download URL has no extension; served as text/csv with Content-Disposition filename Expenditure_over_500_<Mon>_<YYYY>_<Mon>_<YYYY>_REDACTED.csv. Rows 0-2: title 'Expenditure over £500', 'For the period ...', blank; header row 3 has two blank columns (3rd and 5th) and misspelling 'Catergory'. Windows-1252 (£ as 0xA3). Paid Date DD/MM/YYYY; Amount quoted with thousands commas. Trans No like '1124387 - 1'. Relative hrefs - prefix https://www.oxford.gov.uk. data.gov.uk package oxford-city-council-spending-over-500 stale (2017).",
   "columns": {
    "date": "Paid Date",
    "supplier": "Supplier Name",
    "amount": "Amount",
    "service": "Service Area",
    "expenseType": "Expenditure Catergory",
    "description": "Type of Expenditure",
    "id": "Trans No"
   }
  },
  {
   "code": "E06000065",
   "name": "North Yorkshire",
   "status": "usable",
   "reason": null,
   "landing": "https://hub.datanorthyorkshire.org/dataset/2026-2027-north-yorkshire-council-over-f500-spend-by-quarter",
   "discover": {
    "kind": "ckan",
    "base": "https://hub.datanorthyorkshire.org/api/3/action/",
    "search": "over f500 spend by quarter"
   },
   "files": [
    {
     "period": "2025-04",
     "url": "https://hub.datanorthyorkshire.org/dataset/ecaf81fc-7d8c-47da-8ef4-d5ffaf765280/resource/9dfcda00-1160-47ec-ba87-4c996f12e8a6/download/over-500-spend-for-quarter-1-april-june-2025-report-transparency-report.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-07",
     "url": "https://hub.datanorthyorkshire.org/dataset/ecaf81fc-7d8c-47da-8ef4-d5ffaf765280/resource/97959b8b-da42-4f37-b0c2-b00500788ce6/download/q2-2025-july-september-over-500-spend-report.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2025-10",
     "url": "https://hub.datanorthyorkshire.org/dataset/ecaf81fc-7d8c-47da-8ef4-d5ffaf765280/resource/7347f6dc-3187-450b-aadc-6ea1775dfafe/download/500-transparency-report-oct-dec-2025.csv",
     "format": "csv"
    },
    {
     "period": "2026-01",
     "url": "https://hub.datanorthyorkshire.org/dataset/ecaf81fc-7d8c-47da-8ef4-d5ffaf765280/resource/1ed5f17c-d31d-4aa0-bdf7-74461e210d84/download/500-transparency-report-jan-march-2026-quarter-4.xlsx",
     "format": "xlsx"
    },
    {
     "period": "2026-04",
     "url": "https://hub.datanorthyorkshire.org/dataset/c31d78bc-507c-4d33-b9e9-31f5d481d846/resource/224903b7-9ff7-45e0-9df9-7cbe97cd13bc/download/q1-2026-500-transparency-report.csv",
     "format": "csv"
    }
   ],
   "period": "quarterly",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [
    "INVOICE_ID",
    "DIRECTORATE_DESCRIPTION",
    "COST_CENTRE_DESCRIPTION",
    "SUBJECTIVE_DESCRIPTION",
    "PAYMENT_DATE",
    "INVOICE_AMOUNT",
    "SUPPLIER_NAME",
    "PROCURMENT_CATEGORY"
   ],
   "licence": "UK Open Government Licence (OGL)",
   "notes": "NOT data.gov.uk: the CKAN is the Data North Yorkshire hub (API base https://hub.datanorthyorkshire.org/api/3/action/). A NEW package is created each financial year: '2026-2027-north-yorkshire-council-over-f500-spend-by-quarter', '2025-2026-north-yorkshire-council-over-f500-spend-by-quarter', but 2024/25 is 'north-yorkshire-council-2024-2025-over-f500-spend-by-quarter' (naming not consistent), so the fetcher should use package_search?q=over%20500%20north%20yorkshire%20council&sort=metadata_modified%20desc. Quarterly files (period here = first month of the quarter; Q1 = Apr-Jun). Each quarter has a PDF plus CSV and/or XLSX (formats vary per quarter; one resource has an empty format field - use the URL extension). CSV is UTF-8 with BOM; PAYMENT_DATE like 16-APR-2026; amounts plain decimal; SUPPLIER_NAME may have a leading space; header typo 'PROCURMENT_CATEGORY' is verbatim. Q3 2025 CSV contains small bank-charge rows below £500. Curl works. data.gov.uk NYCC packages are stale.",
   "columns": {
    "date": "PAYMENT_DATE",
    "supplier": "SUPPLIER_NAME",
    "amount": "INVOICE_AMOUNT",
    "service": "DIRECTORATE_DESCRIPTION",
    "expenseType": "SUBJECTIVE_DESCRIPTION",
    "description": "COST_CENTRE_DESCRIPTION",
    "id": "INVOICE_ID"
   }
  },
  {
   "code": "S12000049",
   "name": "Glasgow City",
   "status": "not-published",
   "reason": "no spend-over-£500 / supplier-payments publication found",
   "landing": "https://www.glasgow.gov.uk/article/6924/Key-Budget-Facts-and-Figures",
   "discover": {
    "kind": "files"
   },
   "files": [],
   "period": "",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [],
   "licence": "not stated",
   "notes": "Scottish councils are not bound by the English Transparency Code. Searched glasgow.gov.uk site search (supplier payments, transparency, spend over), web search, data.gov.uk CKAN and the Glasgow Open Data Hub (data.glasgow.gov.uk ArcGIS Hub search API: no payment/spend datasets). Only budget summaries and annual accounts (PDF)."
  },
  {
   "code": "S12000036",
   "name": "City of Edinburgh",
   "status": "not-published",
   "reason": "no spend-over-£500 / supplier-payments publication found",
   "landing": "https://www.edinburgh.gov.uk/suppliers-contractors",
   "discover": {
    "kind": "files"
   },
   "files": [],
   "period": "",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [],
   "licence": "not stated",
   "notes": "Site search (/site-search/results/?q=) for payments over 500, supplier payments, expenditure, transparency found nothing; only a 'Professional services expenditure' download (https://www.edinburgh.gov.uk/downloads/download/15904/professional-services-expenditure), not transaction-level. A WhatDoTheyKnow FOI for transactions over £500 was reportedly refused. Not on data.gov.uk."
  },
  {
   "code": "S12000033",
   "name": "Aberdeen City",
   "status": "not-published",
   "reason": "no spend-over-£500 / supplier-payments publication found",
   "landing": "https://www.aberdeencity.gov.uk/services/council-and-democracy",
   "discover": {
    "kind": "files"
   },
   "files": [],
   "period": "",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [],
   "licence": "not stated",
   "notes": "Financial information and procurement section lists annual accounts, insurance and contracts register only. Old CKAN portal data.aberdeencity.gov.uk no longer resolves. aberdeencity.gov.uk is a JS single-page app (curl gets an empty shell). Only one-off FOI disclosure-log responses (e.g. FOI-19-0927 Payment to Suppliers, 2019)."
  },
  {
   "code": "S12000047",
   "name": "Fife",
   "status": "not-published",
   "reason": "no spend-over-£500 / supplier-payments publication found; site blocks curl",
   "landing": "https://www.fife.gov.uk/kb/docs/articles/about-your-council2/budgets-and-finance",
   "discover": {
    "kind": "files"
   },
   "files": [],
   "period": "",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [],
   "licence": "not stated",
   "notes": "fife.gov.uk returns 403 (bot protection) to curl and WebFetch. Web searches of fife.gov.uk show only budget briefs, annual accounts (PDF) and supplier invoicing guidance; no payments dataset. Not on data.gov.uk."
  },
  {
   "code": "S12000017",
   "name": "Highland",
   "status": "not-published",
   "reason": "no spend-over-£500 / supplier-payments publication found",
   "landing": "https://www.highland.gov.uk/information-performance-statistics/guide-information/5",
   "discover": {
    "kind": "files"
   },
   "files": [],
   "period": "",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [],
   "licence": "not stated",
   "notes": "Publication scheme Class 4 (What the council spends) lists accounting/financial reports, financial regulations, travel/subsistence, councillors' expenses, pay and grading, and funding to groups only. Open data portal (map-highland.opendata.arcgis.com) is spatial only. Not on data.gov.uk."
  },
  {
   "code": "W06000015",
   "name": "Cardiff",
   "status": "not-published",
   "reason": "not published: council says spending over £500 is available only via FOI request",
   "landing": "https://www.cardiff.gov.uk/article/2077/Annual-spending",
   "discover": {
    "kind": "files"
   },
   "files": [],
   "period": "",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [],
   "licence": "not stated",
   "notes": "Annual spending page (per search snippet) says to see spending over £500 you must make an FOI request. cardiff.gov.uk is behind Cloudflare challenge (403 'Just a moment...') for curl/WebFetch. Not on data.gov.uk."
  },
  {
   "code": "W06000011",
   "name": "Swansea",
   "status": "not-published",
   "reason": "no spend-over-£500 / supplier-payments publication found",
   "landing": "https://www.swansea.gov.uk/spend",
   "discover": {
    "kind": "files"
   },
   "files": [],
   "period": "",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [],
   "licence": "not stated",
   "notes": "'What we spend and how we spend it' page (publication scheme) links only to budget, statement of accounts, audit committee, corporate plan, member remuneration and council tax premiums. Site is behind Cloudflare; curl gets 403 intermittently (succeeded with browser UA + Accept headers after retry). Not on data.gov.uk."
  },
  {
   "code": "W06000016",
   "name": "Rhondda Cynon Taf",
   "status": "not-published",
   "reason": "no spend-over-£500 / supplier-payments publication found",
   "landing": "https://www.rctcbc.gov.uk/EN/Council/Performancebudgetsandspending/Performancebudgetsandspending..aspx",
   "discover": {
    "kind": "files"
   },
   "files": [],
   "period": "",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [],
   "licence": "not stated",
   "notes": "Performance, budgets and spending section lists council budgets, fees and charges, performance, European funding and statement of accounts only. RCT has data.gov.uk packages but only planning/environment ones, no spend data."
  },
  {
   "code": "W06000006",
   "name": "Wrexham",
   "status": "not-published",
   "reason": "no spend-over-£500 / supplier-payments publication found",
   "landing": "https://www.wrexham.gov.uk/service/finance-documents",
   "discover": {
    "kind": "files"
   },
   "files": [],
   "period": "",
   "threshold": 500,
   "headerRowIndex": 0,
   "header": [],
   "licence": "not stated",
   "notes": "Finance documents page has statements of accounts and budget books (PDF) only. The old URL /english/council/financial/council_payments.htm now redirects to /council. Not on data.gov.uk."
  }
 ]
}
