Garmin Connect Python API

0.3.2 · active · verified Thu Apr 16

garminconnect is a Python 3 API wrapper for Garmin Connect, enabling programmatic access to a user's health metrics, activity data, workouts, and other fitness information. The library is actively maintained, with frequent updates (current version 0.3.2) to adapt to changes in Garmin's API infrastructure, particularly authentication and Cloudflare bypass mechanisms.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to log in to Garmin Connect and retrieve activity data for the current day. It emphasizes using environment variables for sensitive credentials. The library handles token saving and refreshing automatically after the initial login. Make sure to set `GARMIN_USERNAME` and `GARMIN_PASSWORD` in your environment.

import os
import datetime
from garminconnect import Garmin

# Get credentials from environment variables for security
USERNAME = os.environ.get('GARMIN_USERNAME', '')
PASSWORD = os.environ.get('GARMIN_PASSWORD', '')

if not USERNAME or not PASSWORD:
    print("Please set GARMIN_USERNAME and GARMIN_PASSWORD environment variables.")
    exit(1)

api = None
try:
    # Initialize Garmin API with credentials
    # Tokens are automatically saved to ~/.garminconnect/garmin_tokens.json
    api = Garmin(USERNAME, PASSWORD)
    api.login()
    print("Successfully logged in to Garmin Connect.")

    # Example: Get today's activity data
    today = datetime.date.today()
    activities = api.get_activities_by_date(today.isoformat(), today.isoformat())
    
    if activities:
        print(f"Activities for {today.isoformat()}:")
        for activity in activities:
            print(f"  - {activity['activityType']['typeKey']}: {activity['distance']}m, {activity['duration']}s")
    else:
        print(f"No activities found for {today.isoformat()}.")

except Exception as e:
    print(f"An error occurred: {e}")

view raw JSON →