Google Health Exercise Export Format
Google Health data exports are not yet available, but data collection is available for MyDataHelps participants. This article is being published ahead of Google Health data export availability and is subject to change.
As a reminder, Google is deprecating the Fitbit API on September 30th, 2026. After this date, Fitbit data will only be available through Google Health. Please refer to the Migrating Fitbit to Google Health article for additional information.
The Google Health Exercise export contains individual fitness sessions (runs, workouts, etc.) reported through the Google Health API's exercise data type, along with each session's splits and start/stop events.
Deleted exercise session records are described in GoogleHealthExercise_Deleted. See Google Health Deleted Export Format for the full field reference and how to apply it.
Data Fields
Exercise
| Field | Description |
|---|---|
GoogleHealthExerciseKey |
Unique key for this exercise session, derived from the `ParticipantID` and `SessionId`. |
ParticipantIdentifier |
The identifier of the participant this entry was recorded for. Can be used to cross reference with Participants. |
StartDate |
Session start time in ISO 8601 format, includes time zone offset. |
EndDate |
Session end time in ISO 8601 format, includes time zone offset. |
ParticipantID |
The stable, automatically generated, internal system identifier for this participant. Universally unique identifier (UUID). |
ModifiedDate |
When this record was last modified, in ISO 8601 format. Is always in UTC. |
SessionId |
The provided identifier for this session (e.g. users/…/dataTypes/exercise/dataPoints/…). May not be unique. |
ExerciseType |
The type of exercise this record represents, e.g., "RUNNING". See Google's exercise data type reference for the full list of values. |
DisplayName |
Participant- or device-assigned label for the session, e.g., “Morning Run.” |
ActiveDurationSeconds |
Active duration of the session, in seconds. |
Notes |
Free-text notes associated with the session, if provided. |
CaloriesKcal |
Calories burned during the session or split, in kilocalories. |
DistanceMillimeters |
Distance covered during the session or split, in millimeters. |
Steps |
Steps taken during the session or split. |
AverageSpeedMillimetersPerSecond |
Average speed during the session or split, in millimeters per second. |
AveragePaceSecondsPerMeter |
Average pace during the session or split, in seconds per meter. |
AverageHeartRateBeatsPerMinute |
Average heart rate during the session or split. |
ElevationGainMillimeters |
Total elevation gained during the session or split, in millimeters. |
ActiveZoneMinutes |
Minutes spent in an elevated heart rate zone during the session or split. |
RunVo2Max |
VO2 max estimate calculated from this run. |
TotalSwimLengths |
Total pool lengths swum during the session or split. |
HeartRateZoneDurationsLightSeconds |
Time spent in "light" heart rate zone during the session or split, in seconds. |
HeartRateZoneDurationsModerateSeconds |
Time spent in "moderate" heart rate zone during the session or split, in seconds. |
HeartRateZoneDurationsVigorousSeconds |
Time spent in "vigorous" heart rate zone during the session or split, in seconds. |
HeartRateZoneDurationsPeakSeconds |
Time spent in "peak" heart rate zone during the session or split, in seconds. |
MobilityMetricsAvgGroundContactSeconds |
The average amount of time for which the foot was in contact with the ground on each stride in this session or split. |
MobilityMetricsAvgCadenceStepsPerMinute |
The average cadence during this session or split, in steps per minute. |
MobilityMetricsAvgStrideLengthMillimeters |
The average distance covered by each stride in this session or split, in millimeters. |
MobilityMetricsAvgVerticalOscillationMillimeters |
The average distance off the ground the user's center of mass moves with each stride during this session or split, in millimeters. |
MobilityMetricsAvgVerticalRatio |
The average ration between vertical oscillation and stride length during this session or split, ranging from 5.0 to 11.0. |
MetadataHasGps |
Whether GPS data is available for the session. |
MetadataPoolLengthMillimeters |
Pool length used for lap counting, in millimeters (swim sessions only). |
CreateTime |
When this session was first recorded in Google Health, in ISO 8601 format. Is always in UTC. |
UpdateTime |
When the record was last updated in Google Health, in ISO 8601 format. Is always in UTC. |
DataSourceRecordingMethod |
How the data was captured, e.g., "AUTOMATICALLY_RECORDED", "MANUALLY_ENTERED", or "DERIVED". |
DataSourcePlatform |
The platform that uploaded this session to Google Health, e.g., "FITBIT". |
DataSourceDeviceFormFactor |
The form factor of the device which recorded this session, e.g., "WATCH". |
DataSourceDeviceManufacturer |
The manufacturer of the device which recorded this session, e.g., `"Fitbit"`. |
DataSourceDeviceDisplayName |
The display name of the device which recorded this session, e.g., `“Sense 2”`. |
DataSourceApplicationPackageName |
The package name of the application that recorded the data, e.g., `"com.fitbit.app"`. |
DataSourceApplicationWebClientId |
The client ID of the application that recorded the data, when applicable. |
DataSourceApplicationGoogleWebClientId |
The Google OAuth 2.0 client ID of the web application or service that recorded the data, when applicable. |
Exercise Splits
| Field | Description |
|---|---|
GoogleHealthExerciseKey |
Unique key for the exercise session this split is part of, derived from the `ParticipantID` and `SessionId`. |
ParticipantIdentifier |
The identifier of the participant this entry was recorded for. Can be used to cross reference with Participants. |
StartDate |
The starting time of this split, ISO 8601 format. Includes time zone offset. |
EndDate |
The ending time of this split, ISO 8601 format. Includes time zone offset. |
ParticipantID |
The stable, automatically generated, internal system identifier for this participant. Universally unique identifier (UUID). |
ActiveDurationSeconds |
Active duration of the split, in seconds. |
SplitType |
How the split was divided, e.g., "DISTANCE". |
All other data types found in Exercise Splits are defined as above for the exercise session, but apply only to the Split record.
Exercise Events
| Field | Description |
|---|---|
GoogleHealthExerciseKey |
Unique key for the exercise session this event is part of, derived from the `ParticipantID` and `SessionId`. |
ParticipantIdentifier |
The identifier of the participant this entry was recorded for. Can be used to cross reference with Participants. |
EventDate |
When the event occurred, ISO 8601 format. Includes time zone offset.. |
ParticipantID |
The stable, automatically generated, internal system identifier for this participant. Universally unique identifier (UUID). |
ExerciseEventType |
Type of event, e.g., "START" or "STOP". |
Sample CSV Export
Exercise
GoogleHealthExerciseKey,ParticipantIdentifier,StartDate,EndDate,ParticipantID,ModifiedDate,SessionId,ExerciseType,DisplayName,ActiveDurationSeconds,Notes,CaloriesKcal,DistanceMillimeters,Steps,AverageSpeedMillimetersPerSecond,AveragePaceSecondsPerMeter,AverageHeartRateBeatsPerMinute,ElevationGainMillimeters,ActiveZoneMinutes,RunVo2Max,TotalSwimLengths,HeartRateZoneDurationsLightSeconds,HeartRateZoneDurationsModerateSeconds,HeartRateZoneDurationsVigorousSeconds,HeartRateZoneDurationsPeakSeconds,MobilityMetricsAvgGroundContactSeconds,MobilityMetricsAvgCadenceStepsPerMinute,MobilityMetricsAvgStrideLengthMillimeters,MobilityMetricsAvgVerticalOscillationMillimeters,MobilityMetricsAvgVerticalRatio,MetadataHasGps,MetadataPoolLengthMillimeters,CreateTime,UpdateTime,DataSourceRecordingMethod,DataSourcePlatform,DataSourceDeviceFormFactor,DataSourceDeviceManufacturer,DataSourceDeviceDisplayName,DataSourceApplicationPackageName,DataSourceApplicationWebClientId,DataSourceApplicationGoogleWebClientId
917c6a52-242c-5a92-8441-284deced6d09,MDH-123,2025-11-19T16:08:29-05:00,2025-11-19T16:29:35-05:00,11111111-aaaa-1111-1111-111111111111,2025-01-01T04:00:01Z,users/123000000000000000/dataTypes/exercise/dataPoints/627907511364595992,RUNNING,Morning Run,1266.0,,214.5,3218688,2838,,,148,,18,,,,,,,,,,,,True,,2025-11-19T21:30:00Z,2025-11-19T22:00:00Z,AUTOMATICALLY_RECORDED,FITBIT,WATCH,Fitbit,Sense 2,com.fitbit.app,,
Exercise Splits
GoogleHealthExerciseKey,ParticipantIdentifier,StartDate,EndDate,ParticipantID,ActiveDurationSeconds,SplitType,CaloriesKcal,DistanceMillimeters,Steps,AverageSpeedMillimetersPerSecond,AveragePaceSecondsPerMeter,AverageHeartRateBeatsPerMinute,ElevationGainMillimeters,ActiveZoneMinutes,RunVo2Max,TotalSwimLengths,HeartRateZoneDurationsLightSeconds,HeartRateZoneDurationsModerateSeconds,HeartRateZoneDurationsVigorousSeconds,HeartRateZoneDurationsPeakSeconds,MobilityMetricsAvgGroundContactSeconds,MobilityMetricsAvgCadenceStepsPerMinute,MobilityMetricsAvgStrideLengthMillimeters,MobilityMetricsAvgVerticalOscillationMillimeters,MobilityMetricsAvgVerticalRatio
917c6a52-242c-5a92-8441-284deced6d09,MDH-123,2025-11-19T16:09:28-05:00,2025-11-19T16:18:35-05:00,11111111-aaaa-1111-1111-111111111111,547.785218357,DISTANCE,,1609344,,,0.3403779542204774,,,,,,,,,,,,,,
917c6a52-242c-5a92-8441-284deced6d09,MDH-123,2025-11-19T16:18:35-05:00,2025-11-19T16:29:35-05:00,11111111-aaaa-1111-1111-111111111111,730.214781643,DISTANCE,,1609344,,,0.4537224,,,,,,,,,,,,,,
Exercise Events
GoogleHealthExerciseKey,ParticipantIdentifier,EventDate,ParticipantID,ExerciseEventType
917c6a52-242c-5a92-8441-284deced6d09,MDH-123,2025-11-19T16:08:29-05:00,11111111-aaaa-1111-1111-111111111111,START
917c6a52-242c-5a92-8441-284deced6d09,MDH-123,2025-11-19T16:29:35-05:00,11111111-aaaa-1111-1111-111111111111,STOP
Sample JSON Export
{
"GoogleHealthExerciseKey": "917c6a52-242c-5a92-8441-284deced6d09",
"ParticipantIdentifier": "MDH-123",
"StartDate": "2025-11-19T16:08:29-05:00",
"EndDate": "2025-11-19T16:29:35-05:00",
"ParticipantID": "11111111-aaaa-1111-1111-111111111111",
"ModifiedDate": "2025-01-01T04:00:01Z",
"SessionId": "users/123000000000000000/dataTypes/exercise/dataPoints/627907511364595992",
"ExerciseType": "RUNNING",
"DisplayName": "Morning Run",
"ActiveDurationSeconds": 1266.0,
"MetricsSummary": {
"CaloriesKcal": 214.5,
"DistanceMillimeters": 3218688.0,
"Steps": 2838,
"AverageHeartRateBeatsPerMinute": 148,
"ActiveZoneMinutes": 18
},
"MetadataHasGps": true,
"CreateTime": "2025-11-19T21:30:00Z",
"UpdateTime": "2025-11-19T22:00:00Z",
"DataSourceRecordingMethod": "AUTOMATICALLY_RECORDED",
"DataSourcePlatform": "FITBIT",
"DataSourceDeviceFormFactor": "WATCH",
"DataSourceDeviceManufacturer": "Fitbit",
"DataSourceDeviceDisplayName": "Sense 2",
"DataSourceApplicationPackageName": "com.fitbit.app",
"Splits": [
{
"StartDate": "2025-11-19T16:09:28-05:00",
"EndDate": "2025-11-19T16:18:35-05:00",
"ActiveDurationSeconds": 547.785218357,
"SplitType": "DISTANCE",
"MetricsSummary": {
"DistanceMillimeters": 1609344.0,
"AveragePaceSecondsPerMeter": 0.3403779542204774
}
},
{
"StartDate": "2025-11-19T16:18:35-05:00",
"EndDate": "2025-11-19T16:29:35-05:00",
"ActiveDurationSeconds": 730.214781643,
"SplitType": "DISTANCE",
"MetricsSummary": {
"DistanceMillimeters": 1609344.0,
"AveragePaceSecondsPerMeter": 0.4537224
}
}
],
"Events": [
{ "EventDate": "2025-11-19T16:08:29-05:00", "ExerciseEventType": "START" },
{ "EventDate": "2025-11-19T16:29:35-05:00", "ExerciseEventType": "STOP" }
]
}