{"id":49736365,"url":"https://github.com/mountainash-io/fitbit-export","last_synced_at":"2026-05-09T08:20:01.638Z","repository":{"id":356075498,"uuid":"1230886639","full_name":"mountainash-io/fitbit-export","owner":"mountainash-io","description":"Extract all your Fitbit data before the API shuts down (September 2026)","archived":false,"fork":false,"pushed_at":"2026-05-06T13:56:52.000Z","size":61,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-06T15:14:19.412Z","etag":null,"topics":["api","claude-code","codex","exporter","fitbit","gemini","plugin","skill","skills"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mountainash-io.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-05-06T12:19:10.000Z","updated_at":"2026-05-06T14:02:25.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mountainash-io/fitbit-export","commit_stats":null,"previous_names":["mountainash-io/fitbit-export"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/mountainash-io/fitbit-export","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mountainash-io%2Ffitbit-export","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mountainash-io%2Ffitbit-export/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mountainash-io%2Ffitbit-export/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mountainash-io%2Ffitbit-export/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mountainash-io","download_url":"https://codeload.github.com/mountainash-io/fitbit-export/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mountainash-io%2Ffitbit-export/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32811813,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-08T08:22:46.396Z","status":"online","status_checked_at":"2026-05-09T02:00:06.633Z","response_time":123,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","claude-code","codex","exporter","fitbit","gemini","plugin","skill","skills"],"created_at":"2026-05-09T08:19:56.213Z","updated_at":"2026-05-09T08:20:01.624Z","avatar_url":"https://github.com/mountainash-io.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fitbit-export\n\n**Python CLI to extract all your Fitbit data before the API shuts down.**\n\nGoogle is phasing out Fitbit accounts and the legacy Fitbit Web API:\n\n| Date | What happens |\n|------|-------------|\n| **May 19, 2026** | Fitbit-only accounts stop working — migrate to Google account |\n| **July 15, 2026** | Data for non-migrated accounts deleted from servers |\n| **September 2026** | Fitbit Web API shut down permanently — no more API access |\n\n## Quick Start\n\n```bash\n# Install and run (requires uv)\nuvx git+https://github.com/mountainash-io/fitbit-export --help\n\n# Or clone and install locally\ngit clone https://github.com/mountainash-io/fitbit-export.git\ncd fitbit-export\nuv pip install .\nfitbit-export --help\n```\n\n## AI Agent Skill\n\nAn LLM skill that guides you through the export interactively is available as a separate repo. Install it to Claude Code, Cursor, Codex, and 50+ other agents:\n\n```bash\nnpx skills add mountainash-io/fitbit-export-skill\n```\n\nSee [fitbit-export-skill](https://github.com/mountainash-io/fitbit-export-skill) for details.\n\n## What Gets Exported\n\n| Data Type | Description |\n|-----------|-------------|\n| activities | All logged exercises and workouts |\n| activity_tcx | GPS tracks (TCX files) for activities |\n| sleep | Sleep sessions with stage data (deep, light, REM, awake) |\n| heart_rate_summary | Daily resting heart rate and HR zones |\n| heart_rate_intraday | Minute-by-minute heart rate (largest dataset) |\n| hrv | Heart rate variability |\n| spo2 | Blood oxygen levels |\n| breathing_rate | Nightly breathing rate |\n| skin_temperature | Nightly skin temperature deviation |\n| weight | Weight, BMI, and body fat logs |\n| daily_summary | Daily steps, calories, distance, floors, active minutes |\n| nutrition | Food and water logs |\n\n## CLI Commands\n\n```\nfitbit-export --help         Show all commands and options\nfitbit-export export --all   Export all data types\nfitbit-export export --types spo2,weight,sleep\nfitbit-export add-user       Add a Fitbit account (you must be logged in at fitbit.com)\nfitbit-export list-users     List authenticated accounts with progress\nfitbit-export status         Show export progress dashboard\nfitbit-export config         View or set configuration\nfitbit-export refresh        Refresh OAuth tokens\n```\n\n## Export Options\n\n```\nfitbit-export export [OPTIONS]\n\n--all            Export all data types (required unless --types given)\n--types TYPES    Comma-separated data types to export\n--user ID        Export only this user\n--start DATE     Start date (default: 2010-01-01)\n--end DATE       End date (default: today)\n--output DIR     Output directory (default: ~/fitbit-export-output)\n```\n\n## Multiple Users (Family Accounts)\n\n```bash\nfitbit-export add-user       # Log into fitbit.com first, then run this\nfitbit-export add-user       # To add another user: log out of fitbit.com, log in as them, run again\nfitbit-export list-users     # List all authenticated users\nfitbit-export export --all   # Export all users\nfitbit-export export --all --user 26CBRV  # Export specific user\n```\n\n## Resuming Interrupted Exports\n\nThe tool saves progress incrementally. If interrupted (rate limits, crashes, laptop sleep), run again — it picks up where it left off.\n\nFitbit allows 150 API requests per hour. Intraday heart rate is the largest dataset (1 request per day of data) and can take many sessions for long-time users.\n\n## Output Structure\n\n```\n~/fitbit-export-output/\n└── 26CBRV-nathaniel/\n    ├── raw/\n    │   ├── sleep/\n    │   │   └── sleep_2010-01-01_2010-04-10.json\n    │   ├── activities/\n    │   │   └── activities_2010-01-01_2026-05-07.json\n    │   ├── activity_tcx/\n    │   │   ├── 12345.tcx\n    │   │   └── ...\n    │   ├── heart_rate_summary/\n    │   │   └── heart_rate_summary_2010-01-01_2010-12-31.json\n    │   ├── heart_rate_intraday/\n    │   │   ├── 2013.json\n    │   │   └── ...\n    │   ├── weight/\n    │   │   └── weight_2010-01-01_2010-01-30.json\n    │   ├── daily_summary/\n    │   │   └── daily_summary_2010-01-01_2026-05-07.json\n    │   ├── nutrition/\n    │   │   └── nutrition_2010-01-01_2026-05-07.json\n    │   ├── hrv/\n    │   │   └── hrv_2010-01-01_2010-01-30.json\n    │   ├── spo2/\n    │   │   └── spo2_2010-01-01_2026-05-07.json\n    │   ├── breathing_rate/\n    │   │   └── breathing_rate_2010-01-01_2010-01-30.json\n    │   └── skin_temperature/\n    │       └── skin_temperature_2010-01-01_2010-01-30.json\n    └── .checkpoint.json\n```\n\nEach data type gets its own directory. Files are named `{type}_{start}_{end}.json` so they are self-describing and multiple runs with different date ranges produce separate files rather than overwriting.\n\n## Requirements\n\n- Python 3.11+\n- [uv](https://docs.astral.sh/uv/) (recommended) or pip\n- A Fitbit account with data\n- **Port 8080 available locally** — the OAuth callback runs a temporary local server on `localhost:8080` during authentication. This means the tool must run on a machine with a browser and local network access (not in a remote/cloud sandbox).\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmountainash-io%2Ffitbit-export","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmountainash-io%2Ffitbit-export","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmountainash-io%2Ffitbit-export/lists"}