Google Health Time Series 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 Time Series export covers interval- and sample-based Google Health data types that aren't part of a dedicated export or rolled into Daily Data—for example blood glucose readings, step counts, and body measurements. Every data type uses the same base file export format, though some types have additional enumerated properties.
Time Series data types and their respective file prefixes are:
- Active Energy Burned: `GoogleHealthTimeSeries_ActiveEnergyBurned`
- Active Minutes: `GoogleHealthTimeSeries_ActiveMinutes`
- Active Zone Minutes: `GoogleHealthTimeSeries_ActiveZoneMinutes`
- Activity Level: `GoogleHealthTimeSeries_ActivityLevel`
- Altitude: `GoogleHealthTimeSeries_Altitude`
- Blood Glucose: `GoogleHealthTimeSeries_BloodGlucose`
- Body Fat: `GoogleHealthTimeSeries_BodyFat`
- Core Body Temperature: `GoogleHealthTimeSeries_CoreBodyTemperature`
- Distance: `GoogleHealthTimeSeries_Distance`
- Floors: `GoogleHealthTimeSeries_Floors`
- Heart Rate: `GoogleHealthTimeSeries_HeartRate`
- Heart Rate Variability: `GoogleHealthTimeSeries_HeartRateVariability`
- Height: `GoogleHealthTimeSeries_Height`
- Oxygen Saturation: `GoogleHealthTimeSeries_OxygenSaturation`
- Run VO2 Max: `GoogleHealthTimeSeries_RunVo2Max`
- Sedentary Period: `GoogleHealthTimeSeries_SedentaryPeriod`
- Steps: `GoogleHealthTimeSeries_Steps`
- Swim Lengths Data: `GoogleHealthTimeSeries_SwimLenghtsData`
- Time In Heart Rate Zone: `GoogleHealthTimeSeries_TimeInHeartRateZone`
- VO2 Max: `GoogleHealthTimeSeries_Vo2Max`
- Weight: `GoogleHealthTimeSeries_Weight`
Deleted records for a given data type are described in GoogleHealthTimeSeries_{DataType}_Deleted. See Google Health Deleted Export Format for the full field reference and how to apply it.
Data Fields
| Field | Description |
|---|---|
GoogleHealthTimeSeriesKey |
Unique key for this data point. |
ParticipantIdentifier |
The identifier of the participant this entry was recorded for. Can be used to cross reference with Participants. |
StartDate |
Start of the interval or the sample time (see RecordType below), in ISO 8601 format. Includes timezone offset information. |
EndDate |
End of the interval, in ISO 8601 format. For `"Sample"` data, equal to StartDate. Includes timezone offset information. |
ParticipantID |
The stable, automatically generated, internal system identifier for this participant. Universally unique identifier (UUID). |
ModifiedDate |
When this record was last modified, in UTC. |
RecordType |
The classification for this data type: "Interval" or "Sample". |
Value |
The sample or interval value, if a single dominant value applies. |
Unit |
Unit for Value, when applicable (e.g., `"mg/dL"`). |
DataSourceRecordingMethod |
How the data was captured, e.g., "AUTOMATICALLY_RECORDED" or "MANUALLY_ENTERED". |
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. |
Properties
Some data types carry more than one meaningful value—blood glucose, for example, also reports how and when the measurement was taken. These extra fields are exported as properties:
- In JSON, properties are nested under a
Propertiesobject. - In CSV, every potential property for that data type gets its own column, named
Property_{Name}. - If a data type has no single dominant value,
ValueandUnitare left blank and all of its values are stored as properties instead. - A
DataPointNameproperty is included when one is supplied, such as for Blood Glucose or Height.
Example type-specific properties:
| Data Type | Value / Unit | Properties |
|---|---|---|
BloodGlucose |
`"mg/dL"` | MeasurementSource, MealType, MeasurementTiming, Specimen, Notes, DataPointName |
Steps |
Count of steps | None |
ActiveMinutes |
Null (no single dominant value) | ActivityLevelUnspecifiedMinutes, ActivityLevelLightMinutes, ActivityLevelModerateMinutes, ActivityLevelVigorousMinutes |
Sample CSV Export
Sample Type with Properties
GoogleHealthTimeSeriesKey,ParticipantIdentifier,StartDate,EndDate,ParticipantID,ModifiedDate,RecordType,Value,Unit,DataSourceRecordingMethod,DataSourcePlatform,DataSourceDeviceFormFactor,DataSourceDeviceManufacturer,DataSourceDeviceDisplayName,DataSourceApplicationPackageName,DataSourceApplicationWebClientId,DataSourceApplicationGoogleWebClientId,Property_MeasurementSource,Property_MealType,Property_MeasurementTiming,Property_Specimen,Property_Notes,Property_DataPointName
f31423ab-13e0-52e7-936d-5f5b479197a0,MDH-123,2025-11-23T08:30:00-05:00,2025-11-23T08:30:00-05:00,11111111-aaaa-1111-1111-111111111111,2025-01-01T04:00:01Z,Sample,104.5,mg/dL,MANUALLY_ENTERED,FITBIT,PHONE,Google,Pixel 9,com.google.android.apps.fitness,,,CAPILLARY_BLOOD,BREAKFAST,AFTER_MEAL,WHOLE_BLOOD,felt fine,users/123000000000000000/dataTypes/bloodGlucose/dataPoints/300000000000000000
Interval Type with No Properties
GoogleHealthTimeSeriesKey,ParticipantIdentifier,StartDate,EndDate,ParticipantID,ModifiedDate,RecordType,Value,Unit,DataSourceRecordingMethod,DataSourcePlatform,DataSourceDeviceFormFactor,DataSourceDeviceManufacturer,DataSourceDeviceDisplayName,DataSourceApplicationPackageName,DataSourceApplicationWebClientId,DataSourceApplicationGoogleWebClientId
0974f4a2-46ba-5f35-a7c4-7caffce43bc5,MDH-123,2025-11-23T09:00:00-05:00,2025-11-23T09:15:00-05:00,11111111-aaaa-1111-1111-111111111111,2025-01-01T04:00:01Z,Interval,412,,AUTOMATICALLY_RECORDED,FITBIT,WATCH,Fitbit,Sense 2,com.fitbit.app,,
Sample JSON Export
Sample Type with Properties
{
"GoogleHealthTimeSeriesKey": "f31423ab-13e0-52e7-936d-5f5b479197a0",
"ParticipantIdentifier": "MDH-123",
"StartDate": "2025-11-23T08:30:00-05:00",
"EndDate": "2025-11-23T08:30:00-05:00",
"ParticipantID": "11111111-aaaa-1111-1111-111111111111",
"ModifiedDate": "2025-01-01T04:00:01Z",
"RecordType": "Sample",
"Value": 104.5,
"Unit": "mg/dL",
"DataSourceRecordingMethod": "MANUALLY_ENTERED",
"DataSourcePlatform": "FITBIT",
"DataSourceDeviceFormFactor": "PHONE",
"DataSourceDeviceManufacturer": "Google",
"DataSourceDeviceDisplayName": "Pixel 9",
"DataSourceApplicationPackageName": "com.google.android.apps.fitness",
"Properties": {
"MeasurementSource": "CAPILLARY_BLOOD",
"MealType": "BREAKFAST",
"MeasurementTiming": "AFTER_MEAL",
"Specimen": "WHOLE_BLOOD",
"Notes": "felt fine",
"DataPointName": "users/123000000000000000/dataTypes/bloodGlucose/dataPoints/300000000000000000"
}
}
Interval Type with No Properties
{
"GoogleHealthTimeSeriesKey": "0974f4a2-46ba-5f35-a7c4-7caffce43bc5",
"ParticipantIdentifier": "MDH-123",
"StartDate": "2025-11-23T09:00:00-05:00",
"EndDate": "2025-11-23T09:15:00-05:00",
"ParticipantID": "11111111-aaaa-1111-1111-111111111111",
"ModifiedDate": "2025-01-01T04:00:01Z",
"RecordType": "Interval",
"Value": 412,
"DataSourceRecordingMethod": "AUTOMATICALLY_RECORDED",
"DataSourcePlatform": "FITBIT",
"DataSourceDeviceFormFactor": "WATCH",
"DataSourceDeviceManufacturer": "Fitbit",
"DataSourceDeviceDisplayName": "Sense 2",
"DataSourceApplicationPackageName": "com.fitbit.app"
}