Skip to content
AF
Free Tool

Fitbit Web API to Google Health API: every endpoint, mapped or not

Search all 121 endpoints in Fitbit's Web API reference (read 2026-11-05) and see what replaces each in the Google Health API, using only Google's own migration tables (read 2026-10-31): the data type, the method Google's endpoint table names, and the scopes. 60 endpoints map on both halves, 2 map their data but have no endpoint-type row, 2 have only a same-named discovery method, and 57 — friends, badges, alarms, goals, favorites, water and Fitbit's OAuth endpoints among them — are not in Google's tables, and the tool says so.

121 of 121 endpoints

  • Get AZM Time Series by Date

    Active Zone Minutes (AZM) Time Series

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/activities/active-zone-minutes/date/[date]/[period].json

    Scope: activity

    This endpoint returns the daily summary values over a period of time by specifying a date and time period.

    Google Health API
    • Active Zone Minutes active-zone-minutesGoogle’s row: “Active Zone Minutes”. On Fitbit’s page: active-zone-minutes
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-zone-minutes/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-zone-minutes/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Active Zone Minutes) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Get AZM Time Series by Interval

    Active Zone Minutes (AZM) Time Series

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/activities/active-zone-minutes/date/[start-date]/[end-date].json

    Scope: activity

    This endpoint returns the daily summary values over an interval by specifying a date range.

    Google Health API
    • Active Zone Minutes active-zone-minutesGoogle’s row: “Active Zone Minutes”. On Fitbit’s page: active-zone-minutes
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-zone-minutes/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-zone-minutes/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Active Zone Minutes) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/activities/[resource-path]/date/[date]/[period].json

    Scope: activity

    Retrieves the activity data for a given resource over a period of time by specifying a date and time period. The response will include only the daily summary values.

    Google Health API
    • Steps stepsGoogle’s row: “Steps”. On Fitbit’s page: steps
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/steps/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/steps/dataPoints:dailyRollUp
    • Distance distanceGoogle’s row: “Distance”. On Fitbit’s page: distance
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/distance/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/distance/dataPoints:dailyRollUp
    • Floors floorsGoogle’s row: “Floors”. On Fitbit’s page: floors
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/floors/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/floors/dataPoints:dailyRollUp
    • Altitude altitudeGoogle’s row: “Elevation”. On Fitbit’s page: elevation
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/altitude/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/altitude/dataPoints:dailyRollUp
    • Active Energy Burned active-energy-burnedGoogle’s row: “Activity Calories”. On Fitbit’s page: activityCaloriesRepresents the calories burned during active periods, inclusive of BMR for those periods. In the Google Health API, this can be reconstructed by adding BMR to the `active-energy-burned` data type (which tracks activity-only burn, excluding basal rate).
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-energy-burned/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-energy-burned/dataPoints:dailyRollUp
    • Basal Energy Burned basal-energy-burnedGoogle’s row: “Activity `caloriesBMR`”. On Fitbit’s page: caloriesBMRThe calories burned due to Basal Metabolic Rate (BMR) over a specific period of time.Google’s migration table names basal-energy-burned, but Google’s data-types table does not list it, so its methods and scopes are unknown here.
    • Sedentary Period sedentary-periodGoogle’s row: “Activity time series minutes sedentary”. On Fitbit’s page: minutesSedentary
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/sedentary-period/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/sedentary-period/dataPoints:dailyRollUp
    • Swim Lengths Data swim-lengths-dataGoogle’s row: “Activity time series swimming strokes”. On Fitbit’s page: swimming-strokes
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/swim-lengths-data/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/swim-lengths-data/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Steps, Distance, Floors, Elevation, Activity Calories, Activity `caloriesBMR`, Activity time series minutes sedentary, Activity time series swimming strokes) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/activities/[resource-path]/date/[start-date]/[end-date].json

    Scope: activity

    Retrieves the activity data for a given resource over a period of time by specifying a date range. The response will include only the daily summary values.

    Google Health API
    • Steps stepsGoogle’s row: “Steps”. On Fitbit’s page: steps
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/steps/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/steps/dataPoints:dailyRollUp
    • Distance distanceGoogle’s row: “Distance”. On Fitbit’s page: distance
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/distance/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/distance/dataPoints:dailyRollUp
    • Floors floorsGoogle’s row: “Floors”. On Fitbit’s page: floors
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/floors/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/floors/dataPoints:dailyRollUp
    • Altitude altitudeGoogle’s row: “Elevation”. On Fitbit’s page: elevation
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/altitude/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/altitude/dataPoints:dailyRollUp
    • Active Energy Burned active-energy-burnedGoogle’s row: “Activity Calories”. On Fitbit’s page: activityCaloriesRepresents the calories burned during active periods, inclusive of BMR for those periods. In the Google Health API, this can be reconstructed by adding BMR to the `active-energy-burned` data type (which tracks activity-only burn, excluding basal rate).
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-energy-burned/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-energy-burned/dataPoints:dailyRollUp
    • Basal Energy Burned basal-energy-burnedGoogle’s row: “Activity `caloriesBMR`”. On Fitbit’s page: caloriesBMRThe calories burned due to Basal Metabolic Rate (BMR) over a specific period of time.Google’s migration table names basal-energy-burned, but Google’s data-types table does not list it, so its methods and scopes are unknown here.
    • Sedentary Period sedentary-periodGoogle’s row: “Activity time series minutes sedentary”. On Fitbit’s page: minutesSedentary
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/sedentary-period/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/sedentary-period/dataPoints:dailyRollUp
    • Swim Lengths Data swim-lengths-dataGoogle’s row: “Activity time series swimming strokes”. On Fitbit’s page: swimming-strokes
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/swim-lengths-data/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/swim-lengths-data/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Steps, Distance, Floors, Elevation, Activity Calories, Activity `caloriesBMR`, Activity time series minutes sedentary, Activity time series swimming strokes) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/activities/goals/[period].json

    Scope: activity

    Creates or updates a user's daily or weekly activity goal.

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Mapped
    Fitbit Web API
    POST /1/user/[user-id]/activities.json

    Scope: activity

    Creates a log entry containing the Fitbit user's activity or private custom activity.

    Google Health API
    • Exercise exerciseGoogle’s row: “Recorded activity”. On Fitbit’s page: activityNameRecorded workouts or exercise sessions, which include start/end times, activity types, and session metrics.
      • patchPATCH https://health.googleapis.com/v4/users/{usersId}/dataTypes/exercise/dataPoints/{dataPointsId}

    Endpoint type: “CREATE & UPDATE Logs” → patch method

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Recorded activity) and the endpoint type (“CREATE & UPDATE Logs”).

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/activities/favorite/[activity-id].json

    Scope: activity

    Adds the activity with the given ID to user's list of favorite activities.

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Mapped
    Fitbit Web API
    DELETE /1/user/[user-id]/activities/[activity-log-id].json

    Scope: activity

    Deletes a user’s activity log entry with the given ID.

    Google Health API
    • Exercise exerciseGoogle’s row: “Recorded activity”. On Fitbit’s page: activity-log-idRecorded workouts or exercise sessions, which include start/end times, activity types, and session metrics.
      • batchDeletePOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/exercise/dataPoints:batchDelete

    Endpoint type: “DELETE Logs” → batchDelete method

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Recorded activity) and the endpoint type (“DELETE Logs”).

  • Not in Google's tables
    Fitbit Web API
    DELETE /1/user/[user-id]/activities/favorite/[activity-id].json

    Scope: activity

    Removes the activity from a user’s list of favorite activities.

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/activities/goals/[period].json

    Scope: activity

    Retrieves a user's current daily or weekly activity goals.

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/activities/list.json

    Scope: activity

    Retrieves a list of a user's activity log entries before or after a given day.

    Google Health API
    • Exercise exerciseGoogle’s row: “Recorded activity”. On Fitbit’s page: activityNameRecorded workouts or exercise sessions, which include start/end times, activity types, and session metrics.
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/exercise/dataPoints

    Endpoint type: “GET (Log List)” → list method

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Recorded activity) and the endpoint type (“GET (Log List)”).

  • Name match
    Fitbit Web API
    GET /1/user/[user-id]/activities/[log-id].tcx

    Scope: activity and location

    The Training Center XML (TCX) is a data exchange format that contains GPS, heart rate, and lap data. This endpoint retrieves the details of a user's location using GPS and heart rate data during a logged exercise.

    Google Health API
    • users.dataTypes.dataPoints.exportExerciseTcxGET v4/users/{usersId}/dataTypes/{dataTypesId}/dataPoints/{dataPointsId}:exportExerciseTcx

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly.location.readonly

    Google's migration tables do not list this endpoint. The discovery document has a method of the same name; that pairing is this site's name match, not Google's statement.

  • Not in Google's tables
    Fitbit Web API
    GET /1/activities/[activity-id].json

    Scope: activity

    Retrieves the details for a single activity from the Fitbit activities database in the format requested. If available, activity level details will display.

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/activities.json

    Scope: activity

    Retrieves a list of all valid Fitbit public activities and the private, user-created activities from the Fitbit activities database in the format requested. If available, activity level details will display.

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Fitbit Web API
    GET /1/user/[user-id]/activities/date/[date].json

    Scope: activity

    Retrieves a summary and list of a user’s activities and activity log entries for a given day.

    Google Health API
    • Total Calories total-caloriesGoogle’s row: “Activity `caloriesOut`”. On Fitbit’s page: caloriesOutThe complete number of calories burned by a user over a period of time, inclusive of basal metabolic rate and active energy burned.
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/total-calories/dataPoints:dailyRollUp
    • Basal Energy Burned basal-energy-burnedGoogle’s row: “Activity `caloriesBMR`”. On Fitbit’s page: caloriesBMRThe calories burned due to Basal Metabolic Rate (BMR) over a specific period of time.Google’s migration table names basal-energy-burned, but Google’s data-types table does not list it, so its methods and scopes are unknown here.
    • Active Energy Burned active-energy-burnedGoogle’s row: “Activity Calories”. On Fitbit’s page: activityCaloriesRepresents the calories burned during active periods, inclusive of BMR for those periods. In the Google Health API, this can be reconstructed by adding BMR to the `active-energy-burned` data type (which tracks activity-only burn, excluding basal rate).
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-energy-burned/dataPoints:dailyRollUp
    • Steps stepsGoogle’s row: “Steps”. On Fitbit’s page: steps
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/steps/dataPoints:dailyRollUp
    • Floors floorsGoogle’s row: “Floors”. On Fitbit’s page: floors
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/floors/dataPoints:dailyRollUp
    • Altitude altitudeGoogle’s row: “Elevation”. On Fitbit’s page: elevation
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/altitude/dataPoints:dailyRollUp
    • Daily Resting Heart Rate daily-resting-heart-rateGoogle’s row: “Resting heart rate”. On Fitbit’s page: restingHeartRateGoogle’s endpoint table names dailyRollup, which Google’s data-types table does not list for daily-resting-heart-rate.

    Endpoint type: “GET (Log | Summary | Daily Summary) where you are requesting a single day of data” → dailyRollup method with windowSize = 1 day

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Activity `caloriesOut`, Activity `caloriesBMR`, Activity Calories, Steps, Floors, Elevation, Resting heart rate) and the endpoint type (“GET (Log | Summary | Daily Summary) where you are requesting a single day of data”).

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/activities/favorite.json

    Scope: activity

    Retrieves a list of a user's favorite activities.

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/activities/frequent.json

    Scope: activity

    Retrieves a list of a user's frequent activities.

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/activities.json

    Scope: activity

    Retrieves the user's activity statistics.

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/activities/recent.json

    Scope: activity

    Retrieves a list of a user's recent activities types logged with some details of the last activity log of that type.

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/-/activities/[logId]/workout-summary

    Scope: activity

    Exposes the ground contact time and step cadence collected during Run workouts:

    Google Health API

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Authorize

    Authorization

    Not in Google's tables
    Fitbit Web API
    /oauth2/authorize

    Initiates the OAuth 2.0 authorization flow by presenting the consent screen to the Fitbit user.

    Google Health API

    Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints.

  • Not in Google's tables
    Fitbit Web API
    POST /oauth2/token

    The /oauth2/token endpoint can do the following:

    Google Health API

    Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints.

  • Introspect

    Authorization

    Not in Google's tables
    Fitbit Web API
    POST /1.1/oauth2/introspect

    Allows the application to retrieve the active state of an OAuth 2.0 token. This endpoint conforms to RFC 7662 .

    Google Health API

    Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints.

  • OAuth2 Token

    Authorization

    Not in Google's tables
    Fitbit Web API
    POST /oauth2/token

    The /oauth2/token endpoint can do the following:

    Google Health API

    Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints.

  • Refresh Token

    Authorization

    Not in Google's tables
    Fitbit Web API
    POST /oauth2/token

    The /oauth2/token endpoint can do the following:

    Google Health API

    Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints.

  • Revoke Token

    Authorization

    Not in Google's tables
    Fitbit Web API
    POST /oauth2/revoke

    Used to disable a user's authorization for an application. The revoke endpoint, specifying either the access token or refresh token, will remove the user's authorizations and all associated tokens. This endpoint conforms to RFC 7009 .

    Google Health API

    Not in Google's migration tables: the Google Health API uses Google OAuth 2.0, not Fitbit's OAuth endpoints.

  • Fitbit Web API
    GET /1/user/-/health/metrics/glucose/values/[startDate]/[endDate].json

    Scope: blood_glucose

    Retrieves the user's daily, min, max, sum and average values of blood glucose levels within an interval.

    Google Health API
    • Blood Glucose blood-glucoseGoogle’s row: “Blood Glucose”. On Fitbit’s page: glucose
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/blood-glucose/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/blood-glucose/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Blood Glucose) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/body/[resource]/date/[date]/[period].json

    Scope: weight

    Retrieves a list of all user's bmi, body fat, or weight for a given period.

    Google Health API
    • Weight weightGoogle’s row: “Weight”. On Fitbit’s page: weight
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints:dailyRollUp
    • Body Fat body-fatGoogle’s row: “Body fat”. On Fitbit’s page: fat
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Weight, Body fat) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Fitbit Web API
    GET /1/user/[user-id]/body/[resource]/date/[begin-date]/[end-date].json

    Scope: weight

    Retrieves a list of all user's bmi, body fat, or weight for a given date range.

    Google Health API
    • Weight weightGoogle’s row: “Weight”. On Fitbit’s page: weight
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints:dailyRollUp
    • Body Fat body-fatGoogle’s row: “Body fat”. On Fitbit’s page: fat
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Weight, Body fat) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/body/log/fat/date/[date]/[period].json

    Scope: weight

    Retrieves a list of all user's body fat log entries for a given period.

    Google Health API
    • Body Fat body-fatGoogle’s row: “Body fat”. On Fitbit’s page: fat
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Body fat) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Fitbit Web API
    GET /1/user/[user-id]/body/log/fat/date/[start-date]/[end-date].json

    Scope: weight

    Retrieves a list of all user's body fat log entries for a given date range.

    Google Health API
    • Body Fat body-fatGoogle’s row: “Body fat”. On Fitbit’s page: fat
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Body fat) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/body/log/weight/date/[date]/[period].json

    Scope: weight

    Retrieves a list of all user's weight log entries for a given period.

    Google Health API
    • Weight weightGoogle’s row: “Weight”. On Fitbit’s page: weight
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Weight) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Fitbit Web API
    GET /1/user/[user-id]/body/log/weight/date/[start-date]/[end-date].json

    Scope: weight

    Retrieves a list of all user's weight log entries for a given date range.

    Google Health API
    • Weight weightGoogle’s row: “Weight”. On Fitbit’s page: weight
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Weight) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/body/log/fat/goal.json

    Scope: weight

    Create or update a user's body fat goal.

    Google Health API

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Fitbit Web API
    POST /1/user/[user-id]/body/log/fat.json

    Scope: weight

    Creates a body fat log entry.

    Google Health API
    • Body Fat body-fatGoogle’s row: “Body fat”. On Fitbit’s page: fat
      • patchPATCH https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints/{dataPointsId}

    Endpoint type: “CREATE & UPDATE Logs” → patch method

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Body fat) and the endpoint type (“CREATE & UPDATE Logs”).

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/body/log/weight/goal.json

    Scope: weight

    Creates or updates a user's weight goal.

    Google Health API

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Fitbit Web API
    POST /1/user/[user-id]/body/log/weight.json

    Scope: weight

    Creates a weight log entry

    Google Health API
    • Weight weightGoogle’s row: “Weight”. On Fitbit’s page: weight
      • patchPATCH https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints/{dataPointsId}

    Endpoint type: “CREATE & UPDATE Logs” → patch method

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Weight) and the endpoint type (“CREATE & UPDATE Logs”).

  • Fitbit Web API
    DELETE /1/user/[user-id]/body/log/fat/[body-fat-log-id].json

    Scope: weight

    Deletes a body fat log entry

    Google Health API
    • Body Fat body-fatGoogle’s row: “Body fat”. On Fitbit’s page: body-fat-log-id
      • batchDeletePOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints:batchDelete

    Endpoint type: “DELETE Logs” → batchDelete method

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Body fat) and the endpoint type (“DELETE Logs”).

  • Fitbit Web API
    DELETE /1/user/[user-id]/body/log/weight/[weight-log-id].json

    Scope: weight

    Deletes a Weight log entry

    Google Health API
    • Weight weightGoogle’s row: “Weight”. On Fitbit’s page: weight-log-id
      • batchDeletePOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints:batchDelete

    Endpoint type: “DELETE Logs” → batchDelete method

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Weight) and the endpoint type (“DELETE Logs”).

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/body/log/[goal-type]/goal.json

    Scope: weight

    Retrieves a user's body fat and weight goals.

    Google Health API

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Fitbit Web API
    GET /1/user/[user-id]/body/log/fat/date/[date].json

    Scope: weight

    Retrieves a list of all user's body fat log entries for a given date.

    Google Health API
    • Body Fat body-fatGoogle’s row: “Body fat”. On Fitbit’s page: fat
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/body-fat/dataPoints:dailyRollUp

    Endpoint type: “GET (Log | Summary | Daily Summary) where you are requesting a single day of data” → dailyRollup method with windowSize = 1 day

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Body fat) and the endpoint type (“GET (Log | Summary | Daily Summary) where you are requesting a single day of data”).

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/body/log/weight/date/[date].json

    Scope: weight

    Retrieves a list of all user's weight log entries for a given date.

    Google Health API
    • Weight weightGoogle’s row: “Weight”. On Fitbit’s page: weight
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/weight/dataPoints:dailyRollUp

    Endpoint type: “GET (Log | Summary | Daily Summary) where you are requesting a single day of data” → dailyRollup method with windowSize = 1 day

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Weight) and the endpoint type (“GET (Log | Summary | Daily Summary) where you are requesting a single day of data”).

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/br/date/[date].json

    Scope: respiratory_rate

    This endpoint returns average breathing rate data for a single date. Breathing Rate data applies specifically to a user’s “main sleep,” which is the longest single period of time during which they were asleep on a given date.

    Google Health API

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/br/date/[start-date]/[end-date].json

    Scope: respiratory_rate

    This endpoint returns average breathing rate data for a date range. Breathing Rate data applies specifically to a user’s “main sleep,” which is the longest single period of time during which they were asleep on a given date.

    Google Health API

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Get VO2 Max Summary by Date

    Cardio Fitness Score (VO2 Max)

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/cardioscore/date/[date].json

    Scope: cardio_fitness

    This endpoint returns the Cardio Fitness Score (also known as VO2 Max) data for a single date. VO2 Max values will be shown as a range if no run data is available or a single numeric value if the user uses a GPS for runs. See Additional Information for further context.

    Google Health API
    • VO2 Max vo2-maxGoogle’s row: “VO2 Max value”. On Fitbit’s page: vo2MaxGoogle’s endpoint table names dailyRollup, which Google’s data-types table does not list for vo2-max.

    Endpoint type: “GET (Log | Summary | Daily Summary) where you are requesting a single day of data” → dailyRollup method with windowSize = 1 day

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (VO2 Max value) and the endpoint type (“GET (Log | Summary | Daily Summary) where you are requesting a single day of data”).

  • Get VO2 Max Summary by Interval

    Cardio Fitness Score (VO2 Max)

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/cardioscore/date/[start-date]/[end-date].json

    Scope: cardio_fitness

    This endpoint returns the Cardio Fitness Score (also know as VO2 Max) data for a date range. VO2 Max values will be shown as a range if no run data is available or a single numeric value if the user uses a GPS for runs. See Additional Information for further context.

    Google Health API
    • VO2 Max vo2-maxGoogle’s row: “VO2 Max value”. On Fitbit’s page: vo2MaxGoogle’s endpoint table names rollUp, dailyRollUp, which Google’s data-types table does not list for vo2-max.

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (VO2 Max value) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/devices/tracker/[tracker-id]/alarms.json

    Scope: settings

    Creates an alarm for the given device. This endpoint is supported for trackers that support alarms.

    Google Health API

    Scopes: .settings.readonly.settings.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    DELETE /1/user/[user-id]/devices/tracker/[tracker-id]/alarms/[alarm-id].json

    Scope: settings

    Deletes an alarm on the given device. This endpoint is supported for trackers that support alarms.

    Google Health API

    Scopes: .settings.readonly.settings.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Get Alarms

    Devices

    Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/devices/tracker/[tracker-id]/alarms.json

    Scope: settings

    Retrieves the alarms enabled for a specific device. This endpoint is supported for trackers that support alarms.

    Google Health API

    Scopes: .settings.readonly.settings.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/devices.json

    Scope: settings

    Retrieves a list of Fitbit devices paired to a user's account.

    Google Health API
    • users.pairedDevices.getGET v4/users/{usersId}/pairedDevices/{pairedDevicesId}
    • users.pairedDevices.listGET v4/users/{usersId}/pairedDevices

    Endpoint type: “Get Devices” → users.pairedDevices returns the list of paired devices

    Scopes: .settings.readonly.settings.writeonly

    Google's endpoint table names this endpoint (“Get Devices”).

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/devices/tracker/[tracker-id]/alarms/[alarm-id].json

    Scope: settings

    Updates an alarm on the given device. This endpoint is supported for trackers that support alarms.

    Google Health API

    Scopes: .settings.readonly.settings.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Get ECG Log List

    Electrocardiogram (ECG)

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/ecg/list.json

    Scope: electrocardiogram

    This endpoint retrieves a list of the user’s Electrocardiogram (ECG) log entries before or after a given day.

    Google Health API
    • Electrocardiogram (ECG) electrocardiogramGoogle’s row: “Electrocardiogram (ECG)”. On Fitbit’s page: ECG
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/electrocardiogram/dataPoints

    Endpoint type: “GET (Log List)” → list method

    Scopes: .ecg.readonly

    Google's migration tables cover both halves: the data (Electrocardiogram (ECG)) and the endpoint type (“GET (Log List)”).

  • Get Friends

    Friends

    Fitbit: “Deprecated. See Friends”

    Not in Google's tables
    Fitbit Web API
    GET /1.1/user/[user-id]/friends.json

    Scope: social

    This endpoint allows the application to retrieves a list of the specified Fitbit user's friends. This scope does not provide access to the friend's Fitbit data. Those users will need to individually consent to share their data with your application.

    Google Health API

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Get Friends Leaderboard

    Friends

    Fitbit: “Deprecated. See Friends”

    Not in Google's tables
    Fitbit Web API
    GET /1.1/user/-/leaderboard/friends.json

    Scope: social

    This endpoint returns the user's friend leaderboard in the format requested using units in the unit system which corresponds to the Accept-Language header provided. This scope does not provide access to the friend's Fitbit data. Those users will need to individually consent to share their data with your application.

    Google Health API

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/activities/heart/date/[date]/[period].json

    Scope: heartrate

    Retrieves the heart rate time series data over a period of time by specifying a date and time period. The response will include only the daily summary values.

    Google Health API
    • Daily Resting Heart Rate daily-resting-heart-rateGoogle’s row: “Resting heart rate”. On Fitbit’s page: restingHeartRateGoogle’s endpoint table names rollUp, dailyRollUp, which Google’s data-types table does not list for daily-resting-heart-rate.
    • Calories In Heart Rate Zone calories-in-heart-rate-zoneGoogle’s row: “`caloriesOut` in each heart rate zone”. On Fitbit’s page: caloriesOut
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/calories-in-heart-rate-zone/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/calories-in-heart-rate-zone/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Resting heart rate, `caloriesOut` in each heart rate zone) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/activities/heart/date/[start-date]/[end-date].json

    Scope: heartrate

    Retrieves the heart rate time series data over a period of time by specifying a date range. The response will include only the daily summary values.

    Google Health API
    • Daily Resting Heart Rate daily-resting-heart-rateGoogle’s row: “Resting heart rate”. On Fitbit’s page: restingHeartRateGoogle’s endpoint table names rollUp, dailyRollUp, which Google’s data-types table does not list for daily-resting-heart-rate.
    • Calories In Heart Rate Zone calories-in-heart-rate-zoneGoogle’s row: “`caloriesOut` in each heart rate zone”. On Fitbit’s page: caloriesOut
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/calories-in-heart-rate-zone/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/calories-in-heart-rate-zone/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Resting heart rate, `caloriesOut` in each heart rate zone) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Get HRV Summary by Date

    Heart Rate Variability

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/hrv/date/[date].json

    Scope: heartrate

    This endpoint returns the Heart Rate Variability (HRV) data for a single date. HRV data applies specifically to a user’s “main sleep,” which is the longest single period of time asleep on a given date.

    Google Health API
    • Daily Heart Rate Variability daily-heart-rate-variabilityGoogle’s row: “HRV summary”. On Fitbit’s page: dailyRmssdGoogle’s endpoint table names dailyRollup, which Google’s data-types table does not list for daily-heart-rate-variability.

    Endpoint type: “GET (Log | Summary | Daily Summary) where you are requesting a single day of data” → dailyRollup method with windowSize = 1 day

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (HRV summary) and the endpoint type (“GET (Log | Summary | Daily Summary) where you are requesting a single day of data”).

  • Get HRV Summary by Interval

    Heart Rate Variability

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/hrv/date/[startDate]/[endDate].json

    Scope: heartrate

    This endpoint returns the Heart Rate Variability (HRV) data for a date range. HRV data applies specifically to a user’s “main sleep,” which is the longest single period of time asleep on a given date.

    Google Health API
    • Daily Heart Rate Variability daily-heart-rate-variabilityGoogle’s row: “HRV summary”. On Fitbit’s page: dailyRmssdGoogle’s endpoint table names rollUp, dailyRollUp, which Google’s data-types table does not list for daily-heart-rate-variability.

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (HRV summary) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Fitbit Web API
    GET /1/user/[user-id]/activities/[resource]/date/[date]/1d/[detail-level].jsonGET /1/user/[user-id]/activities/[resource]/date/[date]/1d/[detail-level]/time/[start-time]/[end-time].json

    Scope: activity

    This endpoint retrieves the activity intraday time series data for a given resource on a specific date or 24 hour period. Intraday support can extend the detail-level response to include 1min, 5min and 15min for Activity.

    Google Health API
    • Steps stepsGoogle’s row: “Steps”. On Fitbit’s page: steps
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/steps/dataPoints
    • Distance distanceGoogle’s row: “Distance”. On Fitbit’s page: distance
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/distance/dataPoints
    • Floors floorsGoogle’s row: “Floors”. On Fitbit’s page: floorsGoogle’s endpoint table names list, which Google’s data-types table does not list for floors.
    • Altitude altitudeGoogle’s row: “Elevation”. On Fitbit’s page: elevation
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/altitude/dataPoints

    Endpoint type: “GET (Intraday) where you are requesting granular data” → list method

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Steps, Distance, Floors, Elevation) and the endpoint type (“GET (Intraday) where you are requesting granular data”).

  • Fitbit Web API
    GET /1/user/[user-id]/activities/[resource]/date/[start-date]/[end-date]/[detail-level].jsonGET /1/user/[user-id]/activities/[resource]/date/[start-date]/[end-date]/[detail-level]/time/[start-time]/[end-time].json

    Scope: activity

    This endpoint retrieves the activity intraday time series data for a given resource on a specific date range for a 24 hour period. Intraday support can extend the detail-level response to include 1min, 5min and 15min for Activity.

    Google Health API
    • Steps stepsGoogle’s row: “Steps”. On Fitbit’s page: steps
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/steps/dataPoints
    • Distance distanceGoogle’s row: “Distance”. On Fitbit’s page: distance
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/distance/dataPoints
    • Floors floorsGoogle’s row: “Floors”. On Fitbit’s page: floorsGoogle’s endpoint table names list, which Google’s data-types table does not list for floors.
    • Altitude altitudeGoogle’s row: “Elevation”. On Fitbit’s page: elevation
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/altitude/dataPoints

    Endpoint type: “GET (Intraday) where you are requesting granular data” → list method

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Steps, Distance, Floors, Elevation) and the endpoint type (“GET (Intraday) where you are requesting granular data”).

  • Fitbit Web API
    GET /1/user/[user-id]/activities/active-zone-minutes/date/[date]/1d/[detail-level].jsonGET /1/user/[user-id]/activities/active-zone-minutes/date/[date]/1d/[detail-level]/time/[start-time]/[end-time].json

    Scope: activity

    This endpoint retrieves the active zone minute (AZM) intraday time series data for a specific date or 24 hour period. Intraday support can extend the detail-level response to include 1min, 5min and 15min for Active Zone Minutes.

    Google Health API
    • Active Zone Minutes active-zone-minutesGoogle’s row: “Active Zone Minutes”. On Fitbit’s page: active-zone-minutes
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-zone-minutes/dataPoints

    Endpoint type: “GET (Intraday) where you are requesting granular data” → list method

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Active Zone Minutes) and the endpoint type (“GET (Intraday) where you are requesting granular data”).

  • Fitbit Web API
    GET /1/user/[user-id]/activities/active-zone-minutes/date/[start-date]/[end-date]/[detail-level].jsonGET /1/user/[user-id]/activities/active-zone-minutes/date/[start-date]/[end-date]/[detail-level]/time/[start-time]/[end-time].json

    Scope: activity

    This endpoint retrieves the active zone minute (AZM) intraday time series data on a specific date range or 24 hour period. Intraday support can extend the detail-level response to include 1min, 5min and 15min for Active Zone Minutes.

    Google Health API
    • Active Zone Minutes active-zone-minutesGoogle’s row: “Active Zone Minutes”. On Fitbit’s page: active-zone-minutes
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/active-zone-minutes/dataPoints

    Endpoint type: “GET (Intraday) where you are requesting granular data” → list method

    Scopes: .activity_and_fitness.readonly.activity_and_fitness.writeonly

    Google's migration tables cover both halves: the data (Active Zone Minutes) and the endpoint type (“GET (Intraday) where you are requesting granular data”).

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/br/date/[date]/all.json

    Scope: respiratory_rate

    This endpoint returns intraday breathing rate data for a specified date. It measures the average breathing rate throughout the day and categories your breathing rate by sleep stage. Sleep stages vary between light sleep, deep sleep, REM sleep, and full sleep.

    Google Health API

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/br/date/[start-date]/[end-date]/all.json

    Scope: respiratory_rate

    This endpoint returns intraday breathing rate data for a date range. It measures the average breathing rate throughout the day and categories your breathing rate by sleep stage. Sleep stages vary between light sleep, deep sleep, REM sleep, and full sleep.

    Google Health API

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Fitbit Web API
    GET /1/user/[user-id]/activities/heart/date/[date]/1d/[detail-level].jsonGET /1/user/[user-id]/activities/heart/date/[date]/1d/[detail-level]/time/[start-time]/[end-time].json

    Scope: heartrate

    This endpoint retrieves the heart rate intraday time series data on a specific date or 24 hour period. Intraday support can extend the detail-level response to include 1sec, 1min, 5min or 15min for Heart Rate.

    Google Health API
    • Heart Rate heart-rateGoogle’s row: “Heart Rate”. On Fitbit’s page: heart
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/heart-rate/dataPoints

    Endpoint type: “GET (Intraday) where you are requesting granular data” → list method

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Heart Rate) and the endpoint type (“GET (Intraday) where you are requesting granular data”).

  • Fitbit Web API
    GET /1/user/[user-id]/activities/heart/date/[start-date]/[end-date]/[detail-level].jsonGET /1/user/[user-id]/activities/heart/date/[start-date][end-date]/[detail-level]/time/[start-time]/[end-time].json

    Scope: heartrate

    This endpoint retrieves the heart rate intraday time series data on a specific date range for a 24 hour period. Intraday support can extend the detail-level response to include 1sec, 1min, 5min or 15min for Heart Rate.

    Google Health API
    • Heart Rate heart-rateGoogle’s row: “Heart Rate”. On Fitbit’s page: heart
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/heart-rate/dataPoints

    Endpoint type: “GET (Intraday) where you are requesting granular data” → list method

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Heart Rate) and the endpoint type (“GET (Intraday) where you are requesting granular data”).

  • Fitbit Web API
    GET /1/user/[user-id]/hrv/date/[date]/all.json

    Scope: heartrate

    This endpoint returns the Heart Rate Variability (HRV) intraday data for a single date. HRV data applies specifically to a user’s “main sleep,” which is the longest single period of time asleep on a given date. It measures the HRV rate at various times and returns Root Mean Square of Successive Differences (rmssd), Low Frequency (LF), High Frequency (HF), and Coverage data for a given measurement. Rmssd measures short-term variability in your heart rate while asleep. LF and HF capture the power in interbeat interval fluctuations within either high frequency or low frequency bands. Finally, coverage refers to data completeness in terms of the number of interbeat intervals.

    Google Health API
    • Heart Rate Variability heart-rate-variabilityGoogle’s row: “HRV Intraday”. On Fitbit’s page: rmssd
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/heart-rate-variability/dataPoints

    Endpoint type: “GET (Intraday) where you are requesting granular data” → list method

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (HRV Intraday) and the endpoint type (“GET (Intraday) where you are requesting granular data”).

  • Fitbit Web API
    GET /1/user/[user-id]/hrv/date/[startDate]/[endDate]/all.json

    Scope: heartrate

    This endpoint returns the Heart Rate Variability (HRV) intraday data for a date range. HRV data applies specifically to a user’s “main sleep,” which is the longest single period of time asleep on a given date. It measures your HRV rate at various times and returns Root Mean Square of Successive Differences (rmssd), Low Frequency (LF), High Frequency (HF), and Coverage data for a given measurement. Rmssd measures short-term variability in your heart rate while asleep. LF and HF capture the power in interbeat interval fluctuations within either high frequency or low frequency bands. Finally, coverage refers to data completeness in terms of the number of interbeat intervals.

    Google Health API
    • Heart Rate Variability heart-rate-variabilityGoogle’s row: “HRV Intraday”. On Fitbit’s page: rmssd
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/heart-rate-variability/dataPoints

    Endpoint type: “GET (Intraday) where you are requesting granular data” → list method

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (HRV Intraday) and the endpoint type (“GET (Intraday) where you are requesting granular data”).

  • Fitbit Web API
    GET /1/user/[user-id]/spo2/date/[date]/all.json

    Scope: oxygen_saturation

    This endpoint returns the SpO2 intraday data for a single date. SpO2 applies specifically to a user’s “main sleep”, which is the longest single period of time asleep on a given date. Spo2 values are calculated on a 5-minute exponentially-moving average.

    Google Health API
    • Oxygen Saturation oxygen-saturationGoogle’s row: “SpO2 Intraday”. On Fitbit’s page: minutesReturns only validated minute-level SpO2 measurements and excludes readings flagged as invalid due to motion artifacts or low sensor confidence. Because the Fitbit Web API only excluded the 50% sentinel value, the Google Health API returns fewer data points for the same time range. For details, see Oxygen saturation filtering.
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/oxygen-saturation/dataPoints

    Endpoint type: “GET (Intraday) where you are requesting granular data” → list method

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (SpO2 Intraday) and the endpoint type (“GET (Intraday) where you are requesting granular data”).

  • Fitbit Web API
    GET /1/user/[user-id]/spo2/date/[start-date]/[end-date]/all.json

    Scope: oxygen_saturation

    This endpoint returns the SpO2 intraday data for a specified date range. SpO2 applies specifically to a user’s “main sleep”, which is the longest single period of time asleep on a given date. Spo2 values are calculated on a 5-minute exponentially-moving average.

    Google Health API
    • Oxygen Saturation oxygen-saturationGoogle’s row: “SpO2 Intraday”. On Fitbit’s page: minutesReturns only validated minute-level SpO2 measurements and excludes readings flagged as invalid due to motion artifacts or low sensor confidence. Because the Fitbit Web API only excluded the 50% sentinel value, the Google Health API returns fewer data points for the same time range. For details, see Oxygen saturation filtering.
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/oxygen-saturation/dataPoints

    Endpoint type: “GET (Intraday) where you are requesting granular data” → list method

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (SpO2 Intraday) and the endpoint type (“GET (Intraday) where you are requesting granular data”).

  • Get IRN Alerts List

    Irregular Rhythm Notifications

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/irn/alerts/list.json

    Scope: irregular_rhythm_notifications

    This endpoint returns a paginated list of Irregular Rhythm Notifications (IRN) alerts, as well as all of the alert tachograms. This endpoint will only return alerts that the user has read in the Fitbit app already, as that is meant as the primary entrypoint for viewing notifications.

    Google Health API
    • Irregular Rhythm Notification irregular-rhythm-notificationGoogle’s row: “Irregular Rhythm Notifications (IRN)”. On Fitbit’s page: IRN
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/irregular-rhythm-notification/dataPoints

    Endpoint type: “GET (Log List)” → list method

    Scopes: .irn.readonly

    Google's migration tables cover both halves: the data (Irregular Rhythm Notifications (IRN)) and the endpoint type (“GET (Log List)”).

  • Get IRN Profile

    Irregular Rhythm Notifications

    Name match
    Fitbit Web API
    GET /1/user/[user-id]/irn/profile.json

    Scope: irregular_rhythm_notifications

    This endpoint returns the user state for Irregular Rhythm Notifications (IRN). The user state contains most information about the user’s current engagement with the feature, including onboarding progress and algorithm processing state.

    Google Health API
    • users.getIrnProfileGET v4/users/{usersId}/irnProfile

    Scopes: .irn.readonly

    Google's migration tables do not list this endpoint. The discovery document has a method of the same name; that pairing is this site's name match, not Google's statement.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/foods/log/[resource]/date/[date]/[period].json

    Scope: nutrition

    Retrieves the food and water consumption data for a given resource over a period of time by specifying a date and time period. The response will include only the daily summary values.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/foods/log/[resource]/date/[start-date]/[end-date].json

    Scope: nutrition

    Retrieves the food and water consumption data for a given resource over a period of time by specifying a date range. The response will include only the daily summary values.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/foods/log/favorite/[food-id].json

    Scope: nutrition

    Adds a food with the given ID to the user's list of favorite foods.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Create Food

    Nutrition

    Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/foods.json

    Scope: nutrition

    Creates a new private food for a user.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/foods/log/goal.json

    Scope: nutrition

    Creates or updates a user's daily calorie consumption or food plan goals.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Mapped
    Fitbit Web API
    POST /1/user/[user-id]/foods/log.json

    Scope: nutrition

    Creates a food log entry for a given day.

    Google Health API
    • Nutrition Log nutrition-logGoogle’s row: “Food Log”. On Fitbit’s page: foodId
      • patchPATCH https://health.googleapis.com/v4/users/{usersId}/dataTypes/nutrition-log/dataPoints/{dataPointsId}

    Endpoint type: “CREATE & UPDATE Logs” → patch method

    Scopes: .nutrition.readonly.nutrition.writeonly

    Google's migration tables cover both halves: the data (Food Log) and the endpoint type (“CREATE & UPDATE Logs”).

  • Create Meal

    Nutrition

    Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/meals.json

    Scope: nutrition

    Creates a meal with the given food.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/foods/log/water/goal.json

    Scope: nutrition

    Creates or updates a user's daily water consumption goal.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/foods/log/water.json

    Scope: nutrition

    Create a user's water log entry.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    DELETE /1/user/[user-id]/foods/[food-id].json

    Scope: nutrition

    Deletes a custom food created by the user.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    DELETE /1/user/[user-id]/foods/log/favorite/[food-id].json

    Scope: nutrition

    Deletes a food with the given ID from the user's list of favorite foods.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Mapped
    Fitbit Web API
    DELETE /1/user/[user-id]/foods/log/[food-log-id].json

    Scope: nutrition

    Deletes a user's food log entry using the given log ID.

    Google Health API
    • Nutrition Log nutrition-logGoogle’s row: “Food Log”. On Fitbit’s page: food-log-id
      • batchDeletePOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/nutrition-log/dataPoints:batchDelete

    Endpoint type: “DELETE Logs” → batchDelete method

    Scopes: .nutrition.readonly.nutrition.writeonly

    Google's migration tables cover both halves: the data (Food Log) and the endpoint type (“DELETE Logs”).

  • Delete Meal

    Nutrition

    Not in Google's tables
    Fitbit Web API
    DELETE /1/user/[user-id]/meals/[meal-id].json

    Scope: nutrition

    Deletes an existing meal of the given meal ID.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    DELETE /1/user/[user-id]/foods/log/water/[water-log-id].json

    Scope: nutrition

    Deleted a user's water log entry using the given log ID.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/foods/log/favorite.json

    Scope: nutrition

    Retrieves a list of user-specific favorite consumed foods.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Get Food

    Nutrition

    Data only
    Fitbit Web API
    GET /1/foods/[food-id].json

    Scope: nutrition

    Retrieves the details of a specific food stored in the Fitbit food database or a private food the authorized user has entered.

    Google Health API
    • Food foodGoogle’s row: “Food”. On Fitbit’s page: food-id

    Scopes: .nutrition.readonly.nutrition.writeonly

    Google's data-type table maps the data, but its endpoint table has no row for this kind of endpoint, so which method replaces it is not stated.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/foods/log/goal.json

    Scope: nutrition

    Retrieves the user's current daily calorie consumption goal and/or food plan.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/foods/locales.json

    Scope: nutrition

    Retrieves the food locales used to search, log or create food.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Get Food Log

    Nutrition

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/foods/log/date/[date].json

    Scope: nutrition

    Retrieves a summary of the user's food log entry for a given day.

    Google Health API
    • Nutrition Log nutrition-logGoogle’s row: “Food Log”. On Fitbit’s page: foods
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/nutrition-log/dataPoints:dailyRollUp

    Endpoint type: “GET (Log | Summary | Daily Summary) where you are requesting a single day of data” → dailyRollup method with windowSize = 1 day

    Scopes: .nutrition.readonly.nutrition.writeonly

    Google's migration tables cover both halves: the data (Food Log) and the endpoint type (“GET (Log | Summary | Daily Summary) where you are requesting a single day of data”).

  • Data only
    Fitbit Web API
    GET /1/foods/units.json

    Scope: nutrition

    Retrieves a list of all valid Fitbit food units in the format requested.

    Google Health API
    • Food Measurement Unit food-measurement-unitGoogle’s row: “Food Measurement Unit”. On Fitbit’s page: units

    Scopes: .nutrition.readonly.nutrition.writeonly

    Google's data-type table maps the data, but its endpoint table has no row for this kind of endpoint, so which method replaces it is not stated.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/foods/log/frequent.json

    Scope: nutrition

    Retrieves a list of user-specific frequent consumed foods.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Get Meal

    Nutrition

    Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/meals/[meal-id].json

    Scope: nutrition

    Retrieves a single meal created by the user from their food log given the meal id.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Get Meals

    Nutrition

    Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/meals.json

    Scope: nutrition

    Retrieves a list of meals created by the user from their food log.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/foods/log/recent.json

    Scope: nutrition

    Retrieves a list of user-specific recently consumed foods.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/foods/log/water/goal.json

    Scope: nutrition

    Retrieves a user's daily water consumption goal.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Get Water Log

    Nutrition

    Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/foods/log/water/date/[date].json

    Scope: nutrition

    Retrieves a summary and list of a user's water log entries for a given day.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Search Foods

    Nutrition

    Not in Google's tables
    Fitbit Web API
    GET /1/foods/search.json

    Scope: nutrition

    Retrieves a list of public foods from the Fitbit foods database and private foods the user created in the format requested.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Mapped
    Fitbit Web API
    POST /1/user/[user-id]/foods/log.json

    Scope: nutrition

    Updates the quantity or calories consumed for a user's food log entry with the given Food Log ID. The food item being edited in the food log must contain a foodId with a positive integer value.

    Google Health API
    • Nutrition Log nutrition-logGoogle’s row: “Food Log”. On Fitbit’s page: food-log-id
      • patchPATCH https://health.googleapis.com/v4/users/{usersId}/dataTypes/nutrition-log/dataPoints/{dataPointsId}

    Endpoint type: “CREATE & UPDATE Logs” → patch method

    Scopes: .nutrition.readonly.nutrition.writeonly

    Google's migration tables cover both halves: the data (Food Log) and the endpoint type (“CREATE & UPDATE Logs”).

  • Update Meal

    Nutrition

    Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/meals/[meal-id].json

    Scope: nutrition

    Updates an existing meal with the contents of the request.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    POST /1/user/[user-id]/foods/log/water/[water-log-id].json

    Scope: nutrition

    Updates the quantity consumed for a user's water log entry with the given Water Log ID.

    Google Health API

    Scopes: .nutrition.readonly.nutrition.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Not in Google's tables
    Fitbit Web API
    POST /1.2/user/[user-id]/sleep/goal.json

    Scope: sleep

    Create or update a user's sleep goal.

    Google Health API

    Scopes: .sleep.readonly.sleep.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Mapped
    Fitbit Web API
    POST /1.2/user/[user-id]/sleep.json

    Scope: sleep

    Creates a log entry for a sleep event and returns a response in the format requested.

    Google Health API
    • Sleep sleepGoogle’s row: “Sleep”. On Fitbit’s page: sleep
      • patchPATCH https://health.googleapis.com/v4/users/{usersId}/dataTypes/sleep/dataPoints/{dataPointsId}

    Endpoint type: “CREATE & UPDATE Logs” → patch method

    Scopes: .sleep.readonly.sleep.writeonly

    Google's migration tables cover both halves: the data (Sleep) and the endpoint type (“CREATE & UPDATE Logs”).

  • Mapped
    Fitbit Web API
    DELETE /1.2/user/[user-id]/sleep/[log-id].json

    Scope: sleep

    Deletes a sleep log with the given log id.

    Google Health API
    • Sleep sleepGoogle’s row: “Sleep”. On Fitbit’s page: sleep
      • batchDeletePOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/sleep/dataPoints:batchDelete

    Endpoint type: “DELETE Logs” → batchDelete method

    Scopes: .sleep.readonly.sleep.writeonly

    Google's migration tables cover both halves: the data (Sleep) and the endpoint type (“DELETE Logs”).

  • Not in Google's tables
    Fitbit Web API
    GET /1.2/user/[user-id]/sleep/goal.json

    Scope: sleep

    Returns a user's current sleep goal.

    Google Health API

    Scopes: .sleep.readonly.sleep.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Fitbit Web API
    GET /1.2/user/[user-id]/sleep/date/[date].json

    Scope: sleep

    This endpoint returns a list of a user's sleep log entries for a given date. The data returned can include sleep periods that began on the previous date. For example, if you request a Sleep Log for 2021-12-22, it may return a log entry that began the previous night on 2021-12-21, but ended on 2021-12-22.

    Google Health API
    • Sleep sleepGoogle’s row: “Sleep”. On Fitbit’s page: levelsGoogle’s endpoint table names dailyRollup, which Google’s data-types table does not list for sleep.

    Endpoint type: “GET (Log | Summary | Daily Summary) where you are requesting a single day of data” → dailyRollup method with windowSize = 1 day

    Scopes: .sleep.readonly.sleep.writeonly

    Google's migration tables cover both halves: the data (Sleep) and the endpoint type (“GET (Log | Summary | Daily Summary) where you are requesting a single day of data”).

  • Fitbit Web API
    GET /1.2/user/[user-id]/sleep/date/[startDate]/[endDate].json

    Scope: sleep

    This endpoint returns a list of a user's sleep log entries for a date range. The data returned for either date can include a sleep period that ended that date but began on the previous date. For example, if you request a sleep log between 2021-12-22 and 2021-12-26, it may return log entries that span 2021-12-21 and 2021-12-22, as well as 2021-12-25 and 2021-12-26.

    Google Health API
    • Sleep sleepGoogle’s row: “Sleep”. On Fitbit’s page: levelsGoogle’s endpoint table names rollUp, dailyRollUp, which Google’s data-types table does not list for sleep.

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .sleep.readonly.sleep.writeonly

    Google's migration tables cover both halves: the data (Sleep) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Fitbit Web API
    GET /1.2/user/[user-id]/sleep/list.json

    Scope: sleep

    This endpoint returns a list of a user's sleep log entries before or after a given date, and specifying offset, limit and sort order. The data returned for different dates can include sleep periods that began on the previous date. For example, a sleep log entry for 2018-10-21 may have ended that day but started the previous night on 2018-10-20.

    Google Health API
    • Sleep sleepGoogle’s row: “Sleep”. On Fitbit’s page: levels
      • listGET https://health.googleapis.com/v4/users/{usersId}/dataTypes/sleep/dataPoints

    Endpoint type: “GET (Log List)” → list method

    Scopes: .sleep.readonly.sleep.writeonly

    Google's migration tables cover both halves: the data (Sleep) and the endpoint type (“GET (Log List)”).

  • Get SpO2 Summary by Date

    Blood Oxygen Saturation (SpO2)

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/spo2/date/[date].json

    Scope: oxygen_saturation

    This endpoint returns the SpO2 summary data for a single date. SpO2 applies specifically to a user’s “main sleep”, which is the longest single period of time asleep on a given date.

    Google Health API
    • Daily Oxygen Saturation daily-oxygen-saturationGoogle’s row: “SpO2 summary”. On Fitbit’s page: avgA daily summary of blood oxygen saturation (SpO2) statistics calculated from validated sleep measurements.Google’s endpoint table names dailyRollup, which Google’s data-types table does not list for daily-oxygen-saturation.

    Endpoint type: “GET (Log | Summary | Daily Summary) where you are requesting a single day of data” → dailyRollup method with windowSize = 1 day

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (SpO2 summary) and the endpoint type (“GET (Log | Summary | Daily Summary) where you are requesting a single day of data”).

  • Get SpO2 Summary by Interval

    Blood Oxygen Saturation (SpO2)

    Mapped
    Fitbit Web API
    GET /1/user/[user-id]/spo2/date/[start-date]/[end-date].json

    Scope: oxygen_saturation

    This endpoint returns the SpO2 summary data for a specified date range. SpO2 applies specifically to a user’s “main sleep”, which is the longest single period of time asleep on a given date.

    Google Health API
    • Daily Oxygen Saturation daily-oxygen-saturationGoogle’s row: “SpO2 summary”. On Fitbit’s page: avgA daily summary of blood oxygen saturation (SpO2) statistics calculated from validated sleep measurements.Google’s endpoint table names rollUp, dailyRollUp, which Google’s data-types table does not list for daily-oxygen-saturation.

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (SpO2 summary) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Mapped
    Fitbit Web API
    POST /1/user/[user-id]/[collection-path]/apiSubscriptions/[subscription-id].json

    Scope: See collection-path URI Argument

    Creates a subscription to notify the application when a user has new data available. See Creating a Subscription for more information.

    Google Health API
    • projects.subscribers.subscriptions.createPOST v4/projects/{projectsId}/subscribers/{subscribersId}/subscriptions

    Endpoint type: “Create Subscriptions” → projects.subscribers.subscriptions.create manually creates a subscription

    Google's endpoint table names this endpoint (“Create Subscriptions”).

  • Mapped
    Fitbit Web API
    DELETE /1/user/[user-id]/[collection-path]/apiSubscriptions/[subscription-id].json

    Scope: See collection-path URI Argument

    Deletes a subscription for a specific user. See Deleting a Subscription for more information.

    Google Health API
    • projects.subscribers.subscriptions.deleteDELETE v4/projects/{projectsId}/subscribers/{subscribersId}/subscriptions/{subscriptionsId}

    Endpoint type: “Delete Subscriptions” → projects.subscribers.subscriptions.delete delete a subscription

    Google's endpoint table names this endpoint (“Delete Subscriptions”).

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/[collection-path]/apiSubscriptions.json

    Scope: See collection-path URI Argument

    Retrieves a list of subscriptions created by your application for a specific user. You can either fetch subscriptions for a specific collection or the entire list of subscriptions for the user. For best practice, make sure that your application maintains this list on your side and uses this endpoint only to periodically ensure data consistency. See Getting a List of Subscriptions for more information.

    Google Health API
    • projects.subscribers.subscriptions.listGET v4/projects/{projectsId}/subscribers/{subscribersId}/subscriptions

    Endpoint type: “Get Subscriptions List” → projects.subscribers.subscriptions.list lists all subscriptions

    Google's endpoint table names this endpoint (“Get Subscriptions List”).

  • Fitbit Web API
    GET /1/user/[user-id]/temp/core/date/[date].json

    Scope: temperature

    This endpoint returns the Temperature (Core) data for a single date. Temperature (Core) data applies specifically to data logged manually by the user throughout the day.

    Google Health API
    • Core Body Temperature core-body-temperatureGoogle’s row: “Temperature (Core)”. On Fitbit’s page: core
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/core-body-temperature/dataPoints:dailyRollUp

    Endpoint type: “GET (Log | Summary | Daily Summary) where you are requesting a single day of data” → dailyRollup method with windowSize = 1 day

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Temperature (Core)) and the endpoint type (“GET (Log | Summary | Daily Summary) where you are requesting a single day of data”).

  • Fitbit Web API
    GET /1/user/[user-id]/temp/core/date/[start-date]/[end-date].json

    Scope: temperature

    This endpoint returns Temperature (Core) data for a date range. Temperature (Core) data applies specifically to data logged manually by the user on a given day. It only returns a value for dates on which the Fitbit device was able to record Temperature (Core) data and the maximum date range cannot exceed 30 days.

    Google Health API
    • Core Body Temperature core-body-temperatureGoogle’s row: “Temperature (Core)”. On Fitbit’s page: core
      • rollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/core-body-temperature/dataPoints:rollUp
      • dailyRollUpPOST https://health.googleapis.com/v4/users/{usersId}/dataTypes/core-body-temperature/dataPoints:dailyRollUp

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Temperature (Core)) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Fitbit Web API
    GET /1/user/[user-id]/temp/skin/date/[date].json

    Scope: temperature

    This endpoint returns the Temperature (Skin) data for a single date. It only returns a value for dates on which the Fitbit device was able to record Temperature (skin) data.

    Google Health API
    • Daily Sleep Temperature Derivations daily-sleep-temperature-derivationsGoogle’s row: “Skin temperature”. On Fitbit’s page: nightlyRelativeGoogle’s endpoint table names dailyRollup, which Google’s data-types table does not list for daily-sleep-temperature-derivations.

    Endpoint type: “GET (Log | Summary | Daily Summary) where you are requesting a single day of data” → dailyRollup method with windowSize = 1 day

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Skin temperature) and the endpoint type (“GET (Log | Summary | Daily Summary) where you are requesting a single day of data”).

  • Fitbit Web API
    GET /1/user/[user-id]/temp/skin/date/[start-date]/[end-date].json

    Scope: temperature

    This endpoint returns Temperature (Skin) data for a date range. It only returns a value for dates on which the Fitbit device was able to record Temperature (skin) data and the maximum date range cannot exceed 30 days.

    Google Health API
    • Daily Sleep Temperature Derivations daily-sleep-temperature-derivationsGoogle’s row: “Skin temperature”. On Fitbit’s page: nightlyRelativeGoogle’s endpoint table names rollUp, dailyRollUp, which Google’s data-types table does not list for daily-sleep-temperature-derivations.

    Endpoint type: “GET (Time Series) by Date or Interval” → rollUp or dailyRollUp method including a date range

    Scopes: .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly

    Google's migration tables cover both halves: the data (Skin temperature) and the endpoint type (“GET (Time Series) by Date or Interval”).

  • Not in Google's tables
    Fitbit Web API
    GET /1/user/[user-id]/badges.json

    Scope: profile

    Retrieves a list of the user’s badges.

    Google Health API

    Scopes: .profile.readonly.profile.writeonly

    Not in Google's migration tables: no row maps this endpoint's data or endpoint type to the Google Health API.

  • Mapped
    Fitbit Web API
    GET /1/user/[user-id]/profile.json

    Scope: profile

    Retrieves the user's profile data.

    Google Health API
    • users.getProfileGET v4/users/{usersId}/profile
    • users.getSettingsGET v4/users/{usersId}/settings

    Endpoint type: “GET Profile” → users.getProfile returns the user's specific information users.getSettings returns the user's units and timezones

    Scopes: .profile.readonly.profile.writeonly

    Google's endpoint table names this endpoint (“GET Profile”).

  • Mapped
    Fitbit Web API
    POST /1/user/[user-id]/profile.json

    Scope: profile

    Modifies a user's profile data.

    Google Health API
    • users.updateProfilePATCH v4/users/{usersId}/profile
    • users.updateSettingsPATCH v4/users/{usersId}/settings

    Endpoint type: “UPDATE Profile” → users.updateProfile modifies the user's specific information users.updateSettings modifies the user's units and timezones

    Scopes: .profile.readonly.profile.writeonly

    Google's endpoint table names this endpoint (“UPDATE Profile”).

How each row is built

  1. Fitbit’s side, verbatim. Title, opening sentence, HTTP method, path and Scope: line from each endpoint page of Fitbit’s Web API reference, read 2026-11-05 through a source snapshot (121 pages in 23 sections).
  2. The data: Google’s data-type table. Google’s API specifications page maps 32 Fitbit data types to Google Health API data types. This site pairs an endpoint with a row only when the endpoint’s own page names the field or resource (the row shows it), and 30 of the 32 rows are used.
  3. The method: Google’s endpoint-type table. The same page says a single-day read becomes dailyRollup, an intraday read list, a time series rollUp or dailyRollUp, a log write patch. Which row an endpoint falls under is this site’s reading of its title, and the row is printed with it. Where the data type does not list that method in Google’s data-types table, the row says so.
  4. Scopes: Google’s scope table, from the Fitbit scope on the endpoint’s page.
  5. Everything else is unmapped. 2 endpoints have a discovery method of the same name (Get Activity TCX and exportExerciseTcx, Get IRN Profile and getIrnProfile); those are labeled as this site’s name match, not Google’s statement.

Google rows no endpoint page here names

Google’s data-type table has 2 rows this tool did not pair with a Fitbit endpoint, because no endpoint page carries the field by that name:

  • “Contains changes to the user's activity levels” → Activity Level
  • “VO2 Max value when the user runs” → Run VO2 Max
Sources and what this cannot tell you

Google’s tables come from its migration guide and API specifications page, read 2026-10-31 by this site’s Google Health API generator. dev.fitbit.com cannot be reached from where this site is built, so Fitbit’s pages were read on a GitHub runner; every quoted path, scope and field is listed with its page in the site’s evidence file, which a weekly workflow re-checks against the live pages.

A row maps names, not values. Google notes where a value changes meaning (Activity Calories is reconstructed by adding BMR, for one); read the data type’s page before you move a number across. Response fields inside each endpoint are not mapped here.

Google’s timeline set November 2, 2026 as the Fitbit Web API’s turn-off date; see the Fitbit API shutdown and the migration playbook.

A free tool from AIFitnessAPI. Each Google data type has its own page under the Google Health API reference. More at free tools for health-app builders.

Next step

Turning this into a choice of API: