{
  "dataset": "dictionary",
  "generated": "2026-09-20T13:54:37.940Z",
  "licence": {
    "compilation": "CC BY 4.0",
    "compilation_url": "https://creativecommons.org/licenses/by/4.0/",
    "attribution": "Tariff Tracker, tarifftracker.io, published by PEF Consulting Partners Limited",
    "underlying": "The figures themselves belong to the bodies named in each dataset's sources. Most are Crown copyright under the Open Government Licence v3. Supplier tariff rates belong to the suppliers who publish them. Check the source terms before you rely on any of it commercially.",
    "corrections": "If a figure here is wrong, say so and we will correct it and record that we did."
  },
  "docs": "https://tarifftracker.io/api/",
  "fields": "https://tarifftracker.io/api/v1/dictionary",
  "as_of": null,
  "envelope": [
    {
      "name": "dataset",
      "type": "string",
      "what": "Which dataset this is, in dotted form, matching the catalogue at /api/v1."
    },
    {
      "name": "generated",
      "type": "string, ISO 8601",
      "what": "The moment you asked. Not the age of the figures."
    },
    {
      "name": "as_of",
      "type": "string, ISO 8601 or date",
      "what": "When the figures in this response were last checked against their source. This is the one that matters.",
      "null_means": "The dataset carries no single checking date, which happens only where every row carries its own."
    },
    {
      "name": "sources",
      "type": "array",
      "what": "The bodies these figures came from, named and linked. If you republish a figure, republish this with it."
    },
    {
      "name": "caveats",
      "type": "array of strings",
      "what": "Where these figures could be wrong or be misread. Part of the data, not decoration."
    },
    {
      "name": "licence",
      "type": "object",
      "what": "What you may do with the compilation, and who owns the underlying figures."
    },
    {
      "name": "count",
      "type": "number",
      "what": "How many rows follow. Present only on datasets that are tables."
    },
    {
      "name": "rows",
      "type": "array",
      "what": "The figures, one object per row. Datasets that are not tables use data instead."
    }
  ],
  "sources": [],
  "caveats": [
    "One description of every field the API serves, read by both the site and the Worker so the documentation cannot drift from the data. Where a value can be blank, null_means says which blank it is: not published, does not apply, or not collected. Those are three different facts and a bare null makes them look like one.",
    "null_means is the point of this. A blank can mean the figure has not been published, that it does not apply to that row, or that we did not collect it. Those are three different facts and a bare null makes them look like one.",
    "Every response carries the blanks for its own dataset, so you do not have to call this to read one answer. This is here for building against."
  ],
  "count": 302,
  "rows": [
    {
      "dataset": "benchmarks",
      "field": "vertical",
      "type": "string",
      "unit": null,
      "what": "The slug for this bill, which is also its address on the site and in the API.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "name",
      "type": "string",
      "unit": null,
      "what": "The bill in words.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "value",
      "type": "number",
      "unit": "GBP",
      "what": "The typical figure as a number, ready to compute with.",
      "null_means": "No primary source publishes a single typical household figure for this bill. Rail fares and NHS charges are both like this. The label says what the display figure actually measures, and inventing a household number for them would be making it up."
    },
    {
      "dataset": "benchmarks",
      "field": "currency",
      "type": "string",
      "unit": null,
      "what": "Always GBP. Present so nobody has to assume.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "period",
      "type": "string",
      "unit": null,
      "what": "What the value covers, such as a year or a month.",
      "null_means": "There is no value to attach a period to."
    },
    {
      "dataset": "benchmarks",
      "field": "display",
      "type": "string",
      "unit": null,
      "what": "The figure exactly as the site prints it, symbols and all. Use value for arithmetic and this for showing people.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "unit",
      "type": "string",
      "unit": null,
      "what": "The suffix the site prints after the figure, such as /yr.",
      "null_means": "The site prints no suffix after this figure, because it is not an amount of money over a period. Rail fares are a percentage and childcare is a count of hours."
    },
    {
      "dataset": "benchmarks",
      "field": "label",
      "type": "string",
      "unit": null,
      "what": "What the figure actually is, including the period it applies to. Read this before quoting the number.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "detail",
      "type": "string",
      "unit": null,
      "what": "The assumptions behind it, such as payment method or consumption.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "direction",
      "type": "string",
      "unit": null,
      "what": "up, down or flat against the period before.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "change",
      "type": "string",
      "unit": null,
      "what": "How much it moved and over what, as published.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "source",
      "type": "string",
      "unit": null,
      "what": "The body that set the figure.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "as_of",
      "type": "string, date",
      "unit": null,
      "what": "The date this figure took effect or was published.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page a person should read.",
      "null_means": null
    },
    {
      "dataset": "benchmarks",
      "field": "detail_api",
      "type": "string",
      "unit": null,
      "what": "Everything behind this one figure, including its own sources and caveats.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "supplier",
      "type": "string",
      "unit": null,
      "what": "The supplier's trading name.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "tariff",
      "type": "string",
      "unit": null,
      "what": "The supplier's own name for the tariff, copied rather than tidied, so it matches what is printed on a bill.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "product_code",
      "type": "string",
      "unit": null,
      "what": "The supplier's product code. Use this to join rows across fuels and regions rather than matching on the tariff name.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "region",
      "type": "string",
      "unit": null,
      "what": "One of the fourteen Great Britain electricity distribution regions. Price varies by region and this is why.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "fuel",
      "type": "string",
      "unit": null,
      "what": "electricity, gas, or dual where the same product code sells both in the same region.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "kind",
      "type": "string",
      "unit": null,
      "what": "fixed or variable.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "payment",
      "type": "string",
      "unit": null,
      "what": "Always direct debit. Standard credit costs about five and a half per cent more, and mixing the two makes one supplier look cheaper than it is, so only one basis is published.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "unit_p_kwh",
      "type": "number",
      "unit": "pence per kWh",
      "what": "The unit rate, including VAT. On a dual fuel row this is the electricity leg only, and the gas leg is in gas_unit_p_kwh.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "standing_p_day",
      "type": "number",
      "unit": "pence per day",
      "what": "The standing charge, including VAT. On a dual fuel row this is both fuels added together, because that is what the household actually pays each day.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "gas_unit_p_kwh",
      "type": "number",
      "unit": "pence per kWh",
      "what": "The gas unit rate on a dual fuel row.",
      "null_means": "Not a dual fuel row. A gas row carries its unit rate in unit_p_kwh like any other."
    },
    {
      "dataset": "energy.tariffs",
      "field": "gas_standing_p_day",
      "type": "number",
      "unit": "pence per day",
      "what": "The gas standing charge on a dual fuel row, already included in standing_p_day.",
      "null_means": "Not a dual fuel row."
    },
    {
      "dataset": "energy.tariffs",
      "field": "credit_unit_p_kwh",
      "type": "number",
      "unit": "pence per kWh",
      "what": "The same tariff's unit rate for someone paying on receipt of the bill rather than by direct debit.",
      "null_means": "Either the supplier publishes no standard credit rate for this product in this region, or the row is a dual fuel row, where we do not compute a combined credit figure."
    },
    {
      "dataset": "energy.tariffs",
      "field": "term_months",
      "type": "number",
      "unit": "months",
      "what": "How long the contract runs.",
      "null_means": "No contract length was published for this product. On a variable tariff that is expected, because there is no fixed term to publish. On a fixed tariff it means the supplier did not publish one, and your own contract is the thing to check."
    },
    {
      "dataset": "energy.tariffs",
      "field": "exit_fee_gbp",
      "type": "number",
      "unit": "GBP",
      "what": "What the supplier charges to leave early, per fuel. Zero means they publish it as free to leave. Leaving a dual fuel contract early usually means paying this twice, once for each fuel.",
      "null_means": "Not collected for this product. Contract terms are read once per product from the supplier's electricity product detail, which is the only endpoint that carries them, so a product we hold gas prices for but no electricity detail has none."
    },
    {
      "dataset": "energy.tariffs",
      "field": "exit_fee_type",
      "type": "string",
      "unit": null,
      "what": "How the supplier structures the fee. FLAT is a single amount. NONE is no fee, and pairs with an exit_fee_gbp of zero.",
      "null_means": "Not collected, for the same reason as exit_fee_gbp."
    },
    {
      "dataset": "energy.tariffs",
      "field": "annual_est_gbp",
      "type": "number",
      "unit": "GBP",
      "what": "What a full year costs at Ofgem's typical consumption: standing charge times 365 plus the unit rate times the typical kWh. This is what the rankings sort on, because a low unit rate with a high standing charge is not a cheap tariff and sorting on the unit rate alone hides that.",
      "null_means": null
    },
    {
      "dataset": "energy.tariffs",
      "field": "closes",
      "type": "string, date",
      "unit": null,
      "what": "The last day the supplier will sign anyone new onto this tariff.",
      "null_means": "The supplier has set no closing date, so it is open."
    },
    {
      "dataset": "energy.tariffs",
      "field": "source",
      "type": "string",
      "unit": null,
      "what": "Which supplier endpoint the row was read from.",
      "null_means": null
    },
    {
      "dataset": "energy.cap",
      "field": "region",
      "type": "string",
      "unit": null,
      "what": "One of the fourteen Great Britain electricity distribution regions.",
      "null_means": null
    },
    {
      "dataset": "energy.cap",
      "field": "electricity_standing_p_day",
      "type": "number",
      "unit": "pence per day",
      "what": "The capped standing charge in that region, including VAT.",
      "null_means": null
    },
    {
      "dataset": "energy.cap",
      "field": "electricity_unit_p_kwh",
      "type": "number",
      "unit": "pence per kWh",
      "what": "The capped unit rate in that region, including VAT.",
      "null_means": null
    },
    {
      "dataset": "changes",
      "field": "id",
      "type": "string",
      "unit": null,
      "what": "A stable identifier. It is also the permalink other people cite, so it does not change once published.",
      "null_means": null
    },
    {
      "dataset": "changes",
      "field": "announced",
      "type": "string, date",
      "unit": null,
      "what": "The day it was published.",
      "null_means": null
    },
    {
      "dataset": "changes",
      "field": "effective",
      "type": "string, date",
      "unit": null,
      "what": "The day it starts to cost anyone anything. Often months after it was announced, and this is the date that matters.",
      "null_means": null
    },
    {
      "dataset": "changes",
      "field": "vertical",
      "type": "string",
      "unit": null,
      "what": "Which bill it affects.",
      "null_means": null
    },
    {
      "dataset": "changes",
      "field": "severity",
      "type": "string",
      "unit": null,
      "what": "increase, decrease or neutral, from the household's point of view rather than the industry's.",
      "null_means": null
    },
    {
      "dataset": "changes",
      "field": "actor",
      "type": "string",
      "unit": null,
      "what": "Who made the change: a regulator, a government department, or a company.",
      "null_means": null
    },
    {
      "dataset": "changes",
      "field": "title",
      "type": "string",
      "unit": null,
      "what": "What happened, in one line.",
      "null_means": null
    },
    {
      "dataset": "changes",
      "field": "summary",
      "type": "string",
      "unit": null,
      "what": "What happened, with the figures.",
      "null_means": null
    },
    {
      "dataset": "changes",
      "field": "note",
      "type": "string",
      "unit": null,
      "what": "Why it matters beyond the figure.",
      "null_means": "There is nothing to add beyond the summary."
    },
    {
      "dataset": "changes",
      "field": "source",
      "type": "string",
      "unit": null,
      "what": "A link to the primary source.",
      "null_means": "No single URL covers it. These should be rare and are worth reporting."
    },
    {
      "dataset": "changes",
      "field": "source_name",
      "type": "string",
      "unit": null,
      "what": "The body that published it.",
      "null_means": null
    },
    {
      "dataset": "upcoming",
      "field": "date",
      "type": "string, date",
      "unit": null,
      "what": "When it takes effect.",
      "null_means": null
    },
    {
      "dataset": "upcoming",
      "field": "vertical",
      "type": "string",
      "unit": null,
      "what": "Which bill it affects.",
      "null_means": null
    },
    {
      "dataset": "upcoming",
      "field": "what",
      "type": "string",
      "unit": null,
      "what": "What is changing.",
      "null_means": null
    },
    {
      "dataset": "upcoming",
      "field": "kind",
      "type": "string",
      "unit": null,
      "what": "price_change where a bill is going up or down, or deadline where it is a date you have to act by, such as a qualifying week. Missing a deadline costs the same as a rise, but it is something you can do something about.",
      "null_means": null
    },
    {
      "dataset": "upcoming",
      "field": "status",
      "type": "string",
      "unit": null,
      "what": "confirmed means the date and the amount are both published. date_only means the date is set but the amount has not been announced, so anybody quoting a figure for it is guessing. expected means it is a date we know is coming, such as a statutory review window, where neither the date nor the amount has been formally confirmed.",
      "null_means": null
    },
    {
      "dataset": "upcoming",
      "field": "amount_published",
      "type": "boolean",
      "unit": null,
      "what": "Whether the figure is published as well as the date. Kept alongside status so anything already built on it keeps working.",
      "null_means": null
    },
    {
      "dataset": "upcoming",
      "field": "source",
      "type": "string",
      "unit": null,
      "what": "Who announced it.",
      "null_means": null
    },
    {
      "dataset": "lookup",
      "field": "postcode_area",
      "type": "string",
      "unit": null,
      "what": "The letters at the start, which is all the mapping needs.",
      "null_means": null
    },
    {
      "dataset": "lookup",
      "field": "outcode",
      "type": "string",
      "unit": null,
      "what": "The first half of the postcode, with the inward code stripped.",
      "null_means": null
    },
    {
      "dataset": "lookup",
      "field": "electricity_region",
      "type": "string",
      "unit": null,
      "what": "The distribution region, which sets the cap rates and the tariffs available.",
      "null_means": "We hold no region for this area. If it is a real postcode area, that is a gap worth reporting."
    },
    {
      "dataset": "lookup",
      "field": "region_straddles",
      "type": "array",
      "unit": null,
      "what": "Both regions, where a postcode area sits across a boundary. Grid supply point boundaries do not follow postcodes, and where they disagree we name both rather than pick one.",
      "null_means": "This area sits in one region."
    },
    {
      "dataset": "lookup",
      "field": "cap_electricity_standing_p_day",
      "type": "number",
      "unit": "pence per day",
      "what": "The capped standing charge for that region.",
      "null_means": "No region, so no rates."
    },
    {
      "dataset": "lookup",
      "field": "cap_electricity_unit_p_kwh",
      "type": "number",
      "unit": "pence per kWh",
      "what": "The capped unit rate for that region.",
      "null_means": "No region, so no rates."
    },
    {
      "dataset": "lookup",
      "field": "water_company",
      "type": "string",
      "unit": null,
      "what": "The water and sewerage company for the area. You cannot switch it.",
      "null_means": "Scotland, where supply is Scottish Water and is not in the England and Wales table, or an area we hold no company for."
    },
    {
      "dataset": "lookup",
      "field": "water_company_split",
      "type": "array",
      "unit": null,
      "what": "Both companies, where an area is served by two. Water boundaries follow river catchments rather than postcodes, so this is approximate by nature.",
      "null_means": "One company serves this area."
    },
    {
      "dataset": "lookup",
      "field": "water_average_bill_gbp",
      "type": "number",
      "unit": "GBP",
      "what": "That company's average household bill for the year.",
      "null_means": "No company, so no bill. Scottish charges are set differently and are not in this table."
    },
    {
      "dataset": "lookup",
      "field": "scotland",
      "type": "boolean",
      "unit": null,
      "what": "Whether the area is in Scotland, where water and some other charges work differently.",
      "null_means": null
    },
    {
      "dataset": "lookup",
      "field": "council_tax_band_ratios",
      "type": "object",
      "unit": null,
      "what": "The statutory ratio of each band to band D. Multiply your council's band D charge by your band's ratio. The ratios are fixed in law; the band D charge is set by the council.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "slug",
      "type": "string",
      "unit": null,
      "what": "The country's address on the site.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "name",
      "type": "string",
      "unit": null,
      "what": "The country.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "code",
      "type": "string",
      "unit": null,
      "what": "The two letter country code.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "region",
      "type": "string",
      "unit": null,
      "what": "Which part of the world.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "inbound_headline_pct",
      "type": "number",
      "unit": "per cent",
      "what": "The highest duty layer charged on goods entering the United States from this country. It is a ceiling, not an average, and most trade moves at a lower rate.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "inbound_label",
      "type": "string",
      "unit": null,
      "what": "How that headline should be read in words, such as up to fifty per cent.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "inbound_layers",
      "type": "array",
      "unit": null,
      "what": "Each measure separately: its legal authority, its rate, what it covers and when it started.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "outbound_headline_pct",
      "type": "number",
      "unit": "per cent",
      "what": "The highest duty that country charges on goods from the United States.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "outbound_label",
      "type": "string",
      "unit": null,
      "what": "The same in words.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "outbound_layers",
      "type": "array",
      "unit": null,
      "what": "Each retaliatory or ordinary measure separately.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "summary",
      "type": "string",
      "unit": null,
      "what": "What is actually going on in this corridor.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "notes",
      "type": "array of strings",
      "unit": null,
      "what": "Detail that does not fit a rate: support packages, carve outs, disputes.",
      "null_means": null
    },
    {
      "dataset": "trade.corridors",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page for this corridor.",
      "null_means": null
    },
    {
      "dataset": "trade.programmes",
      "field": "authority",
      "type": "string",
      "unit": null,
      "what": "The statutory section the programme runs under.",
      "null_means": null
    },
    {
      "dataset": "trade.programmes",
      "field": "authority_name",
      "type": "string",
      "unit": null,
      "what": "That section in words.",
      "null_means": "The authority code is not one of the ones we hold a definition for."
    },
    {
      "dataset": "trade.programmes",
      "field": "legal_basis",
      "type": "string",
      "unit": null,
      "what": "The Act it comes from.",
      "null_means": "Same as above."
    },
    {
      "dataset": "trade.programmes",
      "field": "grounds",
      "type": "string",
      "unit": null,
      "what": "The legal ground claimed, such as national security.",
      "null_means": "Same as above."
    },
    {
      "dataset": "trade.programmes",
      "field": "title",
      "type": "string",
      "unit": null,
      "what": "What the programme covers.",
      "null_means": null
    },
    {
      "dataset": "trade.programmes",
      "field": "rate",
      "type": "string",
      "unit": null,
      "what": "The general rate. Variations name who pays something else.",
      "null_means": null
    },
    {
      "dataset": "trade.programmes",
      "field": "status",
      "type": "string",
      "unit": null,
      "what": "The legal state of the programme: in force, active, phasing, expired or struck down. This vocabulary is the United States government's, not ours.",
      "null_means": "No status is recorded."
    },
    {
      "dataset": "trade.programmes",
      "field": "in_force_from",
      "type": "string, date",
      "unit": null,
      "what": "When it started.",
      "null_means": "No start date is recorded."
    },
    {
      "dataset": "trade.programmes",
      "field": "note",
      "type": "string",
      "unit": null,
      "what": "What the rate does not tell you.",
      "null_means": "There is nothing to add."
    },
    {
      "dataset": "trade.programmes",
      "field": "variations",
      "type": "array",
      "unit": null,
      "what": "Who is charged something other than the general rate, and why.",
      "null_means": null
    },
    {
      "dataset": "trade.changes",
      "field": "id",
      "type": "string",
      "unit": null,
      "what": "A stable identifier.",
      "null_means": "The row is a scheduled measure rather than a logged change, and has no permalink yet."
    },
    {
      "dataset": "trade.changes",
      "field": "announced",
      "type": "string, date",
      "unit": null,
      "what": "When it was announced.",
      "null_means": "The row is scheduled: we hold the date it takes effect but not the day it was announced."
    },
    {
      "dataset": "trade.changes",
      "field": "effective",
      "type": "string, date",
      "unit": null,
      "what": "When it takes effect. Announced is not the same as in force, and neither is the same as collected.",
      "null_means": null
    },
    {
      "dataset": "trade.changes",
      "field": "actor",
      "type": "string",
      "unit": null,
      "what": "Who imposed it.",
      "null_means": null
    },
    {
      "dataset": "trade.changes",
      "field": "target",
      "type": "string",
      "unit": null,
      "what": "Who it is aimed at.",
      "null_means": "It applies by product worldwide rather than at one country."
    },
    {
      "dataset": "trade.changes",
      "field": "direction",
      "type": "string",
      "unit": null,
      "what": "Which way it runs, or scheduled where it has been announced but is not yet in force.",
      "null_means": null
    },
    {
      "dataset": "trade.changes",
      "field": "authority",
      "type": "string",
      "unit": null,
      "what": "The legal authority used.",
      "null_means": "None recorded."
    },
    {
      "dataset": "trade.changes",
      "field": "severity",
      "type": "string",
      "unit": null,
      "what": "increase, decrease or neutral.",
      "null_means": "The row is scheduled and has not been assessed."
    },
    {
      "dataset": "trade.changes",
      "field": "title",
      "type": "string",
      "unit": null,
      "what": "What happened, in one line.",
      "null_means": null
    },
    {
      "dataset": "trade.changes",
      "field": "summary",
      "type": "string",
      "unit": null,
      "what": "What happened, with the figures.",
      "null_means": null
    },
    {
      "dataset": "sources",
      "field": "dataset",
      "type": "string",
      "unit": null,
      "what": "Which dataset relies on it.",
      "null_means": null
    },
    {
      "dataset": "sources",
      "field": "name",
      "type": "string",
      "unit": null,
      "what": "The publication, named as its publisher names it.",
      "null_means": null
    },
    {
      "dataset": "sources",
      "field": "url",
      "type": "string",
      "unit": null,
      "what": "Where to check it yourself.",
      "null_means": "The source has no stable public URL. Rare, and worth telling us about."
    },
    {
      "dataset": "support",
      "field": "id",
      "type": "string",
      "unit": null,
      "what": "A stable identifier, also the anchor for this scheme on the help page.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "name",
      "type": "string",
      "unit": null,
      "what": "What the scheme is called by the body that runs it.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "group",
      "type": "string",
      "unit": null,
      "what": "Which bill or theme it sits under: gateway, energy, water, counciltax, broadband, nhs, childcare, tvlicence, travel or debt.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "amount",
      "type": "string",
      "unit": null,
      "what": "What you get, in the form the scheme itself states it. Some are a fixed sum, some are a cap or a percentage, and some are protection rather than money.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "amount_note",
      "type": "string",
      "unit": null,
      "what": "What that amount actually means, including whether it is paid to you or credited to an account.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "administered_by",
      "type": "string",
      "unit": null,
      "what": "Who decides and who pays. This matters because it tells you who to argue with.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "status",
      "type": "string",
      "unit": null,
      "what": "open, closed, seasonal or proposed. A closed scheme is one nobody can apply to right now.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "status_note",
      "type": "string",
      "unit": null,
      "what": "The status in words, including when a closed scheme reopens.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "england",
      "type": "string",
      "unit": null,
      "what": "yes, different, no or unknown. different means the scheme exists there but under other rules.",
      "null_means": "Never blank. Where we do not know, the value is the string unknown rather than a null."
    },
    {
      "dataset": "support",
      "field": "wales",
      "type": "string",
      "unit": null,
      "what": "Whether it applies in Wales, on the same four values.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "scotland",
      "type": "string",
      "unit": null,
      "what": "Whether it applies in Scotland, on the same four values.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "northern_ireland",
      "type": "string",
      "unit": null,
      "what": "Whether it applies in Northern Ireland, on the same four values.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "nations_note",
      "type": "string",
      "unit": null,
      "what": "What the differences between the nations actually are.",
      "null_means": "The scheme works the same way everywhere it applies."
    },
    {
      "dataset": "support",
      "field": "eligibility",
      "type": "array of strings",
      "unit": null,
      "what": "The conditions, written so somebody can read them and know whether they qualify. This is the substance of the record, not a summary of it.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "how_to_claim",
      "type": "string",
      "unit": null,
      "what": "What you actually do, including where a scheme is automatic and there is nothing to do.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "apply_at",
      "type": "string",
      "unit": null,
      "what": "The official page to apply or find out more.",
      "null_means": "No single official page covers it."
    },
    {
      "dataset": "support",
      "field": "deadline",
      "type": "string, date",
      "unit": null,
      "what": "A qualifying date or window that decides whether you get anything.",
      "null_means": "The scheme is open all year with no dated cut off."
    },
    {
      "dataset": "support",
      "field": "deadline_what",
      "type": "string",
      "unit": null,
      "what": "What that date actually decides.",
      "null_means": "There is no deadline."
    },
    {
      "dataset": "support",
      "field": "worth_knowing",
      "type": "array of strings",
      "unit": null,
      "what": "The things that catch people out: what a scheme does not cover, why people are refused, and how much goes unclaimed.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "changing",
      "type": "string",
      "unit": null,
      "what": "A rule that is confirmed but not yet in force, with what changes and when.",
      "null_means": "Nothing announced is due to change."
    },
    {
      "dataset": "support",
      "field": "unverified",
      "type": "array of strings",
      "unit": null,
      "what": "What could not be checked against a primary source, and is therefore deliberately absent from this record. An empty array means everything here was verified.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "situations",
      "type": "array of strings",
      "unit": null,
      "what": "Who it is for, from a fixed list: benefits, pension, disability, children, carer, lowincome, arrears, prepay, renting, student.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "sources",
      "type": "array",
      "unit": null,
      "what": "The government, regulator or scheme operator pages each fact was checked against.",
      "null_means": null
    },
    {
      "dataset": "support",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The section of the help page covering this scheme.",
      "null_means": null
    },
    {
      "dataset": "watch",
      "field": "id",
      "type": "string",
      "unit": null,
      "what": "A stable identifier for the watched source.",
      "null_means": null
    },
    {
      "dataset": "watch",
      "field": "name",
      "type": "string",
      "unit": null,
      "what": "The page in words.",
      "null_means": null
    },
    {
      "dataset": "watch",
      "field": "url",
      "type": "string",
      "unit": null,
      "what": "The exact address being watched.",
      "null_means": "The source has not been read yet, so nothing is stored about it."
    },
    {
      "dataset": "watch",
      "field": "feeds",
      "type": "string",
      "unit": null,
      "what": "Which parts of the site depend on this source.",
      "null_means": null
    },
    {
      "dataset": "watch",
      "field": "note",
      "type": "string",
      "unit": null,
      "what": "Why this source is watched the way it is, where that needs explaining. Some pages render their figures with JavaScript, some keep them in a PDF, and one refuses automated requests entirely. Saying which is better than a number that looks fine and means nothing.",
      "null_means": "The page states its figures in plain HTML and there is nothing to explain."
    },
    {
      "dataset": "watch",
      "field": "last_checked",
      "type": "string, ISO 8601",
      "unit": null,
      "what": "When we last read the page.",
      "null_means": "Never read. A source added since the last morning run looks like this until it comes round."
    },
    {
      "dataset": "watch",
      "field": "last_changed",
      "type": "string, ISO 8601",
      "unit": null,
      "what": "When a figure on the page last moved.",
      "null_means": "Nothing has moved since we started watching, which for a recently added source means we have only one reading to compare against."
    },
    {
      "dataset": "watch",
      "field": "figures_tracked",
      "type": "number",
      "unit": null,
      "what": "How many distinct money amounts, percentages, pence rates and dates were found on the page. A sudden drop to zero usually means the page stopped loading rather than that the figures went.",
      "null_means": null
    },
    {
      "dataset": "watch",
      "field": "status",
      "type": "string",
      "unit": null,
      "what": "ok, or the reason the page could not be read. Some government sites refuse automated requests and that is recorded rather than treated as no change.",
      "null_means": null
    },
    {
      "dataset": "watch",
      "field": "health",
      "type": "string",
      "unit": null,
      "what": "Whether this source is actually being watched. A page we can read but which carries no figures is worse than one we cannot read, because it looks fine and can never fire. That usually means the page renders its numbers with JavaScript, which a plain fetch does not run.",
      "null_means": null
    },
    {
      "dataset": "energy.cap_history",
      "field": "region",
      "type": "string",
      "unit": null,
      "what": "One of the fourteen Great Britain distribution regions, or Great Britain average. Ofgem's own internal names are mapped to the ones used everywhere else on this site.",
      "null_means": null
    },
    {
      "dataset": "energy.cap_history",
      "field": "payment",
      "type": "string",
      "unit": null,
      "what": "direct debit, standard credit or prepayment. The three are meaningfully different and mixing them makes one look cheaper than it is.",
      "null_means": null
    },
    {
      "dataset": "energy.cap_history",
      "field": "period_start",
      "type": "string, date",
      "unit": null,
      "what": "The first day the capped rates applied.",
      "null_means": null
    },
    {
      "dataset": "energy.cap_history",
      "field": "period_end",
      "type": "string, date",
      "unit": null,
      "what": "The last day they applied. Early cap periods were six months long; they became quarterly in 2022.",
      "null_means": null
    },
    {
      "dataset": "energy.cap_history",
      "field": "electricity_standing_p_day",
      "type": "number",
      "unit": "pence per day",
      "what": "The capped electricity standing charge, single rate meter, including VAT.",
      "null_means": "Ofgem's file has no figure in that cell for that region, period and payment method."
    },
    {
      "dataset": "energy.cap_history",
      "field": "electricity_unit_p_kwh",
      "type": "number",
      "unit": "pence per kWh",
      "what": "The capped electricity unit rate, single rate meter, including VAT.",
      "null_means": "No figure published for that combination."
    },
    {
      "dataset": "energy.cap_history",
      "field": "gas_standing_p_day",
      "type": "number",
      "unit": "pence per day",
      "what": "The capped gas standing charge, including VAT.",
      "null_means": "No figure published for that combination."
    },
    {
      "dataset": "energy.cap_history",
      "field": "gas_unit_p_kwh",
      "type": "number",
      "unit": "pence per kWh",
      "what": "The capped gas unit rate, including VAT.",
      "null_means": "No figure published for that combination."
    },
    {
      "dataset": "energy.cap_history",
      "field": "economy7_standing_p_day",
      "type": "number",
      "unit": "pence per day",
      "what": "The capped standing charge for a multi rate or Economy 7 meter.",
      "null_means": "No figure published for that combination."
    },
    {
      "dataset": "energy.cap_history",
      "field": "economy7_unit_p_kwh",
      "type": "number",
      "unit": "pence per kWh",
      "what": "The capped unit rate for a multi rate or Economy 7 meter. This is a single blended figure, not the separate day and night rates.",
      "null_means": "No figure published for that combination."
    },
    {
      "dataset": "broadband.deals",
      "field": "provider",
      "type": "string",
      "unit": null,
      "what": "The provider.",
      "null_means": null
    },
    {
      "dataset": "broadband.deals",
      "field": "package",
      "type": "string",
      "unit": null,
      "what": "The package name as advertised.",
      "null_means": null
    },
    {
      "dataset": "broadband.deals",
      "field": "speed",
      "type": "string",
      "unit": null,
      "what": "The advertised average download speed.",
      "null_means": null
    },
    {
      "dataset": "broadband.deals",
      "field": "advertised_monthly_gbp",
      "type": "number",
      "unit": "GBP",
      "what": "The price on the advert. The least useful number on the row, and the one every other site leads with.",
      "null_means": null
    },
    {
      "dataset": "broadband.deals",
      "field": "term_months",
      "type": "number",
      "unit": "months",
      "what": "How long you are tied in.",
      "null_means": null
    },
    {
      "dataset": "broadband.deals",
      "field": "annual_rise_gbp",
      "type": "number",
      "unit": "GBP",
      "what": "The April rise the provider has already published, in pounds. Since January 2025 Ofcom requires new contracts to state rises in pounds and pence up front rather than as an inflation formula. Zero means the provider has published no rise.",
      "null_means": "The provider has not published a rise figure we could verify."
    },
    {
      "dataset": "broadband.deals",
      "field": "final_monthly_gbp",
      "type": "number",
      "unit": "GBP",
      "what": "What you are paying in the last month of the contract, after every scheduled rise.",
      "null_means": null
    },
    {
      "dataset": "broadband.deals",
      "field": "contract_total_gbp",
      "type": "number",
      "unit": "GBP",
      "what": "Everything you pay across the whole term, rises included. Setup and activation fees are not in it.",
      "null_means": null
    },
    {
      "dataset": "broadband.deals",
      "field": "true_monthly_average_gbp",
      "type": "number",
      "unit": "GBP",
      "what": "The contract total divided by its length. This is what the ranking sorts on, because it is what the package actually costs a month.",
      "null_means": null
    },
    {
      "dataset": "broadband.deals",
      "field": "note",
      "type": "string",
      "unit": null,
      "what": "Anything about this deal worth knowing before signing.",
      "null_means": "There is nothing to add."
    },
    {
      "dataset": "water.charges",
      "field": "id",
      "type": "string",
      "unit": null,
      "what": "The slug for this company or charging region. Companies that charge differently in different parts of their own area get one row per area.",
      "null_means": null
    },
    {
      "dataset": "water.charges",
      "field": "company",
      "type": "string",
      "unit": null,
      "what": "The company as it names itself.",
      "null_means": null
    },
    {
      "dataset": "water.charges",
      "field": "region",
      "type": "string",
      "unit": null,
      "what": "The charging area inside that company, where it has more than one.",
      "null_means": "This company charges one set of rates across its whole area."
    },
    {
      "dataset": "water.charges",
      "field": "services",
      "type": "string",
      "unit": null,
      "what": "Either water and sewerage, or water only.",
      "null_means": null
    },
    {
      "dataset": "water.charges",
      "field": "sewerage_billed_by",
      "type": "string",
      "unit": null,
      "what": "For a water only company, who bills the sewerage on top.",
      "null_means": "This company does your sewerage itself."
    },
    {
      "dataset": "water.charges",
      "field": "year",
      "type": "string",
      "unit": null,
      "what": "The charging year these rates are in force for, running from 1 April.",
      "null_means": null
    },
    {
      "dataset": "water.charges",
      "field": "water_p_m3",
      "type": "number",
      "unit": "GBP per cubic metre",
      "what": "What a cubic metre of water costs. Some schemes print this in pence and it is converted here, which is recorded in that company's notes.",
      "null_means": "The company's scheme could not be read, so nothing is published rather than estimated."
    },
    {
      "dataset": "water.charges",
      "field": "water_standing_yr",
      "type": "number",
      "unit": "GBP per year",
      "what": "The fixed water charge for a year, whatever you use.",
      "null_means": "Not published as a separate figure by this company."
    },
    {
      "dataset": "water.charges",
      "field": "water_standing_note",
      "type": "string",
      "unit": null,
      "what": "Which meter sizes that standing charge covers, and what the larger sizes cost.",
      "null_means": "The scheme prints one standing charge and does not break it down by meter size."
    },
    {
      "dataset": "water.charges",
      "field": "sewerage_p_m3",
      "type": "number",
      "unit": "GBP per cubic metre",
      "what": "What a cubic metre of sewerage costs, on the ordinary tariff for a property that drains surface water to the sewer.",
      "null_means": "Either this is a water only company, in which case sewerage_billed_by names who charges you, or the company recovers sewerage entirely through fixed charges."
    },
    {
      "dataset": "water.charges",
      "field": "sewerage_standing_yr",
      "type": "number",
      "unit": "GBP per year",
      "what": "The fixed sewerage charge for a year.",
      "null_means": "Either this is a water only company, or the company does not levy one."
    },
    {
      "dataset": "water.charges",
      "field": "sewerage_p_m3_no_surface_water",
      "type": "number",
      "unit": "GBP per cubic metre",
      "what": "The alternative rate for a property that drains no surface water to the public sewer, where the company publishes one.",
      "null_means": "This company does not vary its volumetric rate by surface water drainage. Several vary the standing charge instead, and some bill surface water as a separate line."
    },
    {
      "dataset": "water.charges",
      "field": "sewerage_standing_yr_no_surface_water",
      "type": "number",
      "unit": "GBP per year",
      "what": "The alternative sewerage standing charge where the property drains no surface water to the sewer.",
      "null_means": "This company does not publish a reduced standing charge for that case."
    },
    {
      "dataset": "water.charges",
      "field": "surface_water_yr",
      "type": "number",
      "unit": "GBP per year",
      "what": "Surface water drainage, where the company bills it as a separate annual line.",
      "null_means": "This company does not bill surface water separately. It is inside the sewerage standing charge or the volumetric rate, which the company's notes explain."
    },
    {
      "dataset": "water.charges",
      "field": "highway_drainage_yr",
      "type": "number",
      "unit": "GBP per year",
      "what": "Highway drainage, where the company bills it as a separate annual line.",
      "null_means": "Not billed as an annual figure here. Some companies fold it into the sewerage charge and at least one charges it by the cubic metre instead."
    },
    {
      "dataset": "water.charges",
      "field": "unmetered_rv_water",
      "type": "number",
      "unit": "GBP per GBP of rateable value",
      "what": "The water charge per pound of the property's 1973 rateable value, for a household with no meter.",
      "null_means": "Either the company sets this by charging area rather than publishing one figure, in which case its notes give the range, or it charges a flat fee instead of a rateable value rate."
    },
    {
      "dataset": "water.charges",
      "field": "unmetered_rv_sewerage",
      "type": "number",
      "unit": "GBP per GBP of rateable value",
      "what": "The sewerage charge per pound of rateable value.",
      "null_means": "This is a water only company, or the company charges sewerage another way."
    },
    {
      "dataset": "water.charges",
      "field": "unmetered_fixed_water_yr",
      "type": "number",
      "unit": "GBP per year",
      "what": "The fixed water charge an unmetered household pays on top of the rateable value amount.",
      "null_means": "The scheme says there is none. That is an absence stated by the company, not a gap in our reading, and at least one company says so in terms."
    },
    {
      "dataset": "water.charges",
      "field": "unmetered_fixed_sewerage_yr",
      "type": "number",
      "unit": "GBP per year",
      "what": "The fixed sewerage charge for an unmetered household.",
      "null_means": "This is a water only company, or the company puts it inside the water standing charge."
    },
    {
      "dataset": "water.charges",
      "field": "unmetered_minimum_yr",
      "type": "number",
      "unit": "GBP per year",
      "what": "The least an unmetered household can be charged for its water, whatever the rateable value works out at. It floors the water element only, not the whole bill: every scheme that publishes one says so in terms, and applying it to the total would overcharge anybody whose sewerage already carries them past it.",
      "null_means": "This company does not publish a minimum."
    },
    {
      "dataset": "water.charges",
      "field": "assessed",
      "type": "array",
      "unit": null,
      "what": "The assessed charges, for a household that cannot have a meter fitted. Each entry is the company's own label with the water and sewerage amounts. Companies label these completely differently, some by occupants, some by bedrooms, some by property type, so the labels are kept exactly as printed rather than forced into a common shape.",
      "null_means": null
    },
    {
      "dataset": "water.charges",
      "field": "readings",
      "type": "number",
      "unit": "count",
      "what": "How many separate readings of the source document returned this company's figures identically. Two is the floor for publishing anything.",
      "null_means": null
    },
    {
      "dataset": "water.charges",
      "field": "unverified",
      "type": "array",
      "unit": null,
      "what": "What two readings disagreed on, or what the scheme leaves genuinely unclear. Those figures are absent above rather than guessed. This field is the point of the dataset.",
      "null_means": null
    },
    {
      "dataset": "water.charges",
      "field": "notes",
      "type": "array",
      "unit": null,
      "what": "How this company's scheme is built, and the things that are easy to read wrongly.",
      "null_means": null
    },
    {
      "dataset": "water.charges",
      "field": "source",
      "type": "string",
      "unit": null,
      "what": "The charges scheme these figures were read from.",
      "null_means": null
    },
    {
      "dataset": "water.charges",
      "field": "source_title",
      "type": "string",
      "unit": null,
      "what": "What that document calls itself.",
      "null_means": null
    },
    {
      "dataset": "water.charges",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on the site that shows this, with the arithmetic.",
      "null_means": null
    },
    {
      "dataset": "heat.networks",
      "field": "protection",
      "type": "string",
      "unit": null,
      "what": "The rule, in short.",
      "null_means": null
    },
    {
      "dataset": "heat.networks",
      "field": "detail",
      "type": "string",
      "unit": null,
      "what": "What it actually requires of your supplier, in enough detail to hold them to it.",
      "null_means": null
    },
    {
      "dataset": "heat.networks",
      "field": "status",
      "type": "string",
      "unit": null,
      "what": "One of in force, coming confirmed, coming not firmly dated, coming not dated, or not proposed with a date.",
      "null_means": null
    },
    {
      "dataset": "heat.networks",
      "field": "in_force",
      "type": "boolean",
      "unit": null,
      "what": "True where the rule applies today. A convenience so nothing has to parse the status string.",
      "null_means": null
    },
    {
      "dataset": "heat.networks",
      "field": "from",
      "type": "string",
      "unit": "ISO date",
      "what": "The date it started, or starts.",
      "null_means": "Genuinely undated. Two of the things still to come have no commencement date published anywhere, and naming that is better than picking a year."
    },
    {
      "dataset": "heat.networks",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on the site that sets this out with its sources.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "id",
      "type": "string",
      "unit": null,
      "what": "The slug for this scheme.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "scheme",
      "type": "string",
      "unit": null,
      "what": "What the operator calls it.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "nations",
      "type": "array",
      "unit": null,
      "what": "Which of the four nations it covers. This is the biggest single filter, and Northern Ireland is outside every Great Britain scheme.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "status",
      "type": "string",
      "unit": null,
      "what": "open, closed, not open yet, or landlord only.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "open",
      "type": "boolean",
      "unit": null,
      "what": "True where a household can apply today. A convenience so nothing has to parse the status string.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "in_short",
      "type": "string",
      "unit": null,
      "what": "One plain line on whether it is open and what that means in practice.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "opens",
      "type": "string",
      "unit": "ISO date",
      "what": "When a scheme that is not open yet is due to start.",
      "null_means": "Either it is already open or closed, or no start date has been published. Two of these are announced with no date at all."
    },
    {
      "dataset": "home.upgrades",
      "field": "closes",
      "type": "string",
      "unit": "ISO date",
      "what": "The last date it runs, or the date it closed.",
      "null_means": "No closing date is published. The Boiler Upgrade Scheme is like this: it is funded to 2030 but no primary source gives a final day."
    },
    {
      "dataset": "home.upgrades",
      "field": "what_it_pays_for",
      "type": "string",
      "unit": null,
      "what": "The measures funded, and any cap, as the operator publishes them.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "amounts",
      "type": "array",
      "unit": null,
      "what": "Named grant amounts where the scheme publishes them, each with a note on what it applies to.",
      "null_means": "This scheme does not publish fixed amounts. Most of them do not: what you get is whatever the survey says the home needs."
    },
    {
      "dataset": "home.upgrades",
      "field": "who_runs_it",
      "type": "string",
      "unit": null,
      "what": "Who sets it, who polices it and who delivers it, which are often three different bodies.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "who_applies",
      "type": "string",
      "unit": null,
      "what": "Whether the household, the installer, the landlord or the council applies. Getting this wrong is the commonest reason people never get anywhere.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "how_to_apply",
      "type": "string",
      "unit": null,
      "what": "The actual first step, with the number to ring where there is one.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "apply_url",
      "type": "string",
      "unit": null,
      "what": "Where to start.",
      "null_means": "There is nothing to apply for, because the scheme is closed or not open yet."
    },
    {
      "dataset": "home.upgrades",
      "field": "phone",
      "type": "string",
      "unit": null,
      "what": "A free number for the scheme or its advice service.",
      "null_means": "No phone route published for this one."
    },
    {
      "dataset": "home.upgrades",
      "field": "conditions",
      "type": "array",
      "unit": null,
      "what": "The eligibility as testable rules. Each names a key from questions, the answers that pass, a label saying what is being tested, and fail, the sentence to show a household when this is the condition ruling them out. A key of _any_of holds sub conditions of which any one is enough.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "qualifying_benefits",
      "type": "array",
      "unit": null,
      "what": "The benefits that open this scheme, verbatim. The lists differ between schemes and the differences matter: Child Benefit counts for ECO4 and not for the Warm Homes: Local Grant.",
      "null_means": "This scheme does not use a benefits test. Three of them do not, which is worth knowing."
    },
    {
      "dataset": "home.upgrades",
      "field": "also_true",
      "type": "array",
      "unit": null,
      "what": "Conditions that are real but that a checker cannot test, such as a council having published a statement of intent.",
      "null_means": "Nothing beyond the testable conditions."
    },
    {
      "dataset": "home.upgrades",
      "field": "unverified",
      "type": "array",
      "unit": null,
      "what": "What could not be stood up from the operator's own pages, including caps published two different ways and schemes with no closing date.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "sources",
      "type": "array",
      "unit": null,
      "what": "The operator pages each rule was read from.",
      "null_means": null
    },
    {
      "dataset": "home.upgrades",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on the site that runs these rules as a checker.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "id",
      "type": "string",
      "unit": null,
      "what": "The slug for this register.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "register",
      "type": "string",
      "unit": null,
      "what": "What it calls itself.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "kind",
      "type": "string",
      "unit": null,
      "what": "Whether it is the law, a grant gateway, a quality scheme, a sales code, or not accreditation at all.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "what",
      "type": "string",
      "unit": null,
      "what": "What the body actually is and does, including who does the vetting, which is often not the body whose name is on the badge.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "search_url",
      "type": "string",
      "unit": null,
      "what": "The public search page.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "searchable_from_a_link",
      "type": "boolean",
      "unit": null,
      "what": "True only for Companies House. Every other register builds its search in the browser and ignores anything in the address.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "how_to_search",
      "type": "string",
      "unit": null,
      "what": "What to type and what to look at once you are there.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "number_name",
      "type": "string",
      "unit": null,
      "what": "What the register calls its identifier.",
      "null_means": "This body does not publish a public identifier format."
    },
    {
      "dataset": "installer.checks",
      "field": "number_shape",
      "type": "string",
      "unit": null,
      "what": "The format, where it is published.",
      "null_means": "Not published. Two of these bodies publish no format, so a number matching nothing is not evidence on its own."
    },
    {
      "dataset": "installer.checks",
      "field": "number_note",
      "type": "string",
      "unit": null,
      "what": "The trap in that format, such as a number that is reissued annually.",
      "null_means": "No trap worth recording."
    },
    {
      "dataset": "installer.checks",
      "field": "guaranteed",
      "type": "array",
      "unit": null,
      "what": "What registration actually does mean.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "does_not_guarantee",
      "type": "array",
      "unit": null,
      "what": "What it does not mean. The reason this dataset exists.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "how_people_get_caught",
      "type": "array",
      "unit": null,
      "what": "What the register operator itself warns about.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "sources",
      "type": "array",
      "unit": null,
      "what": "The operator pages this was read from.",
      "null_means": null
    },
    {
      "dataset": "installer.checks",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on the site that runs this as a tool.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "nation",
      "type": "string",
      "unit": null,
      "what": "england, wales or scotland. Northern Ireland has no bands, so its rates system is in the response body, not the rows.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "authority",
      "type": "string",
      "unit": null,
      "what": "The billing authority that sends the bill.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "ons_code",
      "type": "string",
      "unit": null,
      "what": "The ONS geography code for the authority.",
      "null_means": "Only published for England in the source tables."
    },
    {
      "dataset": "council.tax",
      "field": "region",
      "type": "string",
      "unit": null,
      "what": "The English region.",
      "null_means": "Only meaningful for England."
    },
    {
      "dataset": "council.tax",
      "field": "class",
      "type": "string",
      "unit": null,
      "what": "What kind of authority this is: London borough, metropolitan district, unitary, or shire district.",
      "null_means": "Only meaningful for England."
    },
    {
      "dataset": "council.tax",
      "field": "county",
      "type": "string",
      "unit": null,
      "what": "The county area the authority sits in.",
      "null_means": "Only meaningful for England."
    },
    {
      "dataset": "council.tax",
      "field": "band_a",
      "type": "number",
      "unit": "£ a year",
      "what": "The area charge for a band A home, the whole stack of precepts.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "band_b",
      "type": "number",
      "unit": "£ a year",
      "what": "The area charge for band B.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "band_c",
      "type": "number",
      "unit": "£ a year",
      "what": "The area charge for band C.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "band_d",
      "type": "number",
      "unit": "£ a year",
      "what": "The area charge for band D, the reference band every average is quoted in.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "band_e",
      "type": "number",
      "unit": "£ a year",
      "what": "The area charge for band E.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "band_f",
      "type": "number",
      "unit": "£ a year",
      "what": "The area charge for band F.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "band_g",
      "type": "number",
      "unit": "£ a year",
      "what": "The area charge for band G.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "band_h",
      "type": "number",
      "unit": "£ a year",
      "what": "The area charge for band H, twice band D everywhere but Scotland, where the 2017 multiplier made it 245 per cent.",
      "null_means": null
    },
    {
      "dataset": "council.tax",
      "field": "band_i",
      "type": "number",
      "unit": "£ a year",
      "what": "The area charge for band I.",
      "null_means": "Only Wales has a band I. Everywhere else this is empty by law, not by omission."
    },
    {
      "dataset": "council.tax",
      "field": "own_element_band_d",
      "type": "number",
      "unit": "£ a year",
      "what": "How much of the band D bill is the billing authority's own charge, including parish precepts averaged across its area. The rest is county, police, fire and, in London, the GLA.",
      "null_means": "Only published for England."
    },
    {
      "dataset": "council.tax",
      "field": "adult_social_care_element",
      "type": "number",
      "unit": "£ a year",
      "what": "The part of the band D bill raised under the adult social care precept flexibility.",
      "null_means": "Only published for England, and some authorities have never used the flexibility."
    },
    {
      "dataset": "council.tax",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on this site where these figures live, with the lookup.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "ref",
      "type": "string",
      "unit": null,
      "what": "The tribunal's own case reference. MNR references are challenges under the old section 13 route, MRA the new one.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "area",
      "type": "string",
      "unit": null,
      "what": "Where the property is, to outcode level.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "property",
      "type": "string",
      "unit": null,
      "what": "What was let, as the decision describes it.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "decided",
      "type": "date",
      "unit": null,
      "what": "The date of the decision.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "notice_date",
      "type": "date",
      "unit": null,
      "what": "The date on the landlord's rent increase notice, which decides which law applies.",
      "null_means": "The decision does not state it."
    },
    {
      "dataset": "rent.tribunal",
      "field": "current",
      "type": "number",
      "unit": "£",
      "what": "The rent being paid when the case started, per the period in per.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "proposed",
      "type": "number",
      "unit": "£",
      "what": "What the landlord's notice asked for.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "determined",
      "type": "number",
      "unit": "£",
      "what": "What the tribunal set.",
      "null_means": "The application was struck out, so no rent was determined."
    },
    {
      "dataset": "rent.tribunal",
      "field": "per",
      "type": "string",
      "unit": null,
      "what": "week or month, the period every money figure in the row is quoted in.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "effective",
      "type": "date",
      "unit": null,
      "what": "The date the determined rent runs from.",
      "null_means": "Struck out, so there is nothing to take effect."
    },
    {
      "dataset": "rent.tribunal",
      "field": "regime",
      "type": "string",
      "unit": null,
      "what": "old for notices before 1 May 2026, new for the capped regime after it, or struck out.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "method",
      "type": "string",
      "unit": null,
      "what": "papers for a decision on the documents alone, hearing where anybody attended.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "hardship",
      "type": "string",
      "unit": null,
      "what": "Whether a hardship deferral was raised, and what the tribunal did with it.",
      "null_means": "Hardship never came up in the decision."
    },
    {
      "dataset": "rent.tribunal",
      "field": "note",
      "type": "string",
      "unit": null,
      "what": "Anything unusual the decision turned on.",
      "null_means": "Nothing beyond the figures."
    },
    {
      "dataset": "rent.tribunal",
      "field": "decision_url",
      "type": "string",
      "unit": null,
      "what": "The decision itself on the tribunal's own site. Every row has one.",
      "null_means": null
    },
    {
      "dataset": "rent.tribunal",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on this site where these figures live.",
      "null_means": null
    },
    {
      "dataset": "fuel.prices",
      "field": "week_beginning",
      "type": "date",
      "unit": null,
      "what": "The Monday the weekly average describes.",
      "null_means": null
    },
    {
      "dataset": "fuel.prices",
      "field": "petrol_ppl",
      "type": "number",
      "unit": "pence per litre",
      "what": "Average ultra low sulphur unleaded pump price across the UK that week.",
      "null_means": null
    },
    {
      "dataset": "fuel.prices",
      "field": "diesel_ppl",
      "type": "number",
      "unit": "pence per litre",
      "what": "Average ultra low sulphur diesel pump price across the UK that week.",
      "null_means": null
    },
    {
      "dataset": "fuel.prices",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on this site where these figures live.",
      "null_means": null
    },
    {
      "dataset": "ev.charging",
      "field": "network",
      "type": "string",
      "unit": null,
      "what": "The charging network.",
      "null_means": null
    },
    {
      "dataset": "ev.charging",
      "field": "tier",
      "type": "string",
      "unit": null,
      "what": "The operator's own label for this price: a speed, a time window, or a payment route.",
      "null_means": null
    },
    {
      "dataset": "ev.charging",
      "field": "kw",
      "type": "string",
      "unit": null,
      "what": "The power range the operator states for the tier.",
      "null_means": "The operator does not state a power figure for this price."
    },
    {
      "dataset": "ev.charging",
      "field": "p_per_kwh",
      "type": "number",
      "unit": "pence per kWh",
      "what": "The published rate.",
      "null_means": "The operator publishes no single figure for this tier: it prices per site or publishes only a range, and the varies field carries its exact wording."
    },
    {
      "dataset": "ev.charging",
      "field": "subscription_name",
      "type": "string",
      "unit": null,
      "what": "The operator's subscription, where one exists.",
      "null_means": "The network has no subscription."
    },
    {
      "dataset": "ev.charging",
      "field": "subscription_monthly",
      "type": "number",
      "unit": "£ a month",
      "what": "What the subscription costs.",
      "null_means": "No subscription, or the operator does not publish the fee. Tesla publishes membership without a price."
    },
    {
      "dataset": "ev.charging",
      "field": "subscription_p_per_kwh",
      "type": "number",
      "unit": "pence per kWh",
      "what": "The subscriber rate, where one flat figure is published.",
      "null_means": "No subscription, or the subscriber saving is a percentage or a range rather than one figure. The note inside subscription_name's row text carries it."
    },
    {
      "dataset": "ev.charging",
      "field": "fees",
      "type": "string",
      "unit": null,
      "what": "Pre authorisation holds, overstay and connection fees as the page states them.",
      "null_means": "The page lists none."
    },
    {
      "dataset": "ev.charging",
      "field": "varies",
      "type": "string",
      "unit": null,
      "what": "Exactly what the operator says about prices differing by site or time.",
      "null_means": "The page contains no such statement."
    },
    {
      "dataset": "ev.charging",
      "field": "note",
      "type": "string",
      "unit": null,
      "what": "Anything else a reader needs, including the one stale figure we found and excluded.",
      "null_means": "Nothing beyond the row."
    },
    {
      "dataset": "ev.charging",
      "field": "pricing_page",
      "type": "string",
      "unit": null,
      "what": "The operator's own pricing page, which is the source for the whole row.",
      "null_means": null
    },
    {
      "dataset": "ev.charging",
      "field": "as_read",
      "type": "date",
      "unit": null,
      "what": "The day both independent readers read the page.",
      "null_means": null
    },
    {
      "dataset": "ev.charging",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on this site where these figures live.",
      "null_means": null
    },
    {
      "dataset": "groceries",
      "field": "item",
      "type": "string",
      "unit": null,
      "what": "The item, as the ONS names it.",
      "null_means": null
    },
    {
      "dataset": "groceries",
      "field": "code",
      "type": "string",
      "unit": null,
      "what": "The ONS consumption segment code.",
      "null_means": null
    },
    {
      "dataset": "groceries",
      "field": "category",
      "type": "string",
      "unit": null,
      "what": "The ONS grocery category.",
      "null_means": null
    },
    {
      "dataset": "groceries",
      "field": "unit",
      "type": "string",
      "unit": null,
      "what": "The standard quantity the price describes, for example per 800g loaf or per dozen.",
      "null_means": null
    },
    {
      "dataset": "groceries",
      "field": "price_p",
      "type": "number",
      "unit": "pence",
      "what": "The national average price in July 2026.",
      "null_means": null
    },
    {
      "dataset": "groceries",
      "field": "price_p_year_ago",
      "type": "number",
      "unit": "pence",
      "what": "The national average price in July 2025.",
      "null_means": "The item joined the ONS basket after July 2025, so no year ago figure exists. Six items are in this position and the page names them rather than inventing a comparison."
    },
    {
      "dataset": "groceries",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on this site where these figures live.",
      "null_means": null
    },
    {
      "dataset": "prices.history",
      "field": "series",
      "type": "string",
      "unit": null,
      "what": "Which charge: tv_licence, prescription, dental_band1, dental_band3, rail_regulated or water_avg.",
      "null_means": null
    },
    {
      "dataset": "prices.history",
      "field": "name",
      "type": "string",
      "unit": null,
      "what": "The human name of the series.",
      "null_means": null
    },
    {
      "dataset": "prices.history",
      "field": "unit",
      "type": "string",
      "unit": null,
      "what": "What the value is measured in: pounds a year, pounds an item, or a percentage rise.",
      "null_means": null
    },
    {
      "dataset": "prices.history",
      "field": "effective",
      "type": "date",
      "unit": null,
      "what": "The date this figure took effect.",
      "null_means": null
    },
    {
      "dataset": "prices.history",
      "field": "value",
      "type": "number",
      "unit": null,
      "what": "The amount in force from that date, in the series unit.",
      "null_means": null
    },
    {
      "dataset": "prices.history",
      "field": "held",
      "type": "boolean",
      "unit": null,
      "what": "True where the figure was a freeze, unchanged from the year before.",
      "null_means": null
    },
    {
      "dataset": "prices.history",
      "field": "is_percent",
      "type": "boolean",
      "unit": null,
      "what": "True where the value is a percentage rise rather than a money amount, as for regulated rail fares.",
      "null_means": null
    },
    {
      "dataset": "prices.history",
      "field": "source",
      "type": "string",
      "unit": null,
      "what": "The body that set this figure.",
      "null_means": null
    },
    {
      "dataset": "prices.history",
      "field": "source_url",
      "type": "string",
      "unit": null,
      "what": "The primary source page.",
      "null_means": null
    },
    {
      "dataset": "prices.history",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on this site where these figures live.",
      "null_means": null
    },
    {
      "dataset": "vouchers",
      "field": "id",
      "type": "string",
      "unit": null,
      "what": "The scheme slug, which also anchors it on the help page.",
      "null_means": null
    },
    {
      "dataset": "vouchers",
      "field": "name",
      "type": "string",
      "unit": null,
      "what": "The name of the scheme.",
      "null_means": null
    },
    {
      "dataset": "vouchers",
      "field": "amount",
      "type": "string",
      "unit": null,
      "what": "The headline amount or discount, as a phrase because many are ranges or percentages.",
      "null_means": null
    },
    {
      "dataset": "vouchers",
      "field": "amount_note",
      "type": "string",
      "unit": null,
      "what": "What the amount is measured against.",
      "null_means": "The amount stands on its own."
    },
    {
      "dataset": "vouchers",
      "field": "group",
      "type": "string",
      "unit": null,
      "what": "Which part of the bills it belongs to: energy, childcare, counciltax, water, nhs, travel, debt and so on.",
      "null_means": null
    },
    {
      "dataset": "vouchers",
      "field": "who_sets_it",
      "type": "string",
      "unit": null,
      "what": "The body that sets or runs the scheme.",
      "null_means": "Not stated."
    },
    {
      "dataset": "vouchers",
      "field": "nations",
      "type": "object",
      "unit": null,
      "what": "Whether it applies in england, wales, scotland and ni: yes, different, or no.",
      "null_means": "Not broken down by nation."
    },
    {
      "dataset": "vouchers",
      "field": "how_to_claim",
      "type": "string",
      "unit": null,
      "what": "How to get it.",
      "null_means": "Not stated in short form; see the help page."
    },
    {
      "dataset": "vouchers",
      "field": "official_link",
      "type": "string",
      "unit": null,
      "what": "The official page for the scheme.",
      "null_means": "No single official link; see the sources on the help page."
    },
    {
      "dataset": "vouchers",
      "field": "page",
      "type": "string",
      "unit": null,
      "what": "The page on this site where these live.",
      "null_means": null
    }
  ]
}