{"adoption": {"forks": 516, "observed_at": "2026-08-28T04:07:27.406681+00:00", "stars": 2878}, "canonical_url": "https://ross.abutalabs.com/products/python-garminconnect", "card": {"archived": false, "artifact_type": "library", "description": "Python 3 API wrapper for Garmin Connect to get statistics and set activities", "domain": ["healthcare", "apis", "data-science", "sports"], "enriched": true, "function": ["http-client", "sdk", "developer-tools"], "health_score": 99, "homepage": null, "language": "Python", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["cyberjunky/python-garminconnect"], "name": "cyberjunky/python-garminconnect", "platform": ["python", "cross-platform"], "pushed_at": "2026-08-22T06:42:56+00:00", "repo": "cyberjunky/python-garminconnect", "stars": 2878, "tags": ["garmin-connect", "api-wrapper", "fitness-tracking", "health-data", "wearables"], "topics": ["fitness", "garmin", "garmin-connect", "garmin-sdk", "health"], "urls": [], "use_cases": ["download my garmin connect health data with python", "get daily steps and sleep data from garmin watch", "upload workouts to garmin connect programmatically", "export garmin activity history to json", "track weight and body composition from garmin scale", "access garmin hrv and vo2 max metrics via api"], "what_it_is": "A Python 3 API wrapper for Garmin Connect that lets you fetch health statistics, activities, workouts, and device data from Garmin wearables. It covers 140+ endpoints across categories like daily health metrics, training, body composition, and gear management.", "when_to_avoid": ["you need an official, guaranteed-stable Garmin API - this is an unofficial reverse-engineered wrapper", "you work in a language other than Python", "you need real-time streaming of wearable sensor data"], "when_to_choose": ["you use Python and want programmatic access to Garmin Connect data", "you need broad coverage of Garmin endpoints including workouts, gear, and health metrics", "you want a maintained wrapper with token-based auth and examples"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/python-garminconnect", "repo": "cyberjunky/python-garminconnect", "role": "main", "score": 99}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T07:35:34.785591+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bea379a86359b361a6a8a25a002fc81c98e0e5034b70022277a344cd0692663a", "fetched_at": "2026-08-28T04:07:27.406681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cyberjunky/python-garminconnect"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T07:35:34.785591+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bea379a86359b361a6a8a25a002fc81c98e0e5034b70022277a344cd0692663a", "fetched_at": "2026-08-28T04:07:27.406681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cyberjunky/python-garminconnect"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T07:35:34.785591+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bea379a86359b361a6a8a25a002fc81c98e0e5034b70022277a344cd0692663a", "fetched_at": "2026-08-28T04:07:27.406681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cyberjunky/python-garminconnect"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T07:35:34.785591+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bea379a86359b361a6a8a25a002fc81c98e0e5034b70022277a344cd0692663a", "fetched_at": "2026-08-28T04:07:27.406681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cyberjunky/python-garminconnect"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T07:35:34.785591+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bea379a86359b361a6a8a25a002fc81c98e0e5034b70022277a344cd0692663a", "fetched_at": "2026-08-28T04:07:27.406681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cyberjunky/python-garminconnect"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T07:35:34.785591+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bea379a86359b361a6a8a25a002fc81c98e0e5034b70022277a344cd0692663a", "fetched_at": "2026-08-28T04:07:27.406681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cyberjunky/python-garminconnect"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:07:27.406681+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T07:35:34.785591+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bea379a86359b361a6a8a25a002fc81c98e0e5034b70022277a344cd0692663a", "fetched_at": "2026-08-28T04:07:27.406681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cyberjunky/python-garminconnect"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T07:35:34.785591+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bea379a86359b361a6a8a25a002fc81c98e0e5034b70022277a344cd0692663a", "fetched_at": "2026-08-28T04:07:27.406681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cyberjunky/python-garminconnect"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T07:35:34.785591+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bea379a86359b361a6a8a25a002fc81c98e0e5034b70022277a344cd0692663a", "fetched_at": "2026-08-28T04:07:27.406681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cyberjunky/python-garminconnect"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T07:35:34.785591+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "bea379a86359b361a6a8a25a002fc81c98e0e5034b70022277a344cd0692663a", "fetched_at": "2026-08-28T04:07:27.406681+00:00", "kind": "readme", "missing": false, "url": "https://github.com/cyberjunky/python-garminconnect"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 99, "longevity": 100, "rhythm": 99}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2434, "days_push": 11, "days_rel": 11, "gap_med": 9.0, "n_releases_24m": 31}, "score": 99, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}