Google Health API data types

The following table contains the full list of data types, with several columns to help you understand the representation of each type in the Google Health API, as well as the scope each is available under.

Table: Google Health API data types
Data type
  dataType
  filter parameter
Record
type
Available
operations
Scope Webhook
support
True zeros
support
Active Energy Burned
  active-energy-burned
  active_energy_burned

  Calories and energy guide
Interval list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Active Minutes
  active-minutes
  active_minutes

Compatible devices

  • Fitbit Air
  • Fitbit Alta
  • Fitbit Alta HR
  • Fitbit Blaze
  • Fitbit Charge 2
  • Fitbit Charge 3
  • Fitbit Flex 2
  • Fitbit Inspire
  • Fitbit Inspire HR
  • Pixel Watch 4
Interval list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Active Zone Minutes
  active-zone-minutes
  active_zone_minutes

Compatible devices

Interval list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Activity Level
  activity-level
  activity_level
Interval list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Altitude
  altitude
  altitude
Interval list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Blood Glucose
  blood-glucose
  blood_glucose

  Vitals guide
Sample list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Body Fat
  body-fat
  body_fat

Compatible devices

Sample list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Calories In Heart Rate Zone
  calories-in-heart-rate-zone
  calories_in_heart_rate_zone
Interval rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Core Body Temperature
  core-body-temperature
  core_body_temperature

  Vitals guide
Sample list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Heart Rate Variability
  daily-heart-rate-variability
  daily_heart_rate_variability

  Vitals guide
  Sleep guide

Compatible devices

Daily list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Heart Rate Zones
  daily-heart-rate-zones
  daily_heart_rate_zones

  Vitals guide
Daily list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Oxygen Saturation
  daily-oxygen-saturation
  daily_oxygen_saturation

  Vitals guide
  Sleep guide

Compatible devices

Daily list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Respiratory Rate
  daily-respiratory-rate
  daily_respiratory_rate

  Vitals guide
  Sleep guide

Compatible devices

Daily list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Resting Heart Rate
  daily-resting-heart-rate
  daily_resting_heart_rate

  Vitals guide

Compatible devices

Daily list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily Sleep Temperature Derivations
  daily-sleep-temperature-derivations
  daily_sleep_temperature_derivations

  Vitals guide
  Sleep guide

Compatible devices

Daily list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Daily VO2 Max
  daily-vo2-max
  daily_vo2_max

Compatible devices

Daily list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Distance
  distance
  distance

Compatible devices

Interval list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Electrocardiogram (ECG)
  electrocardiogram
  electrocardiogram

  Vitals guide

Compatible devices

Session list .ecg.readonly
Exercise
  exercise
  exercise

  Workouts guide

Compatible devices

Session list, get, reconcile, create, update, batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Floors
  floors
  floors
Interval reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Food
  food
  food

  Nutrition guide
Food list, get .nutrition.readonly
.nutrition.writeonly
Food Measurement Unit
  food-measurement-unit
  food_measurement_unit

  Nutrition guide

Compatible devices

Food list, get .nutrition.readonly
.nutrition.writeonly
Heart Rate
  heart-rate
  heart_rate

  Vitals guide

Compatible devices

Sample list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Heart Rate Variability
  heart-rate-variability
  heart_rate_variability

  Vitals guide
  Sleep guide

Compatible devices

Sample list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Height
  height
  height
Sample list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Hydration Log
  hydration-log
  hydration_log
Session list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Irregular Rhythm Notification
  irregular-rhythm-notification
  irregular_rhythm_notification

  Vitals guide
Session list .irn.readonly
Menstrual Period
  menstrual-period
  menstrual_period
Interval create, update, batchDelete .reproductive_health.writeonly
Moods
  moods
  moods
Sample create, update, batchDelete .mindfulness.writeonly
Nutrition Log
  nutrition-log
  nutrition_log

  Nutrition guide

Compatible devices

Sample list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Ovulation Test
  ovulation-test
  ovulation_test
Sample create, update, batchDelete .reproductive_health.writeonly
Oxygen Saturation
  oxygen-saturation
  oxygen_saturation

  Vitals guide
  Sleep guide

Compatible devices

Sample list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Respiratory Rate Sleep Summary
  respiratory-rate-sleep-summary
  respiratory_rate_sleep_summary

  Vitals guide
  Sleep guide

Compatible devices

Sample list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Run VO2 Max
  run-vo2-max
  run_vo2_max

Compatible devices

Sample list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Sedentary Period
  sedentary-period
  sedentary_period

Compatible devices

Interval list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Sleep
  sleep
  sleep

  Sleep guide

Compatible devices

Session list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
Steps
  steps
  steps

  Steps guide

Compatible devices

Interval list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Swim Lengths Data
  swim-lengths-data
  swim_lengths_data

Compatible devices

Interval list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Symptoms
  symptoms
  symptoms
Sample create, update, batchDelete .logged_symptoms.writeonly
Time in Heart Rate Zone
  time-in-heart-rate-zone
  time_in_heart_rate_zone
Interval list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Total Calories
  total-calories
  total_calories

  Calories and energy guide

Compatible devices

Interval rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
VO2 Max
  vo2-max
  vo2_max

Compatible devices

Sample list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Weight
  weight
  weight

Compatible devices

Sample list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

Query constraints

When querying data points, rollups, or daily rollups from the API, keep the following constraints in mind:

  • Filter requirements: Some read-only derived data types, such as total-calories, require a filter specifying an interval start time (using physical or civil time).
  • Query range limits: Rollup and daily rollup aggregation endpoints enforce maximum query range limits based on the data type:
    • A maximum query range of 14 days for calories-in-heart-rate-zone, heart-rate, active-minutes, and total-calories.
    • A maximum query range of 90 days for all other data types.

Data availability

Updates to the user's data is only available after they sync their activity tracker or manually enter new data into the Fitbit mobile or web app. The Fitbit device and Fitbit mobile app can automatically sync every 15 minutes when the Fitbit app is open on the mobile device and the two have an active data connection and are within Bluetooth range. If the user is tracking activity using MobileTrack, MobileTrack syncs every hour as long as the app is open.

Querying historical data

One of the core benefits of the Google Health API is the ability to track a user's performance and monitor their health vitals over long periods of time. You can query a user's data as far back as it has been recorded; the API imposes no limitations or restrictions on the amount of historical data your application can consume.

However, querying historical data is still governed by standard rate limits. To manage system stability and prevent excessive payloads, the Google Health API uses automatic pagination with endpoint-specific page sizes. Note the following boundaries and behavior:

  • Automatic pagination: If you query a long span of data, the API will only return the first page of results up to the page size cap for that endpoint, along with a nextPageToken. You must use the nextPageToken to request subsequent pages.
  • Variable page sizes: Capping limits depend on the endpoint and data type. For most data types, page sizes are capped at a maximum of 10,000. However, for certain data types like exercise and sleep, the default and maximum page size is capped at 25. For example, if a client requests all sleep data for the past 10 years, the API will still return only 25 sleep sessions on the first page.
  • Rollup date range restrictions: For data rollup and aggregation endpoints (such as rollUp and dailyRollUp), query date ranges are restricted based on the data type:
    • A maximum range of 14 days for calories-in-heart-rate-zone, heart-rate, active-minutes, and total-calories.
    • A maximum range of 90 days for all other rollup data types.

Depending on the volume of historical data your application needs, retrieving the entire dataset will require paginating through the pages sequentially. Keep this in mind when designing your application's data synchronization process.

To ensure optimal performance and avoid API errors, follow these guidelines when querying historical data:

Phased data sync (hot versus cold load)

  • Initial "hot" load: Fetch and render only the most recent 7–14 days of data during the primary load sequence. This ensures that users see data immediately without waiting for long-running queries.
  • Background "cold" load: Delegate older historical data retrieval to an asynchronous, lower-priority queue or background process after the primary UI is rendered.

Query chunking for aggregation

  • Because rollup and daily rollup endpoints enforce a maximum date range limit (14 or 90 days depending on the data type), you must break down large historical aggregation queries into smaller, sequential intervals within these limits.
  • Batch or sequence these sub-queries safely to respect concurrency limits and maintain steady UI progress indicators.

Leverage pre-aggregated roll-ups

Restructure overview dashboards and trend charts to use pre-aggregated, summary endpoints (such as DailyRollUpDataPoints). This will drastically reduce compute overhead on the backend and network transfer time to the client.

Resilient error handling (smart retries)

  • Implement strict exponential backoff handling when encountering rate limits (429 Too Many Requests) and server gateway timeouts (504 Gateway Timeout). Never retry large, failed payloads immediately. Instant retries multiply backend congestion and compound system degradation.

Third-party access

Fitbit devices can't communicate directly with third-party applications or services. These devices are designed to communicate and synchronize exclusively with the Fitbit mobile app.

The device syncs data automatically throughout the day, whenever the Fitbit app is open, or every 15 minutes if Bluetooth is active and the app is running in the background. Once this synchronization process is complete, the data is then available for third-party services through the Google Health API.

Distance standards

Exercise distances, such as elevationGainMillimeters, are measured in millimeters as the standard unit for the following reasons:

  1. Maintaining Data Precision: The most important reason for using millimeters is to ensure we don't lose any precision in the data we read and provide. Using a fine-grained unit like millimeters allows us to represent measurements with high accuracy.
  2. Standardization: Millimeters are the designed standardized unit across our services. This consistency helps ensure a uniform experience for developers interacting with different parts of the API.
  3. Broad Measurement System Support: Using a base unit like millimeters makes it straightforward for developers to convert to any other chosen unit, regardless of whether they are working with metric, imperial, or other measurement systems.

Variable day lengths

Time handling by the Health API prioritize the user's time to account for variable day lengths caused by Daylight Savings Time or travel. Every data point is stored with both a physical UTC timestamp and the UTC offset active at the time of the event. This allows the system to:

  • Map the event to a precise physical instant.
  • Correct the time to the user's local context for aggregation.

Daylight Savings Time

When Daylight Savings Time happens, a "fall back" results in a 25-hour civil day, and the rollup for that date will contain 25 hours of data. A "spring forward" results in a 23-hour civil day where the time moves back to Standard Time.

Travel

Travel across time zones can cause even more significant variations in the physical duration of a single civil day.

Use the dailyRollUp endpoint to reconcile time zone differences. It automatically attributes data to the calendar day on which it was recorded according to the user's local time, effectively "stitching" the day together despite time zone shifts.