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

November 7, 2024

Log file lines from last Uri are as follows:

2024-11-06 17:20:52 - Uri: https://smartpaymapi.ovoenergy.com/usage/api/monthly/nnnnnnn?date=2020
2024-11-06 17:20:52 - System.NullReferenceException: Object reference not set to an instance of an object.
   at OvoData.Helpers.SqliteHelper.UpsertMonthly(String fuelType, List`1 items) in C:\Dev\Mike\GitHub\My-Ovo-Data\Helpers\SqliteHelper.cs:line 114
   at OvoData.MainWindow.OnClick_Read(Object sender, RoutedEventArgs e) in C:\Dev\Mike\GitHub\My-Ovo-Data\MainWindow.xaml.cs:line 189
 

Let me know if you need more.

 

November 7, 2024

Posted the requested information but apparently it needs to be revewed by the moderators. In case that takes time, the exception line was:

2024-11-06 17:20:52 - System.NullReferenceException: Object reference not set to an instance of an object.
   at OvoData.Helpers.SqliteHelper.UpsertMonthly(String fuelType, List`1 items) in C:\Dev\Mike\GitHub\My-Ovo-Data\Helpers\SqliteHelper.cs:line 114
   at OvoData.MainWindow.OnClick_Read(Object sender, RoutedEventArgs e) in C:\Dev\Mike\GitHub\My-Ovo-Data\MainWindow.xaml.cs:line 189

That was preceded in the log by the Uri line which was https: slash slash smartpaymapi.ovoenergy.com slash usage slash api slash monthly slash accountNo?date=2020

No other lines in the log between those two entries. Let me know if you need more.

MikeWilliams
Newcomer
Newcomer
November 7, 2024

That is interesting in that the URL ends 2020.

Is that year significant?

Can you PM me the whole log file please?

November 7, 2024

The year isn’t significant to me, as far as I can see. The whole log file (4554 lines, 342k) is being sent to you in a PM, but it seems to be taking a while … having clicked “send” the button is just being highlighted continually with three white dots. This is the first time I’ve used PM so I may have done something wrong?

Edit: Just checked my online account. The last bill I can see online is for May-Jun 2020. I have been an OVO customer since 2013. Interestingly, I can see Usage data going back to 2013, but not the bills!

MikeWilliams
Newcomer
Newcomer
November 12, 2024

With the kind assistance of @HexhamUser I have been able to solve the issue with his data for 2020.

My code could not cope with him having “free” 😁 electricity prior to May.

The data segments were missing, causing my code to error.

This is now fixed and I intend to release this later this week.

/Mike Williams

MikeWilliams
Newcomer
Newcomer
November 14, 2024

I have just released V1.0.3 of my app to GitHub, this fixes the issue found by @HexhamUser when you have electricity with missing cost data.

Just download the zip file from https://github.com/MikeWilliams-UK/My-Ovo-Data/releases and unzip it’s contents to any folder, then run OvoData.exe

If you like my work, please consider donating at https://www.buymeacoffee.com/mikewilliamsuk

/Mike Williams

Newcomer
January 1, 2025

Those who just want to dump half-hourly usage for archival purposes (JSON, CSV) might find this script helpful: https://github.com/nickcmaynard/ovo-energy-usage-scripts

MikeWilliams
Newcomer
Newcomer
January 2, 2025

Those who just want to dump half-hourly usage for archival purposes (JSON, CSV) might find this script helpful: https://github.com/nickcmaynard/ovo-energy-usage-scripts

@nickcmaynard you have exposed your OVO custumer ID to the whole world in your script.

MikeWilliams
Newcomer
Newcomer
January 2, 2025

Hi All,

I have been informed by ​@HexhamUser that my program is not retreiving any data.

I have investigated this using postman and I can see that the API is working but retriving empty data sets for anything in 2025.

This tallys exactly with the OVO website, so I think we will just have to wait for them to fix the API.

Daily
Monthly

 

MikeWilliams
Newcomer
Newcomer
January 2, 2025

Just tried to chat with someone at OVO, but the chat bot failed to connect me with a real person.

Maybe it will all stat to work again tomorrow when their system has at least two days daya from 2025 (fingers crossed)