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

Firedog
Super User
Super User
October 16, 2025

I’ve just re-read ​@X10’s question and realize that the earlier part of the 400-day period might have been for someone else’s account - a previous owner or tenant, say. I’ve honestly no idea whether the third parties I mentioned have any trouble accessing meter data when the meter concerned has changed hands, e.g. from one supplier to another or from one custodian (tenant/householder) to another. OVO won’t allow anyone other than the account holder to access the data they hold for a particular meter on  that account.

 

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 16, 2025

Sneak preview of the internal state of my progress to obtaining the last 400 meter readings.

As you can see the kalzula endpoint is returning 450 meter readings 
If I search for "source": "SMART_METER" in the raw json from the endpoint I can see that there are 800 smart meter reads the other 50 electricity records have either "source": "INDUSTRY" or "source": "MANUAL_READ_CUSTOMER" 

Visual Studio Debugging

 

MikeWilliams
Newcomer
Newcomer
October 16, 2025

As I have been a resident at my address for much longer that 400 days I am unable to coment on the ability to get other peoples meeter readings.

This might be a GDPR issue which OVO / kaluza need to sort out.

/Mike

Newcomer
October 16, 2025

@Firedog & ​@MikeWilliams - Thanks both. I think in my reading of various threads about accessing meter data (I still have several tabs from different threads about it open) I must have confused myself and thought that the output people were talking about was raw data about the meter, regardless of who had ‘ownership’ of it at the time. I had seen someone asking about 400 days somewhere and thought they had also said they only recently moved to OVO or something similar, so I assumed up to 400 days of data was available from the raw data file even if the customer of the provider was new.

Thanks for clarifying that this is not possible.

(As an aside, the reason I asked was that we’ve moved to a property with a heat pump, no gas, which is entirely new for us. We’ve noticed that our daily usage, according to the data, has increased significantly in the last 3 months, but as far as we can tell, our power usage habits haven’t changed enough to justify this increase.  So I thought it might be useful to see historical data to compare, roughly, if other people in this property had similar increases at times.

I mention the heat pump as I thought initially this was the culprit of the additional energy usage, perhaps we weren’t using it properly or it was faulty, but looking at the half-hourly data, I don’t think this is the cause of the spikes in energy usage).

Sorry for the long post and thanks for your answers!

MikeWilliams
Newcomer
Newcomer
October 16, 2025

@HexhamUser please refer to this post regaring local vs UTC

Just done an experiment using the endpoint “api/half-hourly” vs “api/half-hourly-local” and I have found that my program is over writing some of the values.

api/half-hourly (which gives local time)

First Period Start Last Period Start Count
2025-03-29 00:00:00 2025-03-29 23:30:00 48
2025-03-30 00:00:00 2025-03-30 22:30:00 46
2025-03-31 00:00:00 2025-03-31 23:30:00 48

As you can see for the last change over date two readings have been over written.
 

api/half-hourly-local (which gives UTC)

First Period Start Last Period Start Count
2025-03-29 00:00:00 2025-03-29 23:30:00 48
2025-03-30 00:00:00 2025-03-30 22:30:00 48
2025-03-31 00:00:00 2025-03-31 23:30:00 48

 

So I would recomend altering the appsettings.json as follows

"HalfHourlyUri": "https://smartpaymapi.ovoenergy.com/usage/api/half-hourly-local/{0}?date={1}",

 

MikeWilliams
Newcomer
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
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
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