---
title: "Fitness API deprecation scanner: find Fitbit Web API, Google Fit and other dead calls"
canonical: "https://aifitnessapi.com/tools/deprecation-scanner"
markdown: "https://aifitnessapi.com/tools/deprecation-scanner.md"
type: "tool"
last_reviewed: "2026-11-06"
description: "Paste code or a manifest and find Fitbit Web API, Google Fit and other retired fitness API calls, each with its replacement. Runs in your browser."
publisher: "AIFitnessAPI — funded by KinesteX; first-party pages disclose it"
cite_as: "\"Fitness API deprecation scanner: find Fitbit Web API, Google Fit and other dead calls\", AIFitnessAPI, https://aifitnessapi.com/tools/deprecation-scanner"
---

# Fitness API deprecation scanner: find Fitbit Web API, Google Fit and other dead calls

> Paste code, a package.json, build.gradle, Podfile or requirements.txt, or a list of URLs, and this scanner finds references to fitness APIs and SDKs their vendors have shut down, scheduled to shut down or deprecated: all 121 Fitbit Web API endpoints (turn-off November 2, 2026, per Google), the Google Fit REST and Android APIs (end of support 2026), and 10 more from this site's Fitness API Graveyard, 129 patterns in all. Each hit shows the line, what happened in the vendor's own words at the precision the vendor gave, and the replacement the vendor or Google's migration tables name, with the migration guide. The scan runs in your browser; nothing is uploaded. The same rules run in CI as a GitHub Action.

- Canonical: https://aifitnessapi.com/tools/deprecation-scanner
- Last reviewed: 2026-11-06
- Publisher: AIFitnessAPI (https://aifitnessapi.com)
- Cite as: "Fitness API deprecation scanner: find Fitbit Web API, Google Fit and other dead calls", AIFitnessAPI, https://aifitnessapi.com/tools/deprecation-scanner

---

*[Interactive: the scanner: paste text or open files, and see each hit with its line, the vendor's words and the replacement, in the browser at https://aifitnessapi.com/tools/deprecation-scanner; not reproduced in this mirror.]*

## Run the same scan in CI

```yaml
name: Fitness API deprecation check
on: [pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: nikitastarovzz/aifitnessapi/actions/fitness-api-deprecation-check@main
        with:
          path: .
          fail-on: error # or: warning, never
```

GitHub Action: uses: nikitastarovzz/aifitnessapi/actions/fitness-api-deprecation-check@main (inputs path, exclude, fail-on = error | warning | never; outputs hits, errors, warnings). It writes an annotation on each line and a job summary table, with no dependencies and nothing sent anywhere. "error" means the vendor says the API is gone, or it is dying and the date the vendor gave has passed; "warning" means deprecated, or dying with the date still ahead. A line containing fitness-api-deprecation-ignore is skipped.

## What it looks for

129 patterns over 14 entries of [the Fitness API Graveyard](https://aifitnessapi.com/graveyard). Status and date are the graveyard’s, which keeps each vendor’s precision: a year stays a year. Each Fitbit hit links its row on [the Fitbit to Google Health API map](https://aifitnessapi.com/tools/fitbit-to-google-health).

| API or SDK | Status | What is matched | Replacement the vendor names |
|---|---|---|---|
| [Fitbit Web API](https://aifitnessapi.com/graveyard#fitbit-web-api) | Dying. Turn-off: November 2, 2026 | Every endpoint path in Fitbit's reference (102 paths for 121 endpoints), its OAuth endpoints on a fitbit.com host, the api.fitbit.com host, and fitbit (PyPI), a client for the Fitbit Web API | [Google Health API](https://aifitnessapi.com/google-health-api) |
| [Terra legacy widget session endpoint](https://aifitnessapi.com/graveyard#terra-legacy-widget-session) | Dying. Deprecation planned: November 3, 2026 | Terra legacy widget session (POST /v2/auth/generateWidgetSession) | [POST access.tryterra.co/api/widget/session](https://aifitnessapi.com/integrate/terra-api) |
| [Google Fit APIs (Android and REST)](https://aifitnessapi.com/graveyard#google-fit-apis) | Dying. End of support: 2026 | Google Fit REST API (www.googleapis.com/fitness/v1); Google Fit Android SDK (com.google.android.gms:play-services-fitness); Google Fit History API (Fitness.getHistoryClient); Google Fit Session API (Fitness.getSessionsClient); Google Fit Recording API (Fitness.getRecordingClient); react-native-google-fit (npm), a client for the Google Fit | [Google Health API (cloud)](https://aifitnessapi.com/google-health-api); [Health Connect (Android)](https://aifitnessapi.com/health-connect) |
| [Google Fit Goals API](https://aifitnessapi.com/graveyard#google-fit-goals-api) | Dying. End of support: 2026 | Google Fit Goals API (Fitness.getGoalsClient) | None |
| [Google Fit Sensors API and BLE API](https://aifitnessapi.com/graveyard#google-fit-sensors-ble-apis) | Dying. End of support: 2026 | Google Fit Sensors API (Fitness.getSensorsClient) | Android Sensors framework or Fused Location Provider (Sensors API); Android Bluetooth APIs (BLE API) |
| [Strava Club Activities, Club Members and Club Admins endpoints](https://aifitnessapi.com/graveyard#strava-club-endpoints) | Dead. Removed: September 1, 2026 | Strava club activities endpoint (/api/v3/clubs/{id}/activities); Strava club members endpoint (/api/v3/clubs/{id}/members); Strava club admins endpoint (/api/v3/clubs/{id}/admins) | None |
| [Samsung Health SDK for Android](https://aifitnessapi.com/graveyard#samsung-health-sdk-android) | Deprecated. Deprecated: July 31, 2025 | Samsung Health SDK for Android (package com.samsung.android.sdk.healthdata) | [Samsung Health Data SDK](https://aifitnessapi.com/integrate/samsung-health-api) |
| [Oura API V1](https://aifitnessapi.com/graveyard#oura-api-v1) | Dead. Removed: January 22, 2024 | Oura API V1 (api.ouraring.com/v1/) | [Oura API V2](https://aifitnessapi.com/integrate/oura-api) |
| [WHOOP API v1](https://aifitnessapi.com/graveyard#whoop-api-v1) | Deprecated. No longer supported | WHOOP API v1 (/developer/v1/activity/sleep); WHOOP API v1 (/developer/v1/activity/workout); WHOOP API v1 (/developer/v1/cycle); WHOOP API v1 (/developer/v1/recovery) | [WHOOP API v2](https://aifitnessapi.com/integrate/whoop-api) |
| [MediaPipe Pose (Legacy Solution)](https://aifitnessapi.com/graveyard#mediapipe-legacy-pose) | Deprecated. Upgraded to a new solution: May 10, 2023 | MediaPipe Pose legacy solution (mp.solutions.pose); MediaPipe Pose legacy web package (@mediapipe/pose) | [MediaPipe Pose Landmarker (Tasks API)](https://aifitnessapi.com/motion/mediapipe-pose-landmarker-models) |
| [PoseNet for TensorFlow.js (@tensorflow-models/posenet)](https://aifitnessapi.com/graveyard#tfjs-posenet) | Deprecated. Deprecated | PoseNet for TensorFlow.js (@tensorflow-models/posenet) | [@tensorflow-models/pose-detection](https://aifitnessapi.com/motion/movenet-models) |
| [Strava Running Races endpoints](https://aifitnessapi.com/graveyard#strava-running-races) | Dead. Removed: November 1, 2021 | Strava running races endpoints (/api/v3/running_races) | None |
| [Moves app and developer API](https://aifitnessapi.com/graveyard#moves-api) | Dead. Shut down: July 31, 2018 | Moves API (api.moves-app.com) | None |
| [Google Health (personal health record service)](https://aifitnessapi.com/graveyard#google-health-2008) | Dead. Retired: January 1, 2012 | Google Health data feeds (www.google.com/health/feeds) | None |

### What it does not look for

- [Oura personal access tokens](https://aifitnessapi.com/graveyard#oura-personal-access-tokens): A personal access token is sent like any other bearer token, so nothing in code tells it apart from an OAuth token.
- [Google Fit Sensors API and BLE API](https://aifitnessapi.com/graveyard#google-fit-sensors-ble-apis): Google's BLE API page names no client class or method this site could quote, so only the Sensors API half is scanned.

## How a hit is decided

1. Only strings a vendor prints. Every pattern is a written form of something on a vendor page (a path in Fitbit's request tables, a host or a Gradle coordinate in Google's Fit docs, a package name on its registry page), and “Why this pattern” under each hit quotes that page. An API the site has not sourced is not guessed at.
2. Most specific wins. A Fitbit URL is matched against every endpoint path, placeholders and all ({date}, ${id}, %s), and the longest fixed text wins. The bare host, or a /1/user/ path in a file that names Fitbit, reports only when no endpoint matched the line, which is how a URL built by string concatenation is still found.
3. Packages by registry. npm names match in code and package.json; PyPI names only on a line of a Python manifest (requirements.txt, pyproject.toml, Pipfile), since a Python import name need not be the package name.
4. Severity from the vendor's date. Red (an error in CI) when the vendor says it is gone, or it is dying and the date given has passed; a year counts as passed only after December 31. Amber (a warning) for deprecated, or dying with the date ahead.
5. The replacement is the vendor's. For Fitbit endpoints, the Google Health API data type and method from Google's migration tables, the same rows as the Fitbit to Google Health API map; where the tables have no row, the hit says so.

A free tool from AIFitnessAPI. More at [free tools for health-app builders](https://aifitnessapi.com/tools).

## The other 15 tools

- [Which error is this?](https://aifitnessapi.com/tools/error-diagnoser): Paste an error string and get the matching HKError.Code case in Apple's wording, plus the guide that covers it.
- [Sum it or average it?](https://aifitnessapi.com/tools/aggregation-checker): Whether Apple describes a quantity type as cumulative or discrete, with the sentence that says so.
- [Apple type, Android record](https://aifitnessapi.com/tools/identifier-translator): Two-way lookup between HealthKit identifiers and Health Connect records — verified pairs only.
- [HealthKit permission builder](https://aifitnessapi.com/tools/permission-builder): Pick the types your app touches: the Info.plist keys, the toShare/toRead Swift, and the Health Connect record names.
- [HealthKit query generator](https://aifitnessapi.com/tools/query-generator): Pick a quantity type and a window; get the HKStatisticsQuery with the aggregation option Apple's own prose states.
- [Fitness app stack generator](https://aifitnessapi.com/tools/stack-generator): Answer four questions and get the HealthKit types and APIs that survive them, with the exclusions shown.
- [Synthetic health data generator](https://aifitnessapi.com/tools/sample-data): Seeded synthetic HealthKit, Health Connect and Google Health API fixtures as JSON or CSV, with per-record UTC offsets.
- [Is this webhook real?](https://aifitnessapi.com/tools/webhook-verifier): Paste an Oura, WHOOP, Terra, Polar, Strava, Withings, Wahoo or Google Health API webhook: the vendor's documented check, run in your browser.
- [Wearable OAuth playground](https://aifitnessapi.com/tools/oauth-playground): Pick Oura, WHOOP, Strava, Polar, Withings, Wahoo, Dexcom, Suunto or Google Health: documented endpoints and scopes, an authorize URL, a PKCE pair and token curl. Sends nothing.
- [Starter scaffold generator](https://aifitnessapi.com/tools/starter-scaffold): Pick Express, Next.js or FastAPI and Oura, WHOOP, Polar, Strava or Wahoo: a tested project skeleton with OAuth routes, a token store and verified webhooks, as a .zip.
- [Pose keypoint playground](https://aifitnessapi.com/tools/keypoint-playground): Click a joint and see its index in BlazePose, COCO, OpenPose, ML Kit and Apple Vision, then copy an index map built from matching names only.
- [Exercise form rules](https://aifitnessapi.com/tools/exercise-form-rules): The joint-angle thresholds open-source exercise trackers use for squats, push-ups, lunges, planks, curls and presses, each quoted from its code; null where none says.
- [Exercise taxonomy crosswalk](https://aifitnessapi.com/tools/exercise-taxonomy-crosswalk): free-exercise-db, wger and ExerciseDB v1 categories, equipment and muscles against HealthKit and Health Connect workout types, matched by name only.
- [Health data schema converter](https://aifitnessapi.com/tools/schema-converter): Paste a HealthKit export row, Health Connect record or Google Health API data point and see it in one unified schema, each field traced to its source.
- [Fitbit to Google Health API map](https://aifitnessapi.com/tools/fitbit-to-google-health): Search every Fitbit Web API endpoint and see its Google Health API data type, method and scopes from Google's migration tables, or that none is listed.

The planners and demos — the API picker, the cost planner, the side-by-side comparison, the day-boundary demo, the pose-model benchmark, the Bluetooth heart-rate lab and the step lab — are listed with these on [free tools for health-app builders](https://aifitnessapi.com/tools).

## Next step

Turning this into a choice of API:

- [Migrating from the Fitbit Web API to the Google Health API](https://aifitnessapi.com/migrate/fitbit-web-api-to-google-health)
- [How to migrate from Google Fit to Health Connect](https://aifitnessapi.com/migrate/google-fit-to-health-connect)
- [Migrate off a deprecated fitness API](https://aifitnessapi.com/migrate/migrate-off-a-deprecated-fitness-api)
