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.

REST

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

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

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.
measurement location (int—enum) (optional field)
Which arm and part of the arm the measurement was taken.

Android

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

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%

Android

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.

REST

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.

Android

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.

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

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.
cervical mucus amount (int—enum) (optional field)
How much cervical mucus the user observes.

Android

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

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

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

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

Android

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.

REST

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

Android

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.

REST

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.

Android

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

Ovulation test

In this data type, each data point represents the binary result of an ovulation test (positive or negative).

REST

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.

Android

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.

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

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.

Android

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.

REST

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.

Android

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.

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

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.

Android

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.

REST

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

Android

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.