Garmin Data Export?

The main reason I can’t rely on my Garmin 630 as my main daily fitness and sleep tracker is because of the appalling rudimentary activity data export function. Here is what I’ve found on export (to csv): The export function appears on the “reports” screen of the computer app. If you select “daily” you get a spreadsheet showing only one variable, with 7rows labeled by day of week , eg “Sunday”. If you select “weekly” you get weekly totals, again a single variable, without the detail. So imagine the nightmare of trying, a week at a time, to export daily data for several weeks, and trying to consolidate data from multiple unlabeled spreadsheets into one for trending.

Besides venting, I’m hoping I’ve just missed where the “real” export function is, and one of you can help me out. Any ideas?

2 Likes

It doesn’t look good :frowning: I’ve tried exporting my “wellness data” as per garmin FAQ but it didn’t contain any real data after decoding the FIT files.

They have a Health API now that doesn’t look like it costs anything, but requesting it was cumbersome, and they don’t seem eager to let anyone connect with them that way; but I cross my fingers, it’s only been two days since I applied for it…

1 Like

Seems I was “wrong”. You can easily get all day heart rate data by mimicking the website. And you don’t need any authentication either, just a plain request. Anyone can get any garmin-users heartrate data. This is quite scary in many ways, but I can’t help being glad that I can at least get my data :smiley:

Try this, replacing “myUser” with your own user ID. For older user, that seems to be the login handle, for me it’s a UUID: curl ‘https://connect.garmin.com/modern/proxy/wellness-service/wellness/dailyHeartRate/myUser?date=2018-01-09

@fiddur Could you share some more info on your method? I couldn’t get it to work. The only thing that worked is going to a report called ‘Last seven days’, e.g. https://connect.garmin.com/modern/report/51/wellness/last_seven_days and click export once per week. This is really cumbersome and the output CSVs sometime don’t contain dates, just weekdays, which makes it difficult to track over time.

It seems it has to do with anonymity settings, so it wasn’t actually so insecure as I thought at first.

So, in my account settings under public profile, I have all check boxes marked for showing connect statistics in my profile, and marked that my profile can be seen by everyone.

So you can see my heart rate here in a JSON format.

  1. Thanks!
  2. It’s amazing you can see someone else’s data only by knowing his/her user id…

Oh my, that sounds like a crazy security hole. How does the typical userID looks like? Can you paste an example?

As long as it only allows reading of public data, I guess it’s not a security whole.

Old IDs are usernames. Mine looks like a uuidv4.

My ID is in the link above, 43f23d7c-456a-4b51-ab32-9e7d568acd37

What is the smallest time scale you are able to access heart rate data from garmin devices? (e.g. values from each minute, hour, day, week, etc)

During activities, it is recorded per second. Outside of that it seems to be by 2 minute intervals.

Have you been able to retrieve sleep information from Garmin?

Yeah, I’m just checking what the frontend is doing.

https://connect.garmin.com/modern/proxy/wellness-service/wellness/dailySleepData/43f23d7c-456a-4b51-ab32-9e7d568acd37?date=2019-01-07&nonSleepBufferMinutes=60

…still relying on a completely public profile though, but I guess to load private date you’d just include the SESSIONID cookie. No good way to retrieve that, though, just have to manually fetch it from a logged in session :frowning:

I am going to generalize my import scripts a bit, and will add sleep soon, just to move my garmin data into google fit (partly because the API is good and easily available, partly because my current fitness tracker uses wear os). But since it’s a hobby project, I have no timeline for when I’ll get to it. Here’s my garmin hearrate import: https://github.com/fiddur/nephelai/blob/master/bin/importGarminHR.js

hmm, when I try that link you provided, it just spits out a bunch of gibberish.

Ah well. I suppose it’s no problem really, just a matter of a minute to log on to my Garmin page, and transcribe those few numbers (deep sleep, light sleep, REM, total) daily into my own spreadsheet.

What happened Dec 28? :slight_smile:

Hah; Dec 28 2017 was when I started using Garmin. Since it doesn’t retrieve that information automatically, the script would have continued back through the ages otherwise :smiley: But yeah, there’s a lot in there that would need to be generalized and automated in different ways.

This is great, anyway of exporting step data in the same way?

Yeah, if I remember correctly, it’s just setting the type to dailyMovement instead of dailyHeartRate; I’ll add that to the repo eventually, but haven’t had time to work on my aggregations for a while now…

Putting the steps into google fitness is slightly different though, since steps is never a momentary measurement but always over a certain time. I haven’t looked into that yet.

sorted it thanks, https://connect.garmin.com/modern/proxy/wellness-service/wellness/dailySummaryChart/?date=2019-01-01 seems to work as i need it