Skip to main content
Gary
Rank 1
Rank 1
March 9, 2017
Solved

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

  • March 9, 2017
  • 227 replies
  • 36559 views

Hi Ovo,

I wondered whether the API that powers your live and historical usage page in the account menu is something you could look into opening up a bit so we can freely access our raw data and also perhaps it may stimulate some interesting community projects?

For instance (more sport related), Strava and Fitbit.

Best answer by g-de

Updated on 14/08/25 by Abby_OVO

 

Tim_OVO: “We love seeing the innovative ways our customers are using tech to help monitor and manage their energy usage. It’s inspiring us to think about ways to do energy differently. We know some customers have been using some of the application programming interface (APIs) behind our public facing services. While we’re OK with that, we do need to make you aware of a couple of things.

 

These APIs are designed to be used by OVO teams only, and aren't public facing. There are some downsides to using APIs that aren't for the public, and we wanted to let you know what these are. Behind the scenes, OVO uses APIs to share and update information between systems that power your bills and your online account. This is done in partnership with Kaluza, the tech company that’s part of the OVO family. They’ve built the billing platform designed to put our customers in the driving seat of their energy usage. 

 

These internal APIs are intended for use by Kaluza and its clients, who are energy retailers like OVO, rather than customers. Because of this, there’s no support for them being used anywhere else, which means they may be discontinued with no notice when we update our products and services. 

 

OVO Energy and Kaluza need to be able to monitor these APIs, and may block access if there's any problems in the future.

 

We know some customers may have put time and effort into developing solutions that use these API. So, now that you know the risks, we want to hear from you on how you’re using the APIs and the problems you’re solving with your DIY approach. 

 

Is there anything you’d like to see from OVO to help you monitor and manage your energy better? Leave a comment below to tell us.”

 

can you help me understand if the links above allow users to access raw data as if from an API?

I can certainly give it a go.

 

Firstly, big thanks to Timmo and other contributors for developing the library. All thanks go to them and links to buy them a coffee for their effort can be found on PyPi or GitHub:

https://pypi.org/project/ovoenergy/
https://github.com/timmo001/ovoenergy

 

I assume the way the library was developed this was to reverse engineer the My OVO website. That is, browse the website as normal and and monitor the traffic to see what OVO URLs and APIs it uses. Assuming this is the case, one of these URLs (get account IDs) already seems to be different but the library is still working for the moment. The APIs being used are not officially supported outside of the website, so first, a warning that any changes to the My OVO website may break the library.

 

For anyone using Python, you should be able to include the ovoenergy library and look at https://github.com/timmo001/ovoenergy/blob/master/ovoenergy/cli.py for how to use it.

 

For replicating this in other languages, the process seems to be as follows:

  1. Login by sending a POST request to https://my.ovoenergy.com/api/v2/auth/login with the following JSON in the body:
    {
    "username": "...",
    "password": "...",
    "rememberMe": true
    }

    From the response, save the cookies to use in all future requests.

  2. Next, send a GET request to https://smartpaym.ovoenergy.com/api/customer-and-account-ids . Be sure to save the items in the “accountIds” property (usually only one item).
  3. Finally, make a GET request to https://smartpaym.ovoenergy.com/api/energy-usage/daily/{accountId}?date={yyyy-MM} where {accountId} is the value from the previous request and {yyyy-MM} is the month in the format 2020-08.

You can also get monthly or half-hourly usage using the following URLs similar to step 3:

As mentioned above, if this is wanted for Home Assistant, the integration was added in version 0.114 (https://www.home-assistant.io/integrations/ovo_energy/).


Unfortunately the data only goes up to the end of the previous day as OVO no longer provide real-time data:

 

227 replies

Newcomer
October 8, 2025

OVO changes the authorization method for the Smart PAYM API 

  

People may have noticed that utilities like the ones described in this thread aren’t working these days. It looks like there was a fundamental change in the way that authorization works for the API. This sort of stuff sadly goes right over my head, but apparently it’s no longer enough to have the browser cache an access token; it actually has to be sent with each request. Developers out there will hopefully know how to deal with this, so over to ​@MikeWilliams, ​@Tron Burgundy, ​@nickcmaynard, ​@knight, ​@TerryE , ​@g-de and anyone else I’ve omitted, just in case they can be bothered to address this insofar as it affects their various code.

 

Have - hopefully - fixed https://github.com/nickcmaynard/ovo-energy-usage-scripts to handle the refresh token fun and games.  No longer an Ovo customer, but I hope this will help folks out.

MikeWilliams
Newcomer
Newcomer
October 8, 2025

I have just finished the changes to my app for the new login and authentication methods.

I have some more testing to do before I release it.

I have today downloaded all of my data, which goes back to 2017 in a single pass.

MikeWilliams
Newcomer
Newcomer
October 9, 2025

I have just released V1.0.4

You can download a copy of it at
https://github.com/MikeWilliams-UK/My-Ovo-Data/releases

 

Regards

Mike Williams

Newcomer
October 9, 2025

I have just released V1.0.4

You can download a copy of it at
https://github.com/MikeWilliams-UK/My-Ovo-Data/releases

 

Regards

Mike Williams

Thank you ​@MikeWilliams , just tried it and got all my data since we opened the account.

Out of interest, is there any way to get the data for this smart meter from the last 400 days as has been mentioned by some previously?

 

Thanks!

MikeWilliams
Newcomer
Newcomer
October 9, 2025

Unzip to a folder of your choice.
Create folder C:\ProgramData\OvoData.
Run the program OvoData.exe

If you want to turn off of dumping of responses change the following value in appSettings.json to from true to false

{    "DumpData": "true"}
 

If you encounter any problems please post on this topic OVO Energy Forum

MikeWilliams
Newcomer
Newcomer
October 9, 2025

Just to make things clear do not change any other lines in the file appsettings.json

The forum system messed up my formatted code block :-)

Ben_OVO
Community Manager
Community Manager
October 10, 2025

Thanks for the update ​@MikeWilliams!

Powered by the Sun
Firedog
Super User
Super User
October 10, 2025

I have just released V1.0.4
  

@MikeWilliams Thanks for all your hard work on this 🙂

I downloaded the new version, but running it didn’t go as smoothly as I’d hoped.

Spec: Windows 11 Pro  25H2, OS build 26200.6725, Windows Feature Experience Pack 1000.26100.253.0

I had to install .NET Core 8.0.20 to get anywhere - a bit surprised it was missing. Authentication works like a dream, whether or not I was already signed in to the account or not, so that’s the major hurdle successfully navigated 👍

I successfully read the All time dataset, but the date picker was dead, so I wasn’t able to select a period to export. It was stuck at 2017-03-10 - 2025-07-01. I could only find these dates in the .db database, so I renamed it and hoped to be able to start from a clean slate. No such luck - the Read function re-downloaded the whole dataset as before, but there was still no way to tame the export (I tried both types). Even though I specify This Month, I still get the whole lot in the CSV file (131,437 lines, 3.7MB!), and the dates in the dialogue now stubbornly show  2025-10-01 - 2025-10-08. Any suggestions?

It looks like I can attach files here, so if you’d like logs or anything, shout.
 

Noel | I have no official status; I'm just a volunteer who comes here to help other customers. My gear: Aclara SGM 1416-B Electricity-only E7 meter; Chameleon IHD3-PPMID-AAA | It may look as if I know what I’m talking about, but don’t let that fool you. |
MikeWilliams
Newcomer
Newcomer
October 10, 2025

@Firedog - Export is (and was) designed to always export the full data set.

The dates that you are seeing on the screen is the range of dates for which data has been collected that are stored in the SQLite database. In my case (as shown below) I have readings dating from to 16-Mar-2017 to 08-Oct-2025

Not sure why .net 8 runtime was not part of the package, I will look into this.

MikeWilliams
Newcomer
Newcomer
October 10, 2025

@Firedog Can you clear the folder C:\ProgramData\OvoData and re-run the program, selecting “All time” so that all records can be retrieved.
That may take some time mine ran from 11:10 to 11:22 to fetch 8 years of data.

Then can you send me by PM

  • the file yyyy-MM-dd* Accounts-Response.json (redacting your account details)
  • the last 100 lines of the log file yyyy-MM-dd.log in the Logs folder
  • a screen shot of the last few files in the dump folder