Google Fit has health data types for measurements related to managing general health (as opposed to fitness).
Data types list
You can learn more about the health data types, and their fields, from the Android reference documentation
. Fields with the unit enum
have a
list of accepted values to choose from. Only use one of the allowed values to
successfully read and write data.
Blood glucose
This data type captures the concentration of glucose in the blood. Each data point represents a single instantaneous blood glucose reading. Learn more about writing blood glucose data .
REST
com.google.blood_glucose
blood glucose level( float
—mmol/L) The blood glucose level or concentration in mmol/L where 1 mmol/L is 18 mg/dL.
|
---|
temporal relation to meal( int
—enum) (optional field) When the reading was taken compared to when the user ate.
|
meal type( int
—enum) (optional field) What type of meal the user ate around when the reading was taken.
|
temporal relation to sleep( int
—enum) (optional field) When the reading was taken compared to when the user slept.
|
specimen source( int
—enum) (optional field) Type of body fluid used to measure the blood glucose.
|
Android
com.google.blood_glucose
FIELD_BLOOD_GLUCOSE_LEVEL( float
—mmol/L) The blood glucose level or concentration in mmol/L where 1 mmol/L is 18 mg/dL.
|
---|
FIELD_TEMPORAL_RELATION_TO_MEAL( int
—enum) (optional field) When the reading was taken compared to when the user ate.
|
FIELD_MEAL_TYPE( int
—enum) (optional field) What type of meal the user ate around when the reading was taken.
|
FIELD_TEMPORAL_RELATION_TO_SLEEP( int
—enum) (optional field) When the reading was taken compared to when the user slept.
|
FIELD_BLOOD_GLUCOSE_SPECIMEN_SOURCE( int
—enum) (optional field) Type of body fluid used to measure the blood glucose.
|
Blood pressure
This data type captures the blood pressure of a user. Each data point represents a single instantaneous blood pressure reading. Learn more about writing blood pressure data .
REST
com.google.blood_pressure
systolic( float
—mmHg) The systolic blood pressure measurement.
|
---|
diastolic( float
—mmHg) The diastolic blood pressure measurement.
|
body position( int
—enum) (optional field) The user's body position when the measurement was taken.
|
measurement location( int
—enum) (optional field) Which arm and part of the arm the measurement was taken.
|
Android
com.google.blood_pressure
FIELD_BLOOD_PRESSURE_SYSTOLIC( float
—mmHg) The systolic blood pressure measurement.
|
---|
FIELD_BLOOD_PRESSURE_DIASTOLIC( float
—mmHg) The diastolic blood pressure measurement.
|
FIELD_BODY_POSITION( int
—enum) (optional field) The user's body position when the measurement was taken.
|
FIELD_BLOOD_PRESSURE_MEASUREMENT_LOCATION( int
—enum) (optional field) Which arm and part of the arm the measurement was taken.
|
Body fat percentage
This data type captures the body fat percentage of a user. Each data point represents a person's total body fat as a percentage of their total body mass.
REST
Name | com.google.body.fat.percentage
|
OAuth permission scopes | https://www.googleapis.com/auth/fitness.body.read
https://www.googleapis.com/auth/fitness.body.write
|
Fields (format—units) | percentage( float
—percent) Percentage of total body mass that is body fat.
Valid range: 0—100%
|
Android
Name | com.google.body.fat.percentage
|
Data type object | TYPE_BODY_FAT_PERCENTAGE
|
Fields (format—units) | FIELD_PERCENTAGE( float
—percent) Percentage of total body mass that is body fat.
Valid range: 0—100%
|
Body temperature
This data type captures the body temperature of a user. Each data point represents a single instantaneous body temperature measurement.
REST
com.google.body.temperature
body temperature( float
—celsius) Body temperature in degrees celsius.
|
---|
measurement location( int
—enum) (optional field) Where on the user's body the temperature measurement was taken from.
|
Android
com.google.body.temperature
FIELD_BODY_TEMPERATURE( float
—celsius) Body temperature in degrees celsius.
|
---|
FIELD_BODY_TEMPERATURE_MEASUREMENT_LOCATION( int
—enum) (optional field) Where on the user's body the temperature measurement was taken from.
|
Cervical mucus
This data type captures the description of cervical mucus. Each data point represents a self-assessed description of cervical mucus for a user. All fields are optional and can be used to describe the look and feel of cervical mucus, and the amount.
REST
com.google.cervical_mucus
cervical mucus texture( int
—enum) (optional field) The consistency or texture of the user's cervical mucus.
|
---|
cervical mucus amount( int
—enum) (optional field) How much cervical mucus the user observes.
|
Android
com.google.cervical_mucus
FIELD_CERVICAL_MUCUS_TEXTURE( int
—enum) (optional field) The consistency or texture of the user's cervical mucus.
|
---|
FIELD_CERVICAL_MUCUS_AMOUNT( int
—enum) (optional field) How much cervical mucus the user observes.
|
Cervical position
In this data type, each data point represents a report of the user's cervix. All fields are optional, and can be used to add descriptions of the position, dilation and firmness of the cervix.
REST
com.google.cervical_position
cervical position( int
—enum) (optional field) The position of the user's cervix.
|
---|
cervical dilation( int
—enum) (optional field) How open or dilated the user's cervix is.
|
cervical firmness( int
—enum) (optional field) How firm user's cervix is.
|
Android
com.google.cervical_position
FIELD_CERVICAL_POSITION( int
—enum) (optional field) The position of the user's cervix.
|
---|
FIELD_CERVICAL_DILATION( int
—enum) (optional field) How open or dilated the user's cervix is.
|
FIELD_CERVICAL_FIRMNESS( int
—enum) (optional field) How firm the user's cervix is.
|
Heart rate
This data type captures the user's heart rate in beats per minute. Because each data point represents an instantaneous measure of heart rate, only the end time should be set. This will be used as the timestamp for the reading.
REST
Name | com.google.heart_rate.bpm
|
OAuth permission scopes | https://www.googleapis.com/auth/fitness.heart_rate.read
https://www.googleapis.com/auth/fitness.heart_rate.write
|
Fields (format—units) | bpm( float
—bpm) Heart rate in beats per minute.
Valid range: 0—1000
|
Android
Name | com.google.heart_rate.bpm
|
Data type object | TYPE_HEART_RATE_BPM
|
Android permission | BODY_SENSORS
to record |
Fields (format—units) | bpm( float
—bpm) Heart rate in beats per minute.
Valid range: 0—1000 bpm
|
Height
This data type captures that user's height in meters. Because each data point represents the height of the user at the time of the reading, only the end time should be set. This will be used as the timestamp for the reading.
REST
Name | com.google.height
|
OAuth permission scopes | https://www.googleapis.com/auth/fitness.body.read
https://www.googleapis.com/auth/fitness.body.write
|
Fields (format—units) | height( float
—meters) Height in meters.
Valid range: 0—3 meters
|
Android
Name | com.google.height
|
Data type object | TYPE_HEIGHT
|
Fields (format—units) | FIELD_HEIGHT( float
—meters) Height in meters.
Valid range: 0—3 meters
|
Menstruation
This data type captures a description of how heavy a user's menstrual flow was (spotting, light, medium, or heavy). Each data point represents a description of how heavy the user's menstrual bleeding was.
REST
com.google.menstruation
int
—enum) (optional field) Android
com.google.menstruation
int
—enum) (optional field) Ovulation test
In this data type, each data point represents the binary result of an ovulation test (positive or negative).
REST
com.google.ovulation_test
int
—enum) (optional field) Android
com.google.ovulation_test
int
—enum) (optional field) Oxygen saturation
This data type captures the amount of oxygen circulating in the blood, measured as a percentage of oxygen-saturated hemoglobin. Each data point represents a single blood oxygen saturation reading at the time of measurement.
The optional fields also let you add details about any supplemental oxygen if administered.
REST
com.google.oxygen_saturation
oxygen saturation( float
—percentage) The blood oxygen saturation reading as a percentage.
Valid range: 0—100%
|
---|
supplemental oxygen flow rate( float
—L/min) The rate additional oxygen is supplied to a user in liters per minute.
Set to zero if no supplemental oxygen is provided, and the user is
breathing room air only.
|
oxygen therapy administration mode( int
—enum) (optional field) How oxygen therapy is administered.
Can be absent or
1
if administered by nasal canula. |
oxygen saturation system( int
—enum) (optional field) Where oxygen saturation is measured.
Can be absent or
1
if measured in peripheral capillaries. |
oxygen saturation measurement method( int
—enum) (optional field) How oxygen saturation is measured.
Can be absent or
1
if measured by pulse oximetry. |
Android
com.google.oxygen_saturation
FIELD_OXYGEN_SATURATION( float
—percentage) The blood oxygen saturation reading as a percentage.
|
---|
FIELD_SUPPLEMENTAL_OXYGEN_FLOW_RATE( float
—L/min) The rate additional oxygen is supplied to a user in liters per minute.
Zero indicates no supplemental oxygen is provided, and the user is
breathing room air only.
|
FIELD_OXYGEN_THERAPY_ADMINISTRATION_MODE( int
—enum) (optional field) How oxygen therapy is administered.
Can be absent or
1
if administered by nasal canula. |
FIELD_OXYGEN_SATURATION_SYSTEM( int
—enum) (optional field) Where oxygen saturation is measured.
Can be absent or
1
if measured in peripheral capillaries. |
FIELD_OXYGEN_SATURATION_MEASUREMENT_METHOD( int
—enum) (optional field) How oxygen saturation is measured.
Can be absent or
1
if measured by pulse oximetry. |
Sleep
This data type captures the user's length and type of sleep. Each data point represents a time interval for a stage of sleep.
The start time of the data point represents the start of the sleep stage and always needs to be included. The timestamp represents the end of the sleep stage. Time intervals don't need to be continuous but shouldn't overlap.
REST
Name | com.google.sleep.segment
|
OAuth permission scopes | https://www.googleapis.com/auth/fitness.sleep.read
https://www.googleapis.com/auth/fitness.sleep.write
|
Fields (format—units) | sleep segment type( int
—enum) Values representing different sleep stages and types.
|
Android
Name | com.google.sleep.segment
|
Data type object | TYPE_SLEEP_SEGMENT
|
Fields (format—units) | FIELD_SLEEP_SEGMENT_TYPE( int
—enum) Values representing different sleep stages and types.
|
Vaginal spotting
This data type captures if a user experiences spotting (bleeding in between their period). Each data point represents one instance of spotting, so each point should have a timestamp and the occurrences field should be set to one.
REST
com.google.vaginal_spotting
int
—count) 1
.Android
com.google.vaginal_spotting
int
—count) 1
.Weight
This data type captures that user's weight in kilograms. Because each data point represents the weight of the user at the time of the reading, only the end time should be set. This will be used as the timestamp for the reading.
REST
Name | com.google.weight
|
OAuth permission scopes | https://www.googleapis.com/auth/fitness.body.read
https://www.googleapis.com/auth/fitness.body.write
|
Fields (format—units) | weight( float
—kgs) Body weight in kilograms.
Valid range: 0—1000 kilograms
|
Android
Name | com.google.weight
|
Data type object | TYPE_WEIGHT
|
Fields (format—units) | FIELD_WEIGHT( float
—kgs) Body weight in kilograms.
Valid range: 0—1000 kilograms
|
Getting permission to read and write health data
To read health data, follow these steps:
- Make sure your app complies with Google's API User Data Policy and the Google Fit Developer and User Data Policy.
-
Apply for your consent screen to be verified by Google .
If your app gets verified, it can read health data that users have consented to being read.