garminconnect
Python 3 API wrapper for Garmin Connect
What it is and what it does
garminconnect is a Python 3 API client for Garmin Connect that handles authentication, token management, and access to API endpoints across multiple categories. It abstracts away the complexity of Garmin's mobile SSO flow, managing token refresh automatically so you can focus on querying health data, activities, devices, and fitness metrics.
The library covers health metrics (heart rate, sleep, stress, SpO2, HRV), activity management (workouts, typed uploads, scheduling), nutrition logging, golf scorecards, device information, goals and achievements, and historical trends. It uses curl_cffi, requests, and ua-generator to handle HTTP communication and maintain compatibility with Garmin's API endpoints. Authentication tokens are stored locally and refreshed transparently; only a full re-login is needed if the refresh token expires.
Use it for:
- Extract daily step counts, calories, and resting heart rate for personal fitness dashboards or health tracking applications.
- Programmatically upload workout data (running, cycling, swimming) to Garmin Connect or sync with external fitness platforms.
- Retrieve historical activity and health trends over date ranges for analysis, reporting, or data migration.
- Automate device management tasks like querying connected devices, alarms, or solar data without manual Garmin Connect login.
- Build integrations that pull Garmin golf scorecard data, shot-by-shot metrics, or club statistics for analysis.
- Monitor personal records, badges, challenges, and training readiness metrics for coaching or performance tracking workflows.
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Python wrapper for the Garmin Connect API that provides programmatic access to health metrics, activity data, device information, and fitness tracking from Garmin Connect accounts.
Yes. The package is actively maintained, has low install friction, carries no known vulnerabilities, and provides comprehensive API coverage for Garmin Connect. It's suitable for production use if you need programmatic access to Garmin health and fitness data. Requires Python 3.12 or later.
Install
garminconnect on PyPI
pip
pip install garminconnectuv
uv add garminconnectpoetry
poetry add garminconnectInstalling garminconnect
Before you install
Low friction installation with three runtime dependencies (curl_cffi, requests, ua-generator). Package is actively maintained with a recent release (3 days old) and 2804 GitHub stars. Requires Python 3.12 or later.
License in practice
MIT license permits free use, modification, and distribution with minimal restrictions—suitable for both open-source and commercial projects.
Quickstart
pip install garminconnect curl_cffi
from garminconnect import Garmin
client = Garmin(email='user@example.com', password='password')
client.login()
stats = client.get_stats_today()
print(f"Steps: {stats['steps']}, Calories: {stats['calories']}")
Requires Python 3.12 or later. First login may require MFA code entry via interactive prompt if multi-factor authentication is enabled on the Garmin account.
Verify before relying
- Whether all documented API methods are fully functional or if some are experimental/partial implementations
- Rate limiting or throttling behavior when making multiple API calls in succession
- Whether MFA support covers all Garmin account types or only specific regions/configurations
Package facts
| License | MIT (permissive) |
| Python support | supports the current Python release (>=3.12) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 3 — curl_cffi, requests, ua-generator |
| Maintenance | actively maintained — 3 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 741,000/month — #5,183 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: garminconnect-0.3.10-py3-none-any.whl
Keywords: garmin connect, api, garmin
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
garthGarth provides Python access to Garmin Connect…
permissive · top 15,000 on PyPI
ha-garminPython client for the Garmin Connect API with…
permissive · top 15,000 on PyPI
stravalibstravalib provides a Python client for…
permissive · top 15,000 on PyPI
fit-toolReads and writes Garmin FIT files for Activity,…
permissive · top 15,000 on PyPI
fitparseParses ANT/Garmin .FIT binary files, extracting…
permissive · top 15,000 on PyPI
nextcloudmonitorWraps the Nextcloud monitor API to retrieve…
permissive · top 15,000 on PyPI
garmin-fit-sdkDecodes Garmin FIT (Flexible and Interoperable…
unclear · top 15,000 on PyPI
odg-clientodg-client is a Python client library for…
unclear · top 15,000 on PyPI
aiowithingsAsynchronous Python client for fetching data…
permissive · top 15,000 on PyPI
fitdecodeParses and decodes FIT files (Garmin's ANT+…
permissive · top 15,000 on PyPI