← Back to list

Export all your workouts from Endomondo

It is not easy to export all workouts in Endomondo from web interface. You can do it only one by one. If you are active in this fitness…

Michal Ozogan in Life with fitness data · 2018-05-25 11:23 · 61 claps · 1.3 min read
#javascript #endomondo
Open on Medium ↗
Wiki topics: 🌐 · Web Development 💪 · Fitness & Wellness

Export all your workouts from Endomondo

It is not easy to export all workouts in Endomondo from web interface. You can do it only one by one. If you are active in this fitness network for several years it’s practically impossible.

There are some ways. You can use free services tapiriik, where you can export all your GPX file to Dropbox. But this is not our way. We want to have a full control over the process.

This example uses Node 9, where you can use async functions.

I created npm package endomondo-api-handler that can work with Endomondo web API. This API is not public and all endpoints are just sniffed by web browser. You need to have email and password of user, so it is mainly for personal use.

The simplest script, how to export all your workouts looks like this:

require('cross-fetch/polyfill');
const fs = require('fs');
const { Api } = require('endomondo-api-handler');
const api = new Api();
(async () => {
    await api.login(LOGIN, PASSWORD);
    await api.processWorkouts({}, (workout) => {
        console.log(workout.toString());
        if (workout.hasGPSData()) {
            fs.writeFileSync(`tmp/${workout.getId()}.gpx`, workout.toGpx(), 'utf8');
        }
    });
})();

It will save all your GPX files to tmp folder. You can filter workouts that should be exported by adding parameter to processWorkouts method. You can use following:

type WorkoutFilters = {
    after?: string | DateTime,
    before?: string | DateTime,
    fromDuration?: number | Duration,
    toDuration?: number | Duration,
    fromDistance?: number,
    toDistance?: number,
    title?: string,
    sport?: Sport,
}

If you want to export only runs from year 2017, use this parameters:

import { DateTime } from 'luxon';
const { Api, SPORTS } = require('endomondo-api-handler');
await api.processWorkouts({
    sport: SPORTS.RUNNING,
    after: DateTime.fromISO('2017-01-01T00:00:00.000'),
    before: DateTime.fromISO('2017-12-31T23:59:59.999'),
}, (workout) => {
    ...
});

Remember that GPX file does not include all information from Endomondo workout. It is general information like title, notes or tags. Only following information are included:

  • link on original workout
  • type of activity
  • name of author
  • list of gps points where is: time, location, speed, heart rate, cadence and altitude

메타데이터
post_id
e188c1da4e3
slug
export-all-your-workouts-from-endomondo-e188c1da4e3
url
https://medium.com/life-with-fitness-data/export-all-your-workouts-from-endomondo-e188c1da4e3
canonical_url
https://medium.com/life-with-fitness-data/export-all-your-workouts-from-endomondo-e188c1da4e3
author_url
https://medium.com/@michalozogan
status
ok
fetched_at
2026-07-26 04:08:36