Skip to main content
Solved

Can we get access to the OVO energy online account API to download our smart meter usage data?

  • March 9, 2017
  • 214 replies
  • 35552 views

Show first post

214 replies

MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • October 16, 2025

@X10 you could try using RestFox / Postman to call the kalzula endpoint as shown in the post (from Oct 4th) by ​@g-de 
 

 


  • Newcomer
  • October 16, 2025

@X10 you might be best starting a separate thread for tracking that down, but I’m not sure you will get the level of granularity you need from this data.

The API only gives information to the same level as the website. It’s a limitation of the smart meters.

If you have an in home display (IHD), you may be able to use it to track it down. Theses usually show near-real time energy usage (usually only a delay of a few seconds at most). If you notice high power usage, you can turn suspect devices off to see if it drops.

If you want more granular information you could look into other mechanisms of energy monitoring such as smart plugs or CT clamps. Smart plugs are useful in not requiring any electric work doing, but you would have to put them on various suspect appliances or move it between appliances. CT clamps are handy for being able to monitor a full circuit, or working for devices which are hard-wired, but that usually involves putting them inside the consumer unit which means finding a professional to do it.


  • October 23, 2025

Super. Thanks ​@MikeWilliams . That fixed the missing data problem.


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • October 27, 2025

Today I have just checked what the two Half Hourly APIs for Sunday 2025-10-26 (BST to GMT switch over day) are returning and electricity results are as follows

usage/api/half-hourly-local (GMT endpoint ???)

  • 2 records from 2025-10-25

usage/api/half-hourly (local time endpoint ???)

  • no records

gas results seem to be all present


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 10, 2025

Just released a new version to

https://github.com/MikeWilliams-UK/My-Ovo-Data/releases/latest

This version has an enhanced main screen and the ability to obtain YOUR meter readings

 


Firedog
Super User
Forum|alt.badge.img+7
  • Super User
  • November 12, 2025

Thanks again, Mike. Retrieving readings will be a welcome bonus for many.

I can’t get this version to work. I log in successfully and select the electricity account. A few moments later, the app crashes. There’s nothing interesting in the OVOData log, but this is from Event Viewer:
  

Application: OvoData.exe

CoreCLR Version: 8.0.2125.47513

.NET Version: 8.0.21

Description: The process was terminated due to an unhandled exception.

Exception Info: code = Error (1), message = System.Data.SQLite.SQLiteException (0x87AF001F): SQL logic error

no such table: MeterReadings

   at System.Data.SQLite.SQLite3.Prepare(SQLiteConnection cnn, SQLiteCommand command, String strSql, SQLiteStatement previous, UInt32 timeoutMS, String& strRemain)

   . . . 

 

Is this enough for you to find and squash the fault? There’s more where that came from!


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 12, 2025

@Firedog 

It looks like the code to Add the new tables did not work.

Can you try renaming your database (which should exist in C:\ProgramData\OvoData) to something other than [accountnumber.db]

Then try again as this should re-build it from scratch
 

/Mike


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 12, 2025

Just tried that myself and I have located the issue.

One of my scripts (to update the database) had Unix Line endings instead of Windows line endings

Not sure how that happened ???

Fixing it now ...

/Mike

 


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 12, 2025

Firedog
Super User
Forum|alt.badge.img+7
  • Super User
  • November 12, 2025

Brilliant swift reaction again 👍

Off to test - watch this space 👀

 

[EDIT some time later]

@MikeWilliams Getting there! 

The Hh usage data all turned up after chugging away for 25 minutes.  That’s lightning-fast on my dodgy 4G LTE Internet connection, retrieving 150,000 lines of data.

Meter readings also turned up, but incomplete. Looking at the tables in the DB, your code doesn’t seem to be handling multi-register readings well. The MeterRegisters table is incomplete, and if that’s used in some way to drive the MeterReadings selection, it’s not surprising that many fall by the wayside. 

If you need sample files from my multi-register electricity-only account to see what needs to be selected, shout and I’ll get them to you.


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 12, 2025

@Firedog glad you are up and running.

Yes it would help greatly if you could zip up and PM me the meter readings json.

It IS very possible that your JSON is organised slightly different to mine.

I am on a flat daily rate, whereas you are on E7 (according to you signature) and yours data probably has differently organised JSON.

It's a shame that OVO doesn't have a publicly visible definition of the API.

/Mike


Firedog
Super User
Forum|alt.badge.img+7
  • Super User
  • November 12, 2025

@MikeWilliams This is the first time I’ve looked for the readings JSON since the system changed. What I found is very different from the simple file I used to refer to, so I hope this is what you need. Next hurdle is to get it to you. Let me know when you’ve retrieved it and I’ll take it down again.


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 12, 2025

I will try to download it tomorrow when I am on computer. I have downloaded it to my phone, but phone won't open it ...


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 12, 2025

Just emailed the file to my work address and I can see the data, so you can delete the file ​@Firedog 

/Mike


Firedog
Super User
Forum|alt.badge.img+7
  • Super User
  • November 12, 2025

Just emailed the file to my work address and I can see the data, so you can delete the file ​...
  

Gone. Good hunting 🙂


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 13, 2025

@Firedog - I have fixed the issues with the json data set having both PEAK and OFF_PEAK readings...

Import of your meter readings data shows:-

  • Meter Registers: 10
  • Meter Readings: 1,648

New version at https://github.com/MikeWilliams-UK/My-Ovo-Data/releases/tag/V1.0.7


Firedog
Super User
Forum|alt.badge.img+7
  • Super User
  • November 13, 2025

@MikeWilliams Thanks again. That’s much better. I got 1650 readings - today’s turned up in the short time between your retrieval and mine.

There are some odd gaps in the record, which I’m sure aren’t the result of the retrieval process. There are three meters involved - non-smart, SMETS1 and SMETS2 - and their designation of registers to peak and offpeak tiers was a bit of a moveable feast over the years. This came to a head when they tried to enrol and adopt my SMETS1 meter on to the DCC; it turned out that DCC would not accept the first tier as offpeak, so we had to swap them over. 

I suspect that readings for most of 2018-2022 have been lost from my OVO account. I’m not sure if I have them salted away somewhere. I do certainly have month-end readings for the whole period, so losing the daily ones is no great problem.

Anyway, it’s great to be able to retrieve readings in a useable format along with the usage data. I hope those who download the code show their appreciation! 


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 13, 2025

You are welcome, the extra readings are due to me injecting your JSON file (instead of fetching my readings), which was created yesterday.

I was surprised that so many readings were available as we have previously been told that the system only stores the last 400 readings???

 

/Mike


Firedog
Super User
Forum|alt.badge.img+7
  • Super User
  • November 14, 2025

… we have previously been told that the system only stores the last 400 readings???
  

Bit of confusion here.

The meter has a datastore which saves (a) 400 days’ Hh usage data and (b) 31 days’ billing data, i.e. midnight snapshots of register readings etc. Suppliers will normally send a request for the previous day’s records once a day, so 48 Hh bucket contents and readings for each register.

It’s then up to suppliers what they do with these data, but OVO seem to salt everything away in the customer’s account. This what your app accesses. Utilities like n3rgy and Bright connect via DCC to the meters themselves to retrieve the contents of their datastores.

I see that the JSON file I shared with you has lots of register details, which OVOData pushes to the DB’s Meter Registers table. There has clearly been some mucking about with these data, because there were periods when the lowest register tier was the offpeak one, a state which DCC chokes on. So I think the R01/02 labels were changed around with no alteration to the underlying data. Theis means that OVO’s (or Kaluza’s) own systems can’t successfully retrieve the data for the upside-down periods. I’ll have another look.  


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 24, 2025

I am leaving OVO in a few days time.

This has led to a new bug raising its head in obtaining the meter readings

// Previous
"accountSupplyPoints": [
{
"startDate": "2014-12-01",
"end": null,
"supplyPoint": {

// Now that I have a exit date
"accountSupplyPoints": [
{
"startDate": "2014-12-01",
"end": {
"date": "2025-11-25"
},
"supplyPoint": {

Notice the unexpected formatting of end.date which give an error

Exception thrown: 'System.Text.Json.JsonException' in System.Text.Json.dll System.Text.Json.JsonException: The JSON value could not be converted to System.String. Path: $.data.account.accountSupplyPoints[0].end | LineNumber: 0 | BytePositionInLine: 91.

I have fixed the error.

I will be releasing it later today - providing my testing finds no further issues.


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 24, 2025

Sadly, I didn't have time to release my "final" version today. That's assuming that I will lose access when my account is closed.

I am hoping to get time to do it tomorrow.

/Mike


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • November 25, 2025

Version 1.0.8 released

https://github.com/MikeWilliams-UK/My-Ovo-Data/releases/tag/V1.0.8

PS: After today I will have limited ability to fix issues...

/Mike


Firedog
Super User
Forum|alt.badge.img+7
  • Super User
  • November 26, 2025

  

Version 1.0.8 released
  

Thanks as always, Mike. I’ve taken it for a test drive and all seems to be well.

I’m sorry to see you go, but I assume you found a better deal elsewhere. You’re always welcome in these forums whoever has your energy allegiance from time to time.

Au revoir, and bonne chance!


  • Newcomer
  • December 22, 2025

@MikeWilliams  - I would also like to thank you for your help and creation as well as updating of your program!

 

On a side note, does anyone know if there is any way to tell if the data being retrieved is estimate or actual readings?

I ask only as I just found out that our meter has not been sending data to OVO for over 2 months, but there have also been days where it dropped before that too (we have a SMETS1).  Mike’s tool has half-hourly reads for our entire account, so I just wondered if there is some easy way to tell which are estimates and which are actual.

Or, based on some of the recent discussion just above about 400 days worth of data being stored, are these actual readings that didn’t get sent to OVO?

I’m a little confused and would appreciate any clarity, if anyone knows.

Thank you!


MikeWilliams
Newcomer
Forum|alt.badge.img
  • Newcomer
  • December 22, 2025

@X10 - If you have used my program and look into the data in the SQLite database using a program such as SQLite Studio (which is free https://sqlitestudio.pl/) you will be able to see in the table MeterReadings when the column Type has a value of “ESTIMATE”
 

 

/Mike


Feedback