Pedometers in general
Common electronic pedometers (e.g. activity trackers) are equipped with an digital triple-axis accelerometer (3-DOF) which measures the acceleration of the three directions (X, Y, Z). With an algorithm parsing the values in the background, steps can be detected on a specific pattern. The accuracy of detection mostly depends on a good algorithm. Some trackers additionally use multiple sensors such as an accelerometer and a gyroscope (6-DOF or even more) for precise determination on the hardware side.
You can find plenty information about accelerometers on the internet (if you’re interested in this topic).
Commercial trackers
There are many commercial activity trackers on the market to choose from. The following list gives a rough overview of some representative brands (in alphabetical order):
- Basis — http://mybasis.com
- Fitbit — http://fitbit.com
- Garmin — http://garmin.com
- Jawbone — http://jawbone.com
- Microsoft — http://www.microsoft.com/microsoft-band
- Misfit — http://misfit.com
- Moov — http://moov.cc
- Nike+ — http://www.nikeplus.com
- Polar — http://polar.com/products
- Razer — http://nabu.razerzone.com
- Sony — http://www.sonymobile.com/products/smartwear
- Withings — http://withings.com
Popular brands often sell a wider range of products with more or less features or some for a more specific group of customers. All trackers got basic functionality of counting steps and calculating the estimated burned calories as well as the walked distance and they include a feature for sleep tracking.
Export data from trackers
If you like to export data from a commercial tracking device to access individual numbers & values, it might be quite challenging (at first). Meanwhile there are public APIs available, but unfortunately not every company lets you easily access intraday data (i.e. without permission or payment etc.).
Nevertheless there are approximately 3-4 different strategies to get raw data from your tracker account, but some might not be supported by some vendors. One possibility is to simply download data in CSV format via the web interface (if provided). But you can only gain a daily summary of your data. The second is to make use of APIs. This might be the most flexible way: You can write a script yourself or use existing scripts. We listed some scripts we found on Github below (use at your own responsibility). If you just need fast and yet detailed data, you can use the API Explorer (if available) – this is useful for single requests.
The third option is to parse the web interface and collect data from graphs – if you analyze the network activity you might find the right response with requested data. It can, but might not always be as detailed as intraday data. And finally the fourth and advanced alternative is to sniff the bluetooth stream while syncing the device (we won’t focus on that for now).
We’re mostly interested in the counted steps, so the research might at some point refer on getting this data especially.Last revised: February 2016
→ Jump to: Fitbit, Misfit, Jawbone, Withings, Garmin, Sony
FITBIT
Website: https://dev.fitbit.com
No access to minute-by-minute (intraday) data with public API, only with Partner API (needs approval by fitbit). But they are supportive, if you want to use it for non-profit use:
„Fitbit is very supportive of non-profit research and personal projects. Commercial applications require additional review and are subject to additional requirements. To request access, email api at fitbit.com.“
API Explorer: https://apigee.com/me3/embed/console/fitbit
Data export: “Settings” > “Data Export” (daily summary in CSV or XLS)
Web interface: Steps summary for day & graph in 5min slots (based on full hour)
Articles:
http://simplystatistics.org/2013/01/02/fitbit-why-cant-i-have-my-data
http://quantifiedself.com/2013/02/how-to-download-fitbit-data-using-google-spreadsheets
http://quantifiedself.com/2014/09/download-minute-fitbit-data
Code/Scripts:
https://github.com/heyitspavel/fitbitphp (PHP)
https://github.com/TheSavior/fitbitphp (PHP – forked)
https://github.com/Fitbit/fitbit4j (Java)
https://github.com/orcasgit/python-fitbit (Python)
https://github.com/jplattel/FitBit.py (Python)
https://github.com/qslabs/FitbitIntraday (Google Spreadsheet Code)
MISFIT
Website: https://build.misfit.com
No access to minute-by-minute data (intraday) with API. There’s only a summary for each day available.
However, it’s possible to tag a specific activity (Triple tap on Misfit Shine to log activity). You’re able to track and afterwards demand the data from this defined timeslot. Access these activities via endpoint ‚sessions‘.
API Explorer: https://apigee.com/misfit_api/embed/console/v1
Data export: not provided.
Web interface: Steps summary for day & graph in 30min slots (full hour and half hour), insight is not really clear > logged activities displayed as an 30min-slot (shows time were activity took place in this slot). Not ideal for proper analyzing.
Code/Scripts:
https://github.com/orcasgit/python-misfit (Python)
JAWBONE
Website: https://jawbone.com/up/developer
The Jawbone API provides a nice endpoint called ‚moves‘ for hourly data as well as intervals every minute or even 10 seconds (for defined workouts).
API Explorer: https://apigee.com/jawboneapi/console/UP
Data export: “Settings” > “Account” (daily summary in CSV)
Web interface: not available.
Articles:
https://forum.quantifiedself.com/t/jawbone-up/701/5 (Forum post)
Code/Scripts:
https://github.com/jplattel/PyJawbone (Python)
https://github.com/andrewpbrett/jawbone-up-api (Ruby)
WITHINGS
Website: http://oauth.withings.com/api
No access to minute-by-minute data without activation through Withings (request needed) > see description: http://oauth.withings.com/api/doc#api-Measure-get_intraday_measure
After activation you can get a list of activity measures (series). Can’t specify yet if the level of detail is defined by a tracked activity or every minute.
API Explorer: not provided.
Data export: Tab “Measurement Table” > “Download” (daily summary in CSV)
Web interface: Steps summary for day & graph in 30min slots (full hour and half hour), additionally access minute-by-minute data via Request URL response (JSON)
Articles:
http://blog.hopkins.io/2013/07/25/withings-api > Link via archive.org (WaybackMaschine)
Code/Scripts:
https://oauth.withings.com/example_code.zip (PHP – own example script from Withings)
https://github.com/MoriTanosuke/withings-exporter (Java)
https://github.com/huitiemesens/withings (PHP)
GARMIN
Website: http://developer.garmin.com
Getting detailed information about the Garmin API is quite difficult.
It seems that the only option to get access to tracker data, is to get access to all data from end users worldwide ($5,000 One-time License Fee).
Additionally there’s a so-called „Wellness API“ for companies to read data from their employees devices to improve wellness etc. No public API (requires approval).
API Explorer: not available.
Data Export: “Reports” > “Export” (daily summary in CSV only for 7 days each)
Web interface: Steps summary for day & graph in 15min slots (based on full hour) > Login: http://connect.garmin.com
Articles:
http://sergeykrasnov.ru/subsites/dev/garmin-connect-statisics (FYI)
Code/Scripts:
?
SONY
Website: https://developer.sony.com/develop/services/lifelog-api
Sony only grants access to tracking data through the Lifelog API. You can therefore read all of the extra lifestyle data you logged besides the movement data. Could get bulky, but you got the possibility, if you like.
You can recall the tracked activities via API, subdivided in minute-by-minute data.
API Explorer: https://apigee.com/techdeveloperworld/embed/console/lifelog-api
Data export: not provided.
Web interface: No graph, displays taken steps only on interaction. No clear insight, however you can access minute-by-minute data via Request URL response (JSON) > Login: https://lifelog.sony.com
Code/Scripts:
https://github.com/championswimmer/Lifelog-Android-Library (Java/Android)