outlined_flag
Google Fit includes data types for general health measurements such as blood glucose, blood pressure, body fat percentage, body temperature, heart rate, height, oxygen saturation, and weight.
Reproductive health data types available include cervical mucus, cervical position, menstruation, ovulation test, and vaginal spotting.
Sleep is captured in segments with different types like Awake, Sleeping, Light sleep, Deep sleep, and REM sleep.
Each data type has specific REST names, OAuth scopes for read and write access, and fields with defined units and data types, some of which use predefined enum values.
Accessing health data requires apps to comply with Google's API User Data Policy and Google Fit Policy, including consent screen verification.
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
Name com.google.blood_glucose
OAuth permission scopes
https://www.googleapis.com/auth/fitness.blood_glucose.read
https://www.googleapis.com/auth/fitness.blood_glucose.write
Fields (format—units)
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.
Accepted values
"intVal": 1 // Reading wasn't taken before or after a meal
"intVal": 2 // Reading was taken during a fasting period
"intVal": 3 // Reading was taken before a meal
"intVal": 4 // Reading was taken after a meal
meal type (int—enum) (optional field)
What type of meal the user ate around when the reading was taken.
Accepted values
"intVal": 1 // Unknown
"intVal": 2 // Breakfast
"intVal": 3 // Lunch
"intVal": 4 // Dinner
"intVal": 5 // Snack
temporal relation to sleep (int—enum) (optional field)
When the reading was taken compared to when the user slept.
Accepted values
"intVal": 1 // User was fully awake
"intVal": 2 // Before the user fell asleep
"intVal": 3 // After the user woke up
"intVal": 4 // While the user was still sleeping
specimen source (int—enum) (optional field)
Type of body fluid used to measure the blood glucose.
Accepted values
"intVal": 1 // Interstitial fluid
"intVal": 2 // Capillary blood
"intVal": 3 // Plasma
"intVal": 4 // Serum
"intVal": 5 // Tears
"intVal": 6 // Whole blood
Android
Name com.google.blood_glucose
Data type object TYPE_BLOOD_GLUCOSE
Fields (format—units)
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.
Accepted values
FIELD_TEMPORAL_RELATION_TO_MEAL_GENERAL // Reading wasn't taken before or after a meal
FIELD_TEMPORAL_RELATION_TO_MEAL_FASTING // Reading was taken during a fasting period
FIELD_TEMPORAL_RELATION_TO_MEAL_BEFORE_MEAL // Reading was taken before a meal
FIELD_TEMPORAL_RELATION_TO_MEAL_AFTER_MEAL // Reading was taken after a meal
FIELD_MEAL_TYPE (int—enum) (optional field)
What type of meal the user ate around when the reading was taken.
Accepted values
MEAL_TYPE_UNKNOWN // Unknown
MEAL_TYPE_BREAKFAST // Breakfast
MEAL_TYPE_LUNCH // Lunch
MEAL_TYPE_DINNER // Dinner
MEAL_TYPE_SNACK // Snack
FIELD_TEMPORAL_RELATION_TO_SLEEP (int—enum) (optional field)
When the reading was taken compared to when the user slept.
Accepted values
TEMPORAL_RELATION_TO_SLEEP_FULLY_AWAKE // User was fully awake.
TEMPORAL_RELATION_TO_SLEEP_BEFORE_SLEEP // Before the user fell asleep.
TEMPORAL_RELATION_TO_SLEEP_ON_WAKING // After the user woke up.
TEMPORAL_RELATION_TO_SLEEP_DURING_SLEEP // While the user was still sleeping.
FIELD_BLOOD_GLUCOSE_SPECIMEN_SOURCE (int—enum) (optional field)
Type of body fluid used to measure the blood glucose.
Accepted values
BLOOD_GLUCOSE_SPECIMEN_SOURCE_INTERSTITIAL_FLUID // Interstitial fluid
BLOOD_GLUCOSE_SPECIMEN_SOURCE_CAPILLARY_BLOOD // Capillary blood
BLOOD_GLUCOSE_SPECIMEN_SOURCE_PLASMA // Plasma
BLOOD_GLUCOSE_SPECIMEN_SOURCE_SERUM // Serum
BLOOD_GLUCOSE_SPECIMEN_SOURCE_TEARS // Tears
BLOOD_GLUCOSE_SPECIMEN_SOURCE_WHOLE_BLOOD // Whole blood
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
Name com.google.blood_pressure
OAuth permission scopes
https://www.googleapis.com/auth/fitness.blood_pressure.read
https://www.googleapis.com/auth/fitness.blood_pressure.write
Fields (format—units)
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.
Accepted values
"intVal": 1 // Standing up
"intVal": 2 // Sitting down
"intVal": 3 // Lying down
"intVal": 4 // Reclining
measurement location (int—enum) (optional field)
Which arm and part of the arm the measurement was taken.
Accepted values
"intVal": 1 // Left wrist
"intVal": 2 // Right wrist
"intVal": 3 // Left upper arm
"intVal": 4 // Right upper arm
Android
Name com.google.blood_pressure
Data type object TYPE_BLOOD_PRESSURE
Fields (format—units)
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.
Accepted values
BODY_POSITION_STANDING // Standing up
BODY_POSITION_SITTING // Sitting down
BODY_POSITION_LYING_DOWN // Lying down
BODY_POSITION_SEMI_RECUMBENT // Reclining
FIELD_BLOOD_PRESSURE_MEASUREMENT_LOCATION (int—enum) (optional field)
Which arm and part of the arm the measurement was taken.
Accepted values
BLOOD_PRESSURE_MEASUREMENT_LOCATION_LEFT_WRIST // Left wrist
BLOOD_PRESSURE_MEASUREMENT_LOCATION_RIGHT_WRIST // Right wrist
BLOOD_PRESSURE_MEASUREMENT_LOCATION_LEFT_UPPER_ARM // Left upper arm
BLOOD_PRESSURE_MEASUREMENT_LOCATION_RIGHT_UPPER_ARM // Right upper arm
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
Name com.google.body.temperature
OAuth permission scopes
https://www.googleapis.com/auth/fitness.body_temperature.read
https://www.googleapis.com/auth/fitness.body_temperature.write
Fields (format—units)
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.
Accepted values
"intVal": 1 // Armpit
"intVal": 2 // Finger
"intVal": 3 // Forehead
"intVal": 4 // Mouth (oral)
"intVal": 5 // Rectum
"intVal": 6 // Temporal artery
"intVal": 7 // Toe
"intVal": 8 // Ear (tympanic)
"intVal": 9 // Wrist
"intVal": 10 // Vagina
Android
Name com.google.body.temperature
Data type object TYPE_BODY_TEMPERATURE
Fields (format—units)
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.
Accepted values
BODY_TEMPERATURE_MEASUREMENT_LOCATION_AXILLARY // Armpit
BODY_TEMPERATURE_MEASUREMENT_LOCATION_FINGER // Finger
BODY_TEMPERATURE_MEASUREMENT_LOCATION_FOREHEAD // Forehead
BODY_TEMPERATURE_MEASUREMENT_LOCATION_ORAL // Mouth (oral)
BODY_TEMPERATURE_MEASUREMENT_LOCATION_RECTAL // Rectum
BODY_TEMPERATURE_MEASUREMENT_LOCATION_TEMPORAL_ARTERY // Temporal artery
BODY_TEMPERATURE_MEASUREMENT_LOCATION_TOE // Toe
BODY_TEMPERATURE_MEASUREMENT_LOCATION_TYMPANIC // Ear (tympanic
BODY_TEMPERATURE_MEASUREMENT_LOCATION_WRIST // Wrist
BODY_TEMPERATURE_MEASUREMENT_LOCATION_VAGINAL // Vagina
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
Name com.google.cervical_mucus
OAuth permission scopes
https://www.googleapis.com/auth/fitness.reproductive_health.read
https://www.googleapis.com/auth/fitness.reproductive_health.write
Fields (format—units)
cervical mucus texture (int—enum) (optional field)
The consistency or texture of the user's cervical mucus.
Accepted values
"intVal": 1 // Dry, little or no mucus
"intVal": 2 // Sticky
"intVal": 3 // Creamy
"intVal": 4 // Watery
"intVal": 5 // Clear and stretchy like egg white
cervical mucus amount (int—enum) (optional field)
How much cervical mucus the user observes.
Accepted values
"intVal": 1 // Light
"intVal": 2 // Medium
"intVal": 3 // Heavy
Android
Name com.google.cervical_mucus
Data type object TYPE_CERVICAL_MUCUS
Fields (format—units)
FIELD_CERVICAL_MUCUS_TEXTURE (int—enum) (optional field)
The consistency or texture of the user's cervical mucus.
Accepted values
CERVICAL_MUCUS_TEXTURE_DRY // Dry, little or no mucus
CERVICAL_MUCUS_TEXTURE_STICKY // Sticky
CERVICAL_MUCUS_TEXTURE_CREAMY // Creamy
CERVICAL_MUCUS_TEXTURE_WATERY // Watery
CERVICAL_MUCUS_TEXTURE_EGG_WHITE // Clear and stretchy
FIELD_CERVICAL_MUCUS_AMOUNT (int—enum) (optional field)
How much cervical mucus the user observes.
Accepted values
CERVICAL_MUCUS_AMOUNT_LIGHT
CERVICAL_MUCUS_AMOUNT_MEDIUM
CERVICAL_MUCUS_AMOUNT_HEAVY
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
Name com.google.cervical_position
OAuth permission scopes
https://www.googleapis.com/auth/fitness.reproductive_health.read
https://www.googleapis.com/auth/fitness.reproductive_health.write
Fields (format—units)
cervical position (int—enum) (optional field)
The position of the user's cervix.
Accepted values
"intVal": 1 // Cervix is low
"intVal": 2 // Cervix is in a medium position
"intVal": 3 // Cervix is high
cervical dilation (int—enum) (optional field)
How open or dilated the user's cervix is.
Accepted values
"intVal": 1 // Closed cervix
"intVal": 2 // Partially open cervix
"intVal": 3 // Fully dilated, open cervix
cervical firmness (int—enum) (optional field)
How firm user's cervix is.
Accepted values
"intVal": 1 // Cervix is soft
"intVal": 2 // Cervix is a little firm
"intVal": 3 // Cervix is firm
Android
Name com.google.cervical_position
Data type object TYPE_CERVICAL_POSITION
Fields (format—units)
FIELD_CERVICAL_POSITION (int—enum) (optional field)
The position of the user's cervix.
Accepted values
CERVICAL_POSITION_LOW
CERVICAL_POSITION_MEDIUM
CERVICAL_POSITION_HIGH
FIELD_CERVICAL_DILATION (int—enum) (optional field)
How open or dilated the user's cervix is.
Accepted values
CERVICAL_DILATION_CLOSED // Closed cervix
CERVICAL_DILATION_MEDIUM // Partially open cervix
CERVICAL_DILATION_OPEN // Fully dilated, open cervix
FIELD_CERVICAL_FIRMNESS (int—enum) (optional field)
How firm the user's cervix is.
Accepted values
CERVICAL_FIRMNESS_SOFT
CERVICAL_FIRMNESS_MEDIUM
CERVICAL_FIRMNESS_FIRM
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
Name com.google.menstruation
OAuth permission scopes
https://www.googleapis.com/auth/fitness.reproductive_health.read
https://www.googleapis.com/auth/fitness.reproductive_health.write
Fields (format—units)
menstrual flow (int—enum) (optional field)
How heavy the user's period was.
Accepted values
"intVal": 1 // Spotting
"intVal": 2 // Light
"intVal": 3 // Medium
"intVal": 4 // Heavy
Android
Name com.google.menstruation
Data type object TYPE_MENSTRUATION
Fields (format—units)
FIELD_MENSTRUAL_FLOW (int—enum) (optional field)
How heavy the user's period was.
Accepted values
MENSTRUAL_FLOW_SPOTTING // Spotting
MENSTRUAL_FLOW_LIGHT // Light
MENSTRUAL_FLOW_MEDIUM // Medium
MENSTRUAL_FLOW_HEAVY // Heavy
Ovulation test
In this data type, each data point represents the binary result of an ovulation
test (positive or negative).
REST
Name com.google.ovulation_test
OAuth permission scopes
https://www.googleapis.com/auth/fitness.reproductive_health.read
https://www.googleapis.com/auth/fitness.reproductive_health.write
Fields (format—units)
ovulation test (int—enum) (optional field)
The result of a user's ovulation test, which shows if they're ovulating or not.
Accepted values
"intVal": 1 // Negative
"intVal": 2 // Positive
Android
Name com.google.ovulation_test
Data type object TYPE_OVULATION_TEST
Fields (format—units)
FIELD_OVULATION_TEST_RESULT (int—enum) (optional field)
The result of a user's ovulation test, which shows if they're ovulating or not.
Accepted values
OVULATION_TEST_RESULT_NEGATIVE
OVULATION_TEST_RESULT_POSITIVE
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
Name com.google.oxygen_saturation
OAuth permission scopes
https://www.googleapis.com/auth/fitness.oxygen_saturation.read
https://www.googleapis.com/auth/fitness.oxygen_saturation.write
Fields (format—units)
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
Name com.google.oxygen_saturation
Data type object TYPE_OXYGEN_SATURATION
Fields (format—units)
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.
Accepted values
"intVal": 0 // Unspecified or unknown if user is sleeping.
"intVal": 1 // Awake; user is awake.
"intVal": 2 // Sleeping; generic or non-granular sleep description.
"intVal": 3 // Out of bed; user gets out of bed in the middle of a sleep session.
"intVal": 4 // Light sleep; user is in a light sleep cycle.
"intVal": 5 // Deep sleep; user is in a deep sleep cycle.
"intVal": 6 // REM sleep; user is in a REM sleep cyle.
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.
Accepted values
SLEEP_SEGMENT_TYPE_UNSPECIFIED // Unspecified or unknown if user is sleeping.
AWAKE // Awake; user is awake.
SLEEP // Sleeping; generic or non-granular sleep description.
OUT_OF_BED // Out of bed; user gets out of bed in the middle of a sleep session.
SLEEP_LIGHT // Light sleep; user is in a light sleep cycle.
SLEEP_DEEP // Deep sleep; user is in a deep sleep cycle.
SLEEP_REM // REM sleep; user is in a REM sleep cyle.
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
Name com.google.vaginal_spotting
OAuth permission scopes
https://www.googleapis.com/auth/fitness.reproductive_health.read
https://www.googleapis.com/auth/fitness.reproductive_health.write
Fields (format—units)
occurrences (int—count)
Each instance of spotting. Set this field to 1.
Android
Name com.google.vaginal_spotting
Data type object TYPE_VAGINAL_SPOTTING
Fields (format—units)
FIELD_OCCURRENCES (int—count)
Each instance of spotting. Set this field to 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 .
Note: If your app isn't verified when it requests access to a sensitive
OAuth scope, Google will assess its risk and apply
quotas accordingly. Your
users might also see warning screens . You can still
test your app but the quotas will restrict how many new users you can get.
If your app gets verified, it can read health data that users have consented to being read.