Where to Get Your Own Half-Hourly Electricity Data (And Why It Changes Everything)
Your annual consumption is 3,200 kWh. Mine is 4,100. Neither figure tells either of us anything useful about whether solar pays, because an annual total is one data point wearing the costume of a dataset. A year of half-hourly readings is 17,520 numbers. The gap between those two things is the gap between modelling your house and guessing about it.
That is not a rhetorical flourish. Every solar and battery decision worth making is a question about when, not how much: when your load sits inside the generation window, when it sits outside it, how much of the 22 kWh your array will make on a June Saturday actually has somewhere to go. Annual kWh cannot answer any of that. Monthly bills cannot. Daily totals get you closer and still hide the thing that matters. So before you open another sizing calculator, go and get the data. Here is every route, in the order I’d try them.
Route 1: your supplier’s portal, and the legal lever behind it
Start here because it’s free and takes ten minutes. Log in, look for usage or consumption, look for an export or download link.
What you’ll find depends entirely on who you’re with. Octopus gives you a per-meter CSV with 30-minute granularity straight off the dashboard. Some of the legacy suppliers will show you a pretty daily bar chart and offer you nothing to download at all, or hand you a monthly PDF and call it data.
Two things gate this. First, half-hourly collection is a consent setting. Smart meters in Great Britain record half-hourly consumption regardless, but your supplier only retrieves it if your data-sharing preference permits it. If you’re set to monthly or daily reads, change it to half-hourly today, because the clock on useful data starts when you flip that switch. Second, your meter itself stores 13 months of half-hourly profile data locally. That history exists whether or not anyone has collected it.
The lever for getting at it: a subject access request under UK GDPR. Email your supplier’s data protection team, ask for all half-hourly consumption data held for your MPAN, and they have one calendar month to supply it, free. I’ve seen this come back as a genuinely clean CSV and I’ve seen it come back as a 400-page PDF of tables, which is its own kind of answer about the organisation you’re buying electricity from.
Route 2: n3rgy, straight from the DCC
The Data Communications Company sits between your meter and everyone else. n3rgy is a service that gives you, the consumer, free API access to your own DCC data, and it’s the cleanest no-hardware route to half hourly electricity data UK-wide, regardless of supplier.
Registration wants your MPAN (the 13-digit supply number on your bill, bottom row of the little grid) and the MAC address of your in-home display, which is how the system proves you’re standing in the house. Once authorised, the API is about as simple as these things get:
GET https://consumer.data.n3rgy.com/electricity/consumption/1
?start=202509010000&end=202509302359&output=json
Authorization: <your MPAN>
You get back 30-minute kWh values, and critically, you can pull the backfill your meter has been quietly hoarding. That’s the difference between starting your analysis today and starting it thirteen months ago. New consumer registrations have opened and closed over the years, so check the current state of play before you write code against it. Hildebrand’s Bright app offers a similar DCC-only path (no hardware, same MPAN plus display MAC handshake) and exposes the same data through the Glowmarkt API:
GET https://api.glowmarkt.com/api/v0-1/resource/{resourceId}/readings
?from=2026-09-01T00:00:00&to=2026-09-30T23:59:59
&period=PT30M&function=sum
Route 3: the Octopus API
If you’re an Octopus customer, this is the best consumer energy API in the country and it isn’t close. Generate a key at the developer page on your dashboard, then use HTTP Basic auth with the key as the username and an empty password.
curl -u "sk_live_xxxxxxxx:" \
"https://api.octopus.energy/v1/electricity-meter-points/1234567890123/meters/21E0123456/consumption/?period_from=2026-06-01T00:00Z&period_to=2026-06-30T23:59Z&page_size=25000&order_by=period"
{"consumption": 0.083, "interval_start": "2026-06-14T12:00:00+01:00", "interval_end": "2026-06-14T12:30:00+01:00"}
{"consumption": 0.071, "interval_start": "2026-06-14T12:30:00+01:00", "interval_end": "2026-06-14T13:00:00+01:00"}
{"consumption": 2.140, "interval_start": "2026-06-14T18:00:00+01:00", "interval_end": "2026-06-14T18:30:00+01:00"}
Two gotchas that cost me an afternoon each. Results come back newest-first unless you pass order_by=period, which will silently wreck any cumulative calculation. And page_size caps at 25,000 records, which is 520 days, so a two-year pull needs pagination.
The same API serves tariff rates, including Agile’s half-hourly unit prices, on the same 30-minute grid. That alignment is the whole point: you can multiply your actual consumption by the actual price for each of 17,520 slots and get your real bill under any tariff, rather than the fiction you get from multiplying annual kWh by an average unit rate. If you want this piped into a dashboard rather than a notebook, the BottlecapDave Octopus Energy integration for Home Assistant does both consumption and rates.
Route 4: logging off the IHD’s radio
Your smart meter broadcasts over a Zigbee home area network, and a Consumer Access Device can listen. The Hildebrand Glow CAD costs somewhere around £70 to £100, pairs to your meter’s HAN, and gives you readings roughly every ten seconds locally over MQTT, plus the half-hourly series in Bright.
Why bother when the DCC route is free? Latency and resolution. DCC data lands a day or more late, which makes it useless for anything reactive. Ten-second local data lets you see your actual base load (not the smeared half-hour average), catch the immersion heater firing, and later watch your battery’s real charge behaviour. If you eventually want automation that reacts to house load, you need something like this anyway.
Route 5: CT clamps, for the questions half-hourly data can’t answer
Half-hourly data averages. A 9 kW shower running for six minutes appears as 0.9 kWh in that slot, which reads as an 1.8 kW average and tells you nothing about the 9 kW peak. That matters for inverter sizing, for whether your main fuse tolerates a heat pump plus an EV charger, and for diagnosing why your battery discharge looks wrong.
Circuit-level monitoring fixes it. Emporia Vue 2 runs about £120 for the main plus 16 branch clamps and has a workable Home Assistant integration. Shelly Pro 3EM sits on a DIN rail, measures true power with voltage reference, and reports bidirectionally, which is what you need once you’re exporting. IotaWatt is the enthusiast pick at around £200 for 14 channels with everything stored locally and no cloud dependency.
One caution: fitting clamps around your meter tails means working in and around unfused conductors inside or beside your consumer unit. Branch-circuit clamps inside a populated CU are also not a job for curiosity. Get an electrician to do the install, then own the data afterwards.
What the data actually changes
Decision one: array size. A 4 kWp south-facing array in the Midlands makes roughly 3,600 kWh a year. Against 3,200 kWh of consumption, the naive read is “that covers me,” and a typical calculator assumes 70% self-consumption: 2,520 kWh saved at 27p plus 1,080 kWh exported at 15p equals £842 a year. Now look at real half-hourly data for a house where nobody is home on weekdays. Consumption between 09:00 and 16:00 totals 620 kWh across the year. True self-consumption lands nearer 1,050 kWh once you count the breakfast and dinner shoulders: £283 saved, £382 exported, £665 total. On a £6,500 install that’s 9.8 years instead of 7.7. Same house, same array, and the difference came entirely from knowing the shape.
Decision two: battery capacity. Sum your consumption outside the cheap window and the answer stops being a matter of opinion. If half-hourly data shows 6.2 kWh used between 05:30 and 23:30 in summer, a 5 kWh usable battery cycling daily on Intelligent Octopus Go (7p off-peak against 25p peak) saves 5 × 18p × 365, about £329. Going to 10 kWh adds only 1.2 kWh of addressable load, worth £79 a year against perhaps £2,000 of extra kit. Twenty-five year payback on the second half of the battery, invisible without the data, obvious with it.
Decision three: which tariff. Replay your own consumption against a year of Agile rates and you get a number you can trust. Households with high overnight and low 16:00 to 19:00 load often come out £150 to £250 ahead; households with an electric-shower-and-dinner evening peak get punished. Nobody can tell you which you are from your annual total.
Once the CSV is on your disk the modelling is genuinely straightforward. Parse interval_start as a timezone-aware datetime, pivot into a 365 × 48 matrix, and you can read seasonal shape off it directly. That matrix is the input to every calculation worth doing, and it’s exactly where sizing from your own consumption data picks up.
Flip your supplier’s data-sharing preference to half-hourly before you close this tab, then send the subject access request. The first gets you tomorrow onwards; the second gets you the thirteen months your meter has already recorded and nobody has asked for.