Skip to main content

Export Garmin Connect activities and wellness data to CSV/JSON.

Project description

garmin-exporter

Export your Garmin Connect activities

File Contents
activities.csv One row per activity (distance, pace, HR, power, training load, VO2max, ...)
activities.splits.csv One row per km split, with --splits
activities.wellness.csv One row per day: sleep, HRV, stress, steps, Training Status and ACWR, with --wellness
activities.profile.json Profile (age, sex, weight, height), thresholds (LTHR, pace) and monthly load balance

Install

The package is published on PyPI, so the recommended way to install it is with uv or pip:

# with uv (recommended)
uv tool install garmin-exporter

# or with pip
pip install garmin-exporter

Quickstart

# Show help
garmin-exporter --help

# Export activities to CSV + a year of daily wellness metrics (sleep, HRV,
# Training Status, ...) to CSV, plus profile and thresholds to JSON
garmin-exporter --wellness

# Shorter wellness window (e.g. last 30 days)
garmin-exporter --wellness --wellness-days 30

# Also add per-activity HR time-in-zones
garmin-exporter --hr-zones

# Write per-run km splits to activities.splits.csv
garmin-exporter --splits

On the first run it asks for your Garmin email, password, and MFA code (if enabled), then stores the session token in your OS keyring - the password is never saved. Later runs reuse the session.

Options

Flag Description
-o, --output Output CSV path (default: activities.csv)
--days-back N Only the last N days (default: all activities)
--activity-type T Garmin type key, e.g. running (default: all)
--wellness Also write <output>.wellness.csv + <output>.profile.json
--wellness-days N Days of wellness history with --wellness (default: 365)
--hr-zones Add per-activity HR time-in-zones (+1 call each)
--splits Write per-run km splits to <output>.splits.csv
--reset-login Forget the stored session and log in again

Development

The project uses Makefile for typical tasks:

  • make lint - Ruff check + mypy --strict
  • make format - Ruff format
  • make clean - Remove cache files

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

garmin_exporter-0.1.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

garmin_exporter-0.1.0-py3-none-any.whl (9.5 kB view details)

Uploaded Python 3

File details

Details for the file garmin_exporter-0.1.0.tar.gz.

File metadata

  • Download URL: garmin_exporter-0.1.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for garmin_exporter-0.1.0.tar.gz
Algorithm Hash digest
SHA256 3b027cb5776298066bab9f5d12bbdb9d85b9c072d7c7f69cde9bc5b2b0185140
MD5 00b7476ab83e2c91d28b88891bf4c4fd
BLAKE2b-256 b6faff6ea237dbe3143188d7812616ba8fbe8b7505104e8822d38f8c3c06ce13

See more details on using hashes here.

File details

Details for the file garmin_exporter-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: garmin_exporter-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.29 {"installer":{"name":"uv","version":"0.11.29","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for garmin_exporter-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 fc7e3dda3c0e5edd05a5bf5c5254502e100f8fc8bb4068a8ccf5b75a2539b652
MD5 d6057276c45098f86168031dc621e6ad
BLAKE2b-256 14555b909c7f1ae0cabca630bd1e7d687bdec4accea1e8bf7526d82c81cb42c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page