How to Download Your Fitbit Second-Level Data Without Coding

How to Download Your Fitbit Second-Level Data Without Coding

If you are a Fitbit user who wants to save a copy of Fitbit data on your computer but doesn’t have advanced programming skills , this tutorial is right for you! You don’t need to do any coding at all to save your second-level data. I have been struggling with getting all the so-called ‘intraday data’ for quite a while. I have found many useful resources online, for example, Paul’s tutorial,  Collin Chaffin’s Powershell module, and the Fitbit-Python API, but they are somehow complicated and I just could not make any of these working for me smoothly.  Recently I finally figured out a way to download these Fitbit data without any coding. Are you ready?

Step 1: Register an app on

First you need to register an account on, and then click ‘MANAGE YOUR APPS’ on the top right area. Next you need to click ‘Register a new app’ button at the top right area to start with. Well, this step is simple, just make sure the OAuth 2.0  Application Type is set to ‘Personal’, and the Callback URL is complete – including the ‘http://’ part and also a ‘/’ at the end. Here I used ‘’ as an example. I have used this blog’s URL ‘’ which worked just fine too.


After you click the red ‘Register’ button, you will be able to see the credentials for the app you just registered. The ‘OAuth 2.0 Client ID’ and ‘Client Secret’ will be used in the next step.



Step 2: Use the OAuth 2.0 tutorial page

Next you need to right click the ‘OAuth 2.0 tutorial page’ link and open it in a new tab, so that you can look back at your app’s credentials easily. Make sure the ‘Implicit Grant Flow’ is chosen instead of ‘Authorization Code Flow’ – this will make things much easier! After you copy/paste the ‘Client ID’ and ‘Client Secret’ into the blanks and put in the Redirect URI, click the auto-generated link.


Then you will see the confirmation page. Just click ‘Allow’.


And you will be led to the ‘Redirect URI’, which is ‘’ in this case.  But the address bar now shows a very long string which is the token for your app.


Next you need to copy and paste everything in the address bar but without the starting part ( ) to the ‘Parse response’ section, and hit enter key once. This way you can clearly see what the token is, what the scope is, and how long the token is valid. In this case, the token is valid for 1 week, which equals to 604800 seconds. Pretty good, right?



Step 3: Make request and get the data!

After you are done with the ‘Parse response’, the next step is ready for you automatically.


Justclick the ‘Send to’ link and ‘Launch Request’ in the new page. Make sure to tell the web that you are not a robot too.


After that, if you see the ‘200 OK’ status – meaning everything works fine. And you can find the data you want in the lower half of the page. Like this:


If you click ‘view raw’ at the right side, you will see the ‘BODY’ will be changed to raw text file and you can simply copy / paste them to a text editor. And that’s all you do to download your Fitbit second-level data! As I promised, you don’t need to know any programming skills to accomplish this, isn’t that cool?

Additional tips:

tip 1: other data types

If you want some other data rather than the ‘user profile’, you can simply change the ‘API endpoint URL’ in the ‘Make Request’ step. According the the Fitbit API documentation, you can get the heart rate data by using this URL:

Or the sleep data by using:

tip 2: save json file in an easier way

If you think the ‘Send to’ method is not fast enough, you can copy the ‘curl’ command auto-generated in the ‘Make Request’ step and run it in terminal (for Windows, that is the ‘cmd’ window). Add the following part to the end of the copied ‘curl’ command so that the data will be saved to your disk:

>> data_file.json

tip 3: save multiple days’ data automatically

I think Fitbit provides the functionality to let uers download multiple days’ data with one command, by specifying the date rage in the curl request. However I could not make it work for me for some unknown reason. Therefore I used a piece of Python code to download multiple days’ data for me. Here’s the code, which I think is pretty self-explanatory.

import requests
import json
import pandas as pd
from time import sleep
# put the token for your app in between the single quotes
token = ''
# make a list of dates 
# ref:
# You can change the start and end date as you want
# Just make sure to use the yyyy-mm-dd format
start_date = '2015-12-28'
end_date = '2016-06-14'
datelist = pd.date_range(start = pd.to_datetime(start_date),
                         end = pd.to_datetime(end_date)).tolist()
The codes below use a for loop to generate one URL for each day in the datelist,
and then request each day's data and save the data into individual json files.
Because Fitbit limit 150 request per hour, I let the code sleep for 30 seconds 
between each request, to meet this limitation.
for ts in datelist:
    date = ts.strftime('%Y-%m-%d')
    url = '' + date + '/1d/1sec/time/00:00/23:59.json'
    filename = 'HR'+ date +'.json'
    response = requests.get(url=url, headers={'Authorization':'Bearer ' + token})
    if response.ok:
        with open(filename, 'w') as f:
            json.dump(response.content, f)
        print (date + ' is saved!')
        print ('The file of %s is not saved due to error!' % date)

Happy hacking!

16 thoughts on “How to Download Your Fitbit Second-Level Data Without Coding

  1. I have noticed you don’t monetize your website, don’t waste your traffic, you can earn extra cash every month because you’ve got high quality content.
    If you want to know how to make extra bucks, search for: Boorfe’s tips best adsense alternative

  2. Hi,

    When I choose implicit grant flow and click the authroization URL, it tells me the app is not providing valid information.

    When I choose Authroization Code Flow, it does take me to the next page where I choose allow.

    Any thoughts?

  3. Help! Step 1 is NOT easy for some of us!
    I don’t know what to put for the first 5 questions.
    I don’t have a website or anything like that.
    Some guidelines would be appreciated.

    1. Hi Karen,

      I think you can just put in the information exactly the same as shown in the step 1 figure. The two things that really matter are:
      1. Application type (which should be “Personal”)
      2. Callback URL (which can be “”)

      I hope this helps.

      Best, Shi

      1. November 13, 2012 at 12:33 pmSay you measured something using the Vernier scale. On the scale it was written resolution (or precision) of 0.02 mm.Does this mean the unteitarncy in your measurement is HALF 0.02 mm, or is it simply 0.02 mm? Reply

  4. Hi! I’m an undergraduate student who are recently using your method to get access to fitbit data for my scientific research. In order to get more fitbit data from others, I need to write a Chinese guiding document to help others to get their tokens. Can I use parts of your article and parts of your code in my document? Thank you very much!

    1. Hi Alan,

      Sorry for the late response. Sure, you can take whatever you need from my website and use them the way you want. I am glad to see that you are using Fitbit for research and I’d love to know about details about it when it is done 🙂

      Thanks for asking!

      Best, Shi

      1. When using a &#i8n6;pani18ࢩ grill, it is advisable to put a little butter (or oil) on the bread, wrap or panini roll?This grill is a heavy commercial grill that was seasoned before the first use and has not been since.

  5. Thanks for the introduction. With as the redirect uri, after “allow”ing, I just get blank google page. Could you let me know what I’m missing?

  6. Hej shushi!

    Great Great Great tutorial! Everything’s working well. Until I’ve made my own routine it makes my work with fitbit a lot more easy. Thanks for that!

    Best Onit

  7. Hi!

    I tried to follow your tutorial, but it doesn’t work that way. For example, I cannot get an access token after step 2.

    Best regards

Leave a Reply

Your email address will not be published. Required fields are marked *