Health data types

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.

Namecom.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.

"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.
"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.
"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.
"intVal": 1 // Interstitial fluid
"intVal": 2 // Capillary blood
"intVal": 3 // Plasma
"intVal": 4 // Serum
"intVal": 5 // Tears
"intVal": 6 // Whole blood

Namecom.google.blood_glucose
Data type objectTYPE_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.

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.
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.
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.
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.

Namecom.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.

"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.
"intVal": 1 // Left wrist
"intVal": 2 // Right wrist
"intVal": 3 // Left upper arm
"intVal": 4 // Right upper arm

Namecom.google.blood_pressure
Data type objectTYPE_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.

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.
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.

Namecom.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%
Namecom.google.body.fat.percentage
Data type objectTYPE_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.

Namecom.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.

"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

Namecom.google.body.temperature
Data type objectTYPE_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.

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.

Namecom.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.

"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.
"intVal": 1 // Light
"intVal": 2 // Medium
"intVal": 3 // Heavy

Namecom.google.cervical_mucus
Data type objectTYPE_CERVICAL_MUCUS
Fields (format—units)
FIELD_CERVICAL_MUCUS_TEXTURE (int—enum) (optional field)
The consistency or texture of the user's cervical mucus.

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.
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.

Namecom.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.

"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.
"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.
"intVal": 1 // Cervix is soft
"intVal": 2 // Cervix is a little firm
"intVal": 3 // Cervix is firm

Namecom.google.cervical_position
Data type objectTYPE_CERVICAL_POSITION
Fields (format—units)
FIELD_CERVICAL_POSITION (int—enum) (optional field)
The position of the user's cervix.

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.
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.
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.

Namecom.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
Namecom.google.heart_rate.bpm
Data type objectTYPE_HEART_RATE_BPM
Android permissionBODY_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.

Namecom.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
Namecom.google.height
Data type objectTYPE_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.

Namecom.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.

"intVal": 1 // Spotting
"intVal": 2 // Light
"intVal": 3 // Medium
"intVal": 4 // Heavy

Namecom.google.menstruation
Data type objectTYPE_MENSTRUATION
Fields (format—units)
FIELD_MENSTRUAL_FLOW (int—enum) (optional field)
How heavy the user's period was.

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).

Namecom.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.

"intVal": 1 // Negative
"intVal": 2 // Positive

Namecom.google.ovulation_test
Data type objectTYPE_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.

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.

Namecom.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.
Namecom.google.oxygen_saturation
Data type objectTYPE_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.

Namecom.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.

"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.

Namecom.google.sleep.segment
Data type objectTYPE_SLEEP_SEGMENT
Fields (format—units) FIELD_SLEEP_SEGMENT_TYPE (int—enum)
Values representing different sleep stages and types.

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.

Namecom.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.
Namecom.google.vaginal_spotting
Data type objectTYPE_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.

Namecom.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
Namecom.google.weight
Data type objectTYPE_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:

  1. Make sure your app complies with Google's API User Data Policy and the Google Fit Developer and User Data Policy.
  2. 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.