Recovering my running data from Endomondo

in Programming & Devlast year

When I started running in 2012 I looked for an app I could use on my phone to track it. It happened that Endomondo was on special offer then, so I installed it. It did the job pretty well. I do like all the statistics it could give me, although it seemed to suffer from some GPS glitches that could result in crazy speeds now and again. At the start of this year I switched to Strava as I knew more people using that and it has some nice features. I am even paying for it to get access to more features. Last week I heard Endomondo is shutting down. It seems Under Armour also own MyFitnessPal and are favouring that in future. They provide a way to migrate your data across, but that is no use to me.


This is my running over the years I used Endomondo. It is the sort of data I would like to keep and be able to do more things with.

They did provide the option to download all your data and I have done this. It comes as a set of JSON files, These are fairly simple to process in Python.


As with my last project I used Jupyter Notebooks to experiment with this and have put the code on my Github for others to use.

As the data was spread across multiple files I had to process them all. I only really wanted some of the header data rather than all the tracking points, but that is available too. I had to loop through the dictionaries as some files had an extra 'name' one at the start, so I could not just use the index number. I created a list of dictionaries which ended up with 866 items.


I had logged activities such as walking, cycling and swimming, but I was mainly interested in those for running. I realised it would be easier to filter and process those as a Pandas dataframe. The conversion is very simple. This is part of why I like Python so much. I do have to look up how to filter and create group totals as I have not done too much of this sort of programming. Pandas is very powerful and can do a lot of what you might do with a database.


I tried to plot it as a bar chart, but I can only seem to get it without spaces between the bars. If I do not set a width I get really thin lines that do not all show up and fractional values do not work. I may experiment more with that. The totals came out slightly different to what Endomondo showed, but that does not matter too much. Once you have the data loaded you can do what you want with it.


I am open to suggestions on alternative ways to get these results as I may have missed out on simpler options. Even as it stands my code only takes seconds to process the data.

I see Strava also offer data download, but I have not looked into that yet. We give our data to all sorts of services and it is always good to see ways to get it out again.


I wish I actually had some code out on my Github page. Instead it is just a whole bunch of empty. Nice job on putting this together. I am glad you were able to find a way to get that old data.

I may as well put some stuff up on mine even if it's not too exciting. I am quite happy to share it. I am impressed by how little code this needed.


Thank you for your engagement on this post, you have recieved ENGAGE tokens.

At least they gave you a chance to keep your data. I've done a bit of data analytics recently in Jupyter Notebooks, and it's quite cool software.


I think because it has numbers it's ommitting spaces, I don't have too much insight about that otherwise.

Jupyter is great for experimenting. I am using it for a few projects. Got another today that I will post about.

Thanks for continuing to make Hive awesome.