El iPhone y el Apple Watch registran automáticamente, cada día, tu frecuencia cardiaca, tus pasos, tu sueño, el oxígeno en sangre y mucho más. Con unos años de uso, son millones de registros: datos reales y de largo plazo, difíciles de conseguir de otra forma y muy valiosos para la investigación y el desarrollo.
El problema es que la app Salud los exporta en un único archivo XML enorme, a veces de más de 1 GB, que Excel y la mayoría de herramientas no pueden abrir tal cual. En este artículo verás qué datos registra HealthKit y cómo convertirlos a CSV para analizarlos con la app para Mac HealthKit Parser.
¿Qué es HealthKit?
HealthKit es el sistema de Apple que guarda los datos de salud en el iPhone. Además de lo que miden automáticamente el iPhone y el Apple Watch, reúne los datos que escriben otras apps: básculas, tensiómetros, apps de sueño y de alimentación, etc. La app Salud es la ventana para ver todo eso.
Para leer los datos de HealthKit, las demás apps necesitan tu permiso para cada tipo de dato. Podrías crear tu propia app para leerlos directamente, pero si solo quieres sacar todos tus registros, lo más fácil es usar la exportación de la app Salud.
Los datos que registra HealthKit
Cada tipo de dato de HealthKit tiene un identificador, como HKQuantityTypeIdentifierHeartRate (frecuencia cardiaca). Ese identificador aparece tal cual en la exportación y en la columna type del CSV que crea HealthKit Parser. Estos son los principales, agrupados más o menos como en la app Salud.
La «unidad» es la que aparece en la exportación; puede cambiar según los ajustes del iPhone (km o mi, por ejemplo). «Suele registrarlo» es solo una guía de dónde suelen venir los datos.
Actividad
| Dato | Valor en la columna type | Unidad (ejemplo) | Suele registrarlo |
|---|---|---|---|
| Pasos | HKQuantityTypeIdentifier | count | iPhone, Apple Watch |
| Distancia andando y corriendo | HKQuantityTypeIdentifier | km | iPhone, Apple Watch |
| Pisos subidos | HKQuantityTypeIdentifier | count | iPhone, Apple Watch |
| Energía activa | HKQuantityTypeIdentifier | kcal | Apple Watch |
| Energía en reposo | HKQuantityTypeIdentifier | kcal | Apple Watch |
| Minutos de ejercicio | HKQuantityTypeIdentifier | min | Apple Watch |
| Minutos de pie | HKQuantityTypeIdentifier | min | Apple Watch |
| Horas de pie | HKCategoryTypeIdentifier | — | Apple Watch |
| Esfuerzo físico | HKQuantityTypeIdentifier | kcal/hr·kg | Apple Watch |
| Capacidad cardiorrespiratoria (VO2 máx.) | HKQuantityTypeIdentifier | mL/min·kg | Apple Watch |
| Tiempo a la luz del día | HKQuantityTypeIdentifier | min | Apple Watch |
| Distancia en bicicleta | HKQuantityTypeIdentifier | km | Apple Watch, Otras apps y dispositivos |
| Distancia y brazadas de natación | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | m, count | Apple Watch |
| Velocidad, potencia, longitud de zancada, oscilación vertical y tiempo de contacto con el suelo al correr | HKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifier | W, m, cm, ms … | Apple Watch |
| Esfuerzo del entrenamiento (estimado) | HKQuantityTypeIdentifier | appleEffortScore | Apple Watch |
Corazón
| Dato | Valor en la columna type | Unidad (ejemplo) | Suele registrarlo |
|---|---|---|---|
| Frecuencia cardiaca | HKQuantityTypeIdentifier | count/min | Apple Watch |
| Frecuencia cardiaca en reposo | HKQuantityTypeIdentifier | count/min | Apple Watch |
| Media de frecuencia cardiaca al andar | HKQuantityTypeIdentifier | count/min | Apple Watch |
| Variabilidad de la frecuencia cardiaca | HKQuantityTypeIdentifier | ms | Apple Watch |
| Recuperación cardiaca (1 minuto) | HKQuantityTypeIdentifier | count/min | Apple Watch |
| Historial de fibrilación auricular | HKQuantityTypeIdentifier | % | Apple Watch |
| Avisos de frecuencia cardiaca alta, baja y ritmo irregular | HKCategoryTypeIdentifierHKCategoryTypeIdentifierHKCategoryTypeIdentifier | — | Apple Watch |
Respiración
| Dato | Valor en la columna type | Unidad (ejemplo) | Suele registrarlo |
|---|---|---|---|
| Frecuencia respiratoria | HKQuantityTypeIdentifier | count/min | Apple Watch |
| Oxígeno en sangre | HKQuantityTypeIdentifier | % | Apple Watch |
| Alteraciones respiratorias | HKQuantityTypeIdentifier | count | Apple Watch |
| Avisos de apnea del sueño | HKCategoryTypeIdentifier | — | Apple Watch |
Sueño
| Dato | Valor en la columna type | Unidad (ejemplo) | Suele registrarlo |
|---|---|---|---|
| Sueño (en cama, esencial, profundo, REM, despierto) | HKCategoryTypeIdentifier | — | Apple Watch, iPhone, Otras apps y dispositivos |
| Temperatura de la muñeca durante el sueño | HKQuantityTypeIdentifier | degC | Apple Watch |
| Objetivo de horas de sueño | HKData | hr | App Salud |
Movilidad
| Dato | Valor en la columna type | Unidad (ejemplo) | Suele registrarlo |
|---|---|---|---|
| Velocidad al andar | HKQuantityTypeIdentifier | km/hr | iPhone |
| Longitud del paso | HKQuantityTypeIdentifier | cm | iPhone |
| Asimetría al andar | HKQuantityTypeIdentifier | % | iPhone |
| Tiempo de doble apoyo | HKQuantityTypeIdentifier | % | iPhone |
| Estabilidad al andar | HKQuantityTypeIdentifier | % | iPhone |
| Velocidad en escaleras (subida, bajada) | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | m/s | iPhone, Apple Watch |
| Prueba de marcha de seis minutos (estimada) | HKQuantityTypeIdentifier | m | iPhone |
Audición
| Dato | Valor en la columna type | Unidad (ejemplo) | Suele registrarlo |
|---|---|---|---|
| Niveles de ruido ambiental | HKQuantityTypeIdentifier | dBASPL | Apple Watch |
| Niveles de audio de los auriculares | HKQuantityTypeIdentifier | dBASPL | iPhone |
| Avisos de ruido ambiental alto | HKCategoryTypeIdentifier | — | Apple Watch |
Medidas corporales
| Dato | Valor en la columna type | Unidad (ejemplo) | Suele registrarlo |
|---|---|---|---|
| Altura | HKQuantityTypeIdentifier | cm | Introducción manual, Otras apps y dispositivos |
| Peso | HKQuantityTypeIdentifier | kg | Otras apps y dispositivos, Introducción manual |
| Índice de masa corporal (IMC) | HKQuantityTypeIdentifier | count | Otras apps y dispositivos, Introducción manual |
| Porcentaje de grasa corporal | HKQuantityTypeIdentifier | % | Otras apps y dispositivos, Introducción manual |
| Masa corporal magra | HKQuantityTypeIdentifier | kg | Otras apps y dispositivos, Introducción manual |
| Perímetro de cintura | HKQuantityTypeIdentifier | cm | Introducción manual |
Constantes vitales
| Dato | Valor en la columna type | Unidad (ejemplo) | Suele registrarlo |
|---|---|---|---|
| Tensión arterial (sistólica, diastólica) | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | mmHg | Otras apps y dispositivos, Introducción manual |
| Temperatura corporal | HKQuantityTypeIdentifier | degC | Otras apps y dispositivos, Introducción manual |
| Temperatura basal | HKQuantityTypeIdentifier | degC | Otras apps y dispositivos, Introducción manual |
| Glucosa en sangre | HKQuantityTypeIdentifier | mg/dL | Otras apps y dispositivos, Introducción manual |
Nutrición
| Dato | Valor en la columna type | Unidad (ejemplo) | Suele registrarlo |
|---|---|---|---|
| Energía de la dieta, proteínas, grasas totales, carbohidratos | HKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifier | kcal, g | Otras apps y dispositivos, Introducción manual |
| Agua, cafeína | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | mL, mg | Otras apps y dispositivos, Introducción manual |
| Fibra, vitaminas, minerales y más (más de 30 tipos) | HKQuantityTypeIdentifierHKQuantityTypeIdentifier… | g, mg, µg … | Otras apps y dispositivos, Introducción manual |
Otros
| Dato | Valor en la columna type | Unidad (ejemplo) | Suele registrarlo |
|---|---|---|---|
| Minutos de mindfulness | HKCategoryTypeIdentifier | — | Apple Watch, Otras apps y dispositivos |
| Lavado de manos | HKCategoryTypeIdentifier | — | Apple Watch |
| Cepillado de dientes | HKCategoryTypeIdentifier | — | Otras apps y dispositivos |
| Número de caídas | HKQuantityTypeIdentifier | count | Apple Watch |
| Seguimiento del ciclo (menstruación, etc.) | HKCategoryTypeIdentifier… | — | Introducción manual, Otras apps y dispositivos |
| Síntomas (dolor de cabeza, fiebre, tos, etc.) | HKCategoryTypeIdentifierHKCategoryTypeIdentifierHKCategoryTypeIdentifier… | — | Introducción manual |
| Índice UV | HKQuantityTypeIdentifier | count | Otras apps y dispositivos |
Las filas con «—» como unidad son datos de categoría: la columna value contiene una categoría, como HKCategoryValueSleepAnalysisAsleepCore (sueño esencial).
En total, HealthKit tiene bastante más de 100 tipos de datos, entre ellos los resultados de pruebas de audición y las velocidades durante los entrenamientos. Cuáles tengas tú depende de tus dispositivos y apps. La exportación del autor, de unos nueve años (2017–2026), tenía 42 tipos y unos 3,08 millones de registros. Los más numerosos eran la energía activa y la frecuencia cardiaca del Apple Watch, con unos 700.000 registros cada uno.
Exporta tus datos de Salud en el iPhone
- Abre la app Salud en el iPhone y toca el icono de tu perfil, arriba a la derecha.
- Al final de la pantalla, toca «Exportar todos los datos de salud» y, para confirmar, toca «Exportar». Si tienes muchos datos, puede tardar unos minutos.
- Cuando aparezca el menú para compartir, envía el archivo al Mac con AirDrop, o guárdalo en Archivos y pásalo al Mac.
- En el Mac, haz doble clic en el archivo zip para descomprimirlo.
Se crea una carpeta llamada apple_health_export con este contenido:
export.xml: Todos tus registros. Es el archivo que lee HealthKit Parserexport_cda.xml: Registros en el formato HL7 CDA, un estándar para documentos clínicoselectrocardiograms: Electrocardiogramas registrados con el Apple Watch (CSV)workout-routes: Rutas de los entrenamientos (GPX)
Conviértelo a CSV con HealthKit Parser
HealthKit Parser es una app para Mac que lee export.xml y guarda los registros en CSV. Todo se hace en tu Mac; tus datos no se envían a ningún sitio.
1. Importa export.xml
Al abrir HealthKit Parser se abre la ventana de un documento nuevo. Haz clic en «Import XML» en la barra de herramientas y elige export.xml en la carpeta descomprimida.

La importación tarda un rato. El export.xml de 1,4 GB del autor (unos 3,08 millones de registros) tardó unos 14 minutos en un MacBook Pro (M4). Hasta que termina, abajo a la derecha de la ventana aparece «Parsing XML…».
2. Comprueba los tipos de datos y cuántos hay
Al terminar la importación, la ventana muestra el periodo que abarcan los registros (inicio y fin), el número de registros y todos los tipos de datos con su recuento. Puedes añadir un título y notas.

Si guardas el documento, la próxima vez se abre al instante, sin volver a importar export.xml. Es muy práctico si quieres exportar distintos periodos una y otra vez.
3. Exporta a CSV
Haz clic en «Export CSV» en la barra de herramientas, elige el periodo y los tipos de datos y haz clic en «Export». Puedes dejar «All Time» (todo el periodo) o acotarlo con una fecha de inicio y otra de fin.

Puedes exportar todos los tipos a la vez, pero con millones de registros el CSV es enorme. Si eliges solo los tipos que necesitas, será mucho más fácil de manejar.
Qué contiene el CSV
Cada fila es un registro, con estas columnas:
| Columna | Contenido |
|---|---|
type | El tipo de dato (los identificadores de las tablas anteriores) |
unit | Unidad |
value | El valor. En el sueño y otros datos de categoría, un texto |
start, end | Inicio y fin del registro, hasta el minuto, con el formato de los ajustes de «Idioma y región» del Mac |
start_UT, end_UT | Inicio y fin del registro en tiempo Unix (segundos) |
creation, creation_UT | Cuándo se guardó el registro en HealthKit, y lo mismo en tiempo Unix |
device | El dispositivo que lo registró (modelo, versión del software) |
source name, source version | La app o el dispositivo que lo registró, y su versión |
Este es un ejemplo de frecuencia cardiaca en reposo exportada (solo algunas columnas):
| type | unit | value | start_UT | end_UT |
|---|---|---|---|---|
HKQuantityTypeIdentifier | count/min | 63 | 1791559483.0 | 1791640198.0 |
HKQuantityTypeIdentifier | count/min | 63 | 1791645830.0 | 1791714436.0 |
HKQuantityTypeIdentifier | count/min | 58 | 1791737624.0 | 1791765440.0 |
Las columnas _UT (tiempo Unix)
Las columnas que terminan en _UT dan la fecha y la hora en tiempo Unix: los segundos transcurridos desde las 00:00:00 UTC del 1 de enero de 1970. El tiempo Unix no depende de la zona horaria.
- El orden y la separación de los registros no se alteran aunque viajes y cambies de zona horaria
- Con una simple resta obtienes la duración de un intervalo (en segundos), como una fase del sueño
- Tiene precisión de segundos (columnas como
startllegan solo al minuto) - Es fácil de cruzar con los datos de equipos de laboratorio y otros sensores
- Puedes convertirlo a cualquier zona horaria al mostrarlo
En Python (pandas) puedes leerlo así. La fila de encabezado tiene un espacio después de cada coma, así que añade skipinitialspace=True.
import pandas as pd
df = pd.read_csv("resting_heart_rate.csv", skipinitialspace=True)
# Tiempo Unix → fecha y hora (UTC) → hora local
df["start_local"] = (pd.to_datetime(df["start_UT"], unit="s", utc=True)
.dt.tz_convert("Europe/Madrid"))
# Duración de cada intervalo (segundos)
df["seconds"] = df["end_UT"] - df["start_UT"]
En Excel, =E2/86400+FECHA(1970;1;1) con formato de fecha y hora en la celda da la fecha y hora UTC (si la columna E es start_UT). Para la hora local, suma tu diferencia con UTC dividida entre 24; por ejemplo, 1/24 para Madrid en invierno.
Consejos para el análisis
- Algunos datos se solapan: Si usas el iPhone y el Apple Watch, los pasos y la distancia los registran los dos. La app Salud elimina el solapamiento al mostrarlos, pero la exportación incluye ambos. Antes de sumar, filtra por la columna
source nameodevice. - Los porcentajes van de 0 a 1: Los datos cuya unidad es % (oxígeno en sangre, grasa corporal, asimetría al andar, etc.) se guardan como 0,97 para un 97 %.
- Comprueba las unidades: Las unidades pueden cambiar según los ajustes del iPhone. Revisa la columna
unitantes de calcular. - Datos de categoría: una fila por intervalo: En el sueño, la columna
valuecontieneHKCategoryValueSleepAnalysisAsleepCore(esencial),…AsleepDeep(profundo),…AsleepREM(REM),…Awake(despierto), etc., y cada fila es un intervalo. Su duración esend_UT − start_UT. - Si trabajas con datos de otras personas: Los datos de salud son información personal muy sensible. Si usas datos de participantes en una investigación, sigue los procedimientos de revisión ética y consentimiento de tu institución.
Lo que no incluye el CSV
HealthKit Parser convierte los registros individuales de export.xml. No incluye los resúmenes de los entrenamientos (tipo de actividad, duración, distancia total, etc.), los totales diarios de los anillos de Actividad ni los datos del perfil, como la fecha de nacimiento o el grupo sanguíneo. La frecuencia cardiaca, la distancia y la energía registradas durante los entrenamientos sí se incluyen como registros individuales.
Los electrocardiogramas y las rutas de los entrenamientos ya están en la carpeta descomprimida como archivos CSV y GPX, listos para usar.
En resumen
Una vez exportados y convertidos a CSV, los registros del iPhone y el Apple Watch se pueden analizar libremente en Excel, R, Python y otras herramientas. Las columnas _UT te permiten combinarlos con otros datos sin preocuparte por las zonas horarias.
HealthKit Parser se vende como compra única en el Mac App Store (macOS 12 o posterior). No hay suscripción.
