Convierte a CSV los datos de Salud del iPhone: qué registra HealthKit y cómo usar HealthKit Parser

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

DatoValor en la columna typeUnidad (ejemplo)Suele registrarlo
PasosHKQuantityTypeIdentifierStepCountcountiPhone, Apple Watch
Distancia andando y corriendoHKQuantityTypeIdentifierDistanceWalkingRunningkmiPhone, Apple Watch
Pisos subidosHKQuantityTypeIdentifierFlightsClimbedcountiPhone, Apple Watch
Energía activaHKQuantityTypeIdentifierActiveEnergyBurnedkcalApple Watch
Energía en reposoHKQuantityTypeIdentifierBasalEnergyBurnedkcalApple Watch
Minutos de ejercicioHKQuantityTypeIdentifierAppleExerciseTimeminApple Watch
Minutos de pieHKQuantityTypeIdentifierAppleStandTimeminApple Watch
Horas de pieHKCategoryTypeIdentifierAppleStandHour—Apple Watch
Esfuerzo físicoHKQuantityTypeIdentifierPhysicalEffortkcal/hr·kgApple Watch
Capacidad cardiorrespiratoria (VO2 máx.)HKQuantityTypeIdentifierVO2MaxmL/min·kgApple Watch
Tiempo a la luz del díaHKQuantityTypeIdentifierTimeInDaylightminApple Watch
Distancia en bicicletaHKQuantityTypeIdentifierDistanceCyclingkmApple Watch, Otras apps y dispositivos
Distancia y brazadas de nataciónHKQuantityTypeIdentifierDistanceSwimming
HKQuantityTypeIdentifierSwimmingStrokeCount
m, countApple Watch
Velocidad, potencia, longitud de zancada, oscilación vertical y tiempo de contacto con el suelo al correrHKQuantityTypeIdentifierRunningSpeed
HKQuantityTypeIdentifierRunningPower
HKQuantityTypeIdentifierRunningStrideLength
HKQuantityTypeIdentifierRunningVerticalOscillation
HKQuantityTypeIdentifierRunningGroundContactTime
W, m, cm, ms …Apple Watch
Esfuerzo del entrenamiento (estimado)HKQuantityTypeIdentifierEstimatedWorkoutEffortScoreappleEffortScoreApple Watch

Corazón

DatoValor en la columna typeUnidad (ejemplo)Suele registrarlo
Frecuencia cardiacaHKQuantityTypeIdentifierHeartRatecount/minApple Watch
Frecuencia cardiaca en reposoHKQuantityTypeIdentifierRestingHeartRatecount/minApple Watch
Media de frecuencia cardiaca al andarHKQuantityTypeIdentifierWalkingHeartRateAveragecount/minApple Watch
Variabilidad de la frecuencia cardiacaHKQuantityTypeIdentifierHeartRateVariabilitySDNNmsApple Watch
Recuperación cardiaca (1 minuto)HKQuantityTypeIdentifierHeartRateRecoveryOneMinutecount/minApple Watch
Historial de fibrilación auricularHKQuantityTypeIdentifierAtrialFibrillationBurden%Apple Watch
Avisos de frecuencia cardiaca alta, baja y ritmo irregularHKCategoryTypeIdentifierHighHeartRateEvent
HKCategoryTypeIdentifierLowHeartRateEvent
HKCategoryTypeIdentifierIrregularHeartRhythmEvent
—Apple Watch

Respiración

DatoValor en la columna typeUnidad (ejemplo)Suele registrarlo
Frecuencia respiratoriaHKQuantityTypeIdentifierRespiratoryRatecount/minApple Watch
Oxígeno en sangreHKQuantityTypeIdentifierOxygenSaturation%Apple Watch
Alteraciones respiratoriasHKQuantityTypeIdentifierAppleSleepingBreathingDisturbancescountApple Watch
Avisos de apnea del sueñoHKCategoryTypeIdentifierSleepApneaEvent—Apple Watch

Sueño

DatoValor en la columna typeUnidad (ejemplo)Suele registrarlo
Sueño (en cama, esencial, profundo, REM, despierto)HKCategoryTypeIdentifierSleepAnalysis—Apple Watch, iPhone, Otras apps y dispositivos
Temperatura de la muñeca durante el sueñoHKQuantityTypeIdentifierAppleSleepingWristTemperaturedegCApple Watch
Objetivo de horas de sueñoHKDataTypeSleepDurationGoalhrApp Salud

Movilidad

DatoValor en la columna typeUnidad (ejemplo)Suele registrarlo
Velocidad al andarHKQuantityTypeIdentifierWalkingSpeedkm/hriPhone
Longitud del pasoHKQuantityTypeIdentifierWalkingStepLengthcmiPhone
Asimetría al andarHKQuantityTypeIdentifierWalkingAsymmetryPercentage%iPhone
Tiempo de doble apoyoHKQuantityTypeIdentifierWalkingDoubleSupportPercentage%iPhone
Estabilidad al andarHKQuantityTypeIdentifierAppleWalkingSteadiness%iPhone
Velocidad en escaleras (subida, bajada)HKQuantityTypeIdentifierStairAscentSpeed
HKQuantityTypeIdentifierStairDescentSpeed
m/siPhone, Apple Watch
Prueba de marcha de seis minutos (estimada)HKQuantityTypeIdentifierSixMinuteWalkTestDistancemiPhone

Audición

DatoValor en la columna typeUnidad (ejemplo)Suele registrarlo
Niveles de ruido ambientalHKQuantityTypeIdentifierEnvironmentalAudioExposuredBASPLApple Watch
Niveles de audio de los auricularesHKQuantityTypeIdentifierHeadphoneAudioExposuredBASPLiPhone
Avisos de ruido ambiental altoHKCategoryTypeIdentifierAudioExposureEvent—Apple Watch

Medidas corporales

DatoValor en la columna typeUnidad (ejemplo)Suele registrarlo
AlturaHKQuantityTypeIdentifierHeightcmIntroducción manual, Otras apps y dispositivos
PesoHKQuantityTypeIdentifierBodyMasskgOtras apps y dispositivos, Introducción manual
Índice de masa corporal (IMC)HKQuantityTypeIdentifierBodyMassIndexcountOtras apps y dispositivos, Introducción manual
Porcentaje de grasa corporalHKQuantityTypeIdentifierBodyFatPercentage%Otras apps y dispositivos, Introducción manual
Masa corporal magraHKQuantityTypeIdentifierLeanBodyMasskgOtras apps y dispositivos, Introducción manual
Perímetro de cinturaHKQuantityTypeIdentifierWaistCircumferencecmIntroducción manual

Constantes vitales

DatoValor en la columna typeUnidad (ejemplo)Suele registrarlo
Tensión arterial (sistólica, diastólica)HKQuantityTypeIdentifierBloodPressureSystolic
HKQuantityTypeIdentifierBloodPressureDiastolic
mmHgOtras apps y dispositivos, Introducción manual
Temperatura corporalHKQuantityTypeIdentifierBodyTemperaturedegCOtras apps y dispositivos, Introducción manual
Temperatura basalHKQuantityTypeIdentifierBasalBodyTemperaturedegCOtras apps y dispositivos, Introducción manual
Glucosa en sangreHKQuantityTypeIdentifierBloodGlucosemg/dLOtras apps y dispositivos, Introducción manual

Nutrición

DatoValor en la columna typeUnidad (ejemplo)Suele registrarlo
Energía de la dieta, proteínas, grasas totales, carbohidratosHKQuantityTypeIdentifierDietaryEnergyConsumed
HKQuantityTypeIdentifierDietaryProtein
HKQuantityTypeIdentifierDietaryFatTotal
HKQuantityTypeIdentifierDietaryCarbohydrates
kcal, gOtras apps y dispositivos, Introducción manual
Agua, cafeínaHKQuantityTypeIdentifierDietaryWater
HKQuantityTypeIdentifierDietaryCaffeine
mL, mgOtras apps y dispositivos, Introducción manual
Fibra, vitaminas, minerales y más (más de 30 tipos)HKQuantityTypeIdentifierDietaryFiber
HKQuantityTypeIdentifierDietaryVitaminC
…
g, mg, µg …Otras apps y dispositivos, Introducción manual

Otros

DatoValor en la columna typeUnidad (ejemplo)Suele registrarlo
Minutos de mindfulnessHKCategoryTypeIdentifierMindfulSession—Apple Watch, Otras apps y dispositivos
Lavado de manosHKCategoryTypeIdentifierHandwashingEvent—Apple Watch
Cepillado de dientesHKCategoryTypeIdentifierToothbrushingEvent—Otras apps y dispositivos
Número de caídasHKQuantityTypeIdentifierNumberOfTimesFallencountApple Watch
Seguimiento del ciclo (menstruación, etc.)HKCategoryTypeIdentifierMenstrualFlow
…
—Introducción manual, Otras apps y dispositivos
Síntomas (dolor de cabeza, fiebre, tos, etc.)HKCategoryTypeIdentifierHeadache
HKCategoryTypeIdentifierFever
HKCategoryTypeIdentifierCoughing
…
—Introducción manual
Índice UVHKQuantityTypeIdentifierUVExposurecountOtras 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

  1. Abre la app Salud en el iPhone y toca el icono de tu perfil, arriba a la derecha.
  2. 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.
  3. Cuando aparezca el menú para compartir, envía el archivo al Mac con AirDrop, o guárdalo en Archivos y pásalo al Mac.
  4. 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 Parser
  • export_cda.xml: Registros en el formato HL7 CDA, un estándar para documentos clínicos
  • electrocardiograms: 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.

Elige export.xml en la carpeta descomprimida
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.

El periodo, el número de registros y el recuento de cada tipo de dato
El periodo, el número de registros y el recuento de cada tipo de dato

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.

Elige el periodo y los tipos de datos que quieres exportar
Elige el periodo y los tipos de datos que quieres exportar

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:

ColumnaContenido
typeEl tipo de dato (los identificadores de las tablas anteriores)
unitUnidad
valueEl valor. En el sueño y otros datos de categoría, un texto
start, endInicio y fin del registro, hasta el minuto, con el formato de los ajustes de «Idioma y región» del Mac
start_UT, end_UTInicio y fin del registro en tiempo Unix (segundos)
creation, creation_UTCuándo se guardó el registro en HealthKit, y lo mismo en tiempo Unix
deviceEl dispositivo que lo registró (modelo, versión del software)
source name, source versionLa app o el dispositivo que lo registró, y su versión

Este es un ejemplo de frecuencia cardiaca en reposo exportada (solo algunas columnas):

typeunitvaluestart_UTend_UT
HKQuantityTypeIdentifierRestingHeartRatecount/min631791559483.01791640198.0
HKQuantityTypeIdentifierRestingHeartRatecount/min631791645830.01791714436.0
HKQuantityTypeIdentifierRestingHeartRatecount/min581791737624.01791765440.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 start llegan 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 name o device.
  • 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 unit antes de calcular.
  • Datos de categoría: una fila por intervalo: En el sueño, la columna value contiene HKCategoryValueSleepAnalysisAsleepCore (esencial), …AsleepDeep (profundo), …AsleepREM (REM), …Awake (despierto), etc., y cada fila es un intervalo. Su duración es end_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.

→ Más información sobre HealthKit Parser

→ Ver en el Mac App Store

Más sobre HealthKit Parser