WHOOP: Research Guide - ONTO NOTHING
// Research guide · 2025

WHOOP like
data source

A complete guide for researchers - from understanding the architecture to a working pipeline

Device without screen. Closed data platform. One of the most accurate wearable trackers for HRV and sleep. Here's everything you need to know before you start working with physiological data.

Recovery
Strain
Sleep
0 % HR accuracy (AIS, 2022)
0 % HRV accuracy at night
0 ways to get data
// 01 · Architecture

Not a tracker.
Data platform.

WHOOP is a wearable, screenless biometric tracker designed exclusively for continuous physiological monitoring.. Unlike smartwatches, it doesn't have notifications, pedometer or display. The device does one thing, but it does it better than most of its competitors: it measures three key metrics 24 hours a day, 7 days a week.

For the researcher, a key understanding: the sensor collects raw PPG signals, temperature, accelerometry - but sends out already processed aggregates. Raw data not available. This is not a bug - it is a fundamental architectural decision of the platform.

Sensor
PPG Skin temperature Accelerometer
🔒 Backend Algorithms
Proprietary algorithm
Closed processing logic - raw data is not transmitted
you get
HRV (RMSSD) Recovery Score Sleep Stages Strain Score
Recovery

HRV (RMSSD), resting heart rate, SpO₂, skin temperature. Calculated in the morning after sleep.

Strain

Logarithmic scale 0–21. Physical and mental stress during the biological cycle. Not additive.

Sleep

Sleep stages, latency, efficiency, disturbances. The basic unit is the biological cycle, not the day.

Beat-to-beat intervals (RR), raw PPG signals and accelerometer data exist at the sensor level, but the platform does not provide them either through the API or through export.

// 02 · History

From a Harvard startup
to NASA instrument

2012
Base

Will Ahmed, Harvard student. Idea from personal frustration: I trained hard, but didn’t understand if my body was recovering. Standard trackers counted steps—he was interested in physiology.

2014–2015
First partnerships

Testing with professional athletes. Start of cooperation with NBA, NFL, NCAA teams. The main idea: not “how much have you done,” but “how ready are you.”

2016
WHOOP 2.0

First mass version. The Strain algorithm appears - a logarithmic scale that takes into account not only training, but also background stress.

2018
WHOOP 3.0 + subscription

Transition to a subscription model. WHOOP becomes the standard in professional sports. NBA, NHL, UFC.

2020–2021
COVID research

WHOOP releases data: Changes in HRV and respiratory rate recorded 2-3 days before COVID symptoms appear. Medical researchers are starting to work with the platform.

2021
WHOOP 4.0 · $3.6B

SpO₂, skin temperature, stress detector. The company's valuation reaches $3.6 billion. Investors: Tiger Global, SoftBank.

2024–2025
WHOOP 5.0 MG

ECG, blood pressure monitoring, biological age. Official entry into the medical segment.

// 03 · Scientific validation

Where is WHOOP used?
researchers

🏋️
Sports Science

Australian Institute of Sport (AIS) validated HR 99.7% and HRV 99% accurate compared to ECG standard. NBA, NFL, NHL, FIFA teams use WHOOP to manage workloads.

🎖️
Military medicine

USSOCOM tested WHOOP to monitor special forces combat readiness. The task is to determine the moment when the operative is not physically ready to perform the task.

🚀
NASA

The agency was studying applications for monitoring astronauts.. Continuous monitoring of HRV as a marker of adaptive stress in microgravity conditions.

🎓
University laboratories

JMIR (2024), Schyvens et al. (2025), Dial et al. (2025). Dozens of publications on biomarkers of recovery, COVID detection, monitoring of NCAA student-athletes.

🦠
COVID research

Changes in HRV and respiratory rate are recorded 2–3 days before symptoms. The first wearable tracker with verified early detection of viral infection.

🏢
Corporate wellbeing

Goldman Sachs, McKinsey - programs for top management. Aggregated data to analyze stress and burnout levels in teams.

// 04 · Accuracy

What science says.
Honestly.

WHOOP accuracy varies depending on metric. It is important for a researcher to understand where data is reliable and where it is not.

Metrics Accuracy Source Status
Pulse (rest/sleep)99.7%AIS, 2022✓ Reliable
HRV RMSSD (night)99%AIS, 2022✓ Reliable
Total sleep time−1.4 min offsetJMIR, 2024✓ Reliable
Deep sleep−9.3 min, feelings. 69.6%Schyvens, 2025~Acceptable
REM sleep+21.0 min revaluationJMIR, 2024⚠ Be careful
Awakeningsspecificity 51%Schyvens, 2025✗ Weak point
HR in traininglag up to 50 beats/minCommunity✗ Unreliable
Comparison of HRV accuracy across trackers (Dial et al., 2025)
Oura Gen 4
CCC 0.99
Oura Gen 3
CCC 0.97
WHOOP 4.0
CCC 0.94
Garmin Fenix 6
CCC 0.87
Polar Grit X Pro
CCC 0.82
// IMPORTANT

WHOOP measures HRV only during the deep sleep window - not continuously. Recovery Score and Strain are proprietary algorithms without open validation. For rigorous studies, work with raw metrics (HRV, RHR, sleep stages) rather than composite scores.

// 05 · Data architecture

What's inside.
Complete field map.

Before you start exporting, it is important to understand what exactly you will receive and in what structure.

Recovery - morning calculation
hrv_rmssd_milliHRV in milliseconds Use this, not score
resting_heart_rateResting heart rate (bpm)
recovery_score0–100 · ⚠ Proprietary algorithm
spo2_percentageOxygen saturation (%)
skin_temp_celsiusTemperature delta from baseline
Sleep
total_in_bed_timeTotal time in bed (min)
total_sleep_timeReal sleep time (min)
sleep_efficiencyEfficiency (%)
slow_wave_sleepDeep sleep (min) · offset −9.3 min
rem_sleepREM (min) revaluation +21 min
sleep_latencySleep latency (min)
disturbancesNumber of violations · low specificity
Cycle - biological cycle
strainLoad 0–21 ⚠ Logarithmic, indirect
kilojouleEnergy consumption (kJ)
average_heart_rateAverage heart rate per cycle
cycle_start / endISO 8601, UTC
Workout
sport_nameActivity type
durationDuration (sec)
avg / max_heart_rateAverage and maximum heart rate
zone_1–5_minutesMinutes in each heart rate zone
strainActivity Load (0–21)
// 06 · Data export · Method 1

Official export
via the app

★★☆☆☆ Difficulty: minimal The whole story No code Manual

The easiest way. The whole story in one request. Recommended as a first step for any researcher.

01
Application
WHOOP
02
More →
App Settings
03
Data Export or account.
whoop.com
04
Request
Export
once every 24 hours
05
Email
→ ZIP
30 min - 2 h
06
4 × CSV the whole story
physiological_cycles.csv

Main table. Each line is one biological cycle. HRV, resting heart rate, Recovery Score, Strain, calories, sleep.

MAIN · START HERE
sleeps.csv

Detailing every dream and nap. Stages in minutes, efficiency, violations, latency.

DREAM
workouts.csv

All recorded activities. Type, heart rate zones, Strain, calories. Without Strength Trainer.

LOAD · Without power
journal_entries.csv

Diary tags: alcohol, caffeine, stress, medications. A valuable source for correlation analysis.

BEHAVIOR
# Load the main table
import pandas as pd

cycles = pd.read_csv('physiological_cycles.csv')

# Convert timestamps to UTC
cycles['cycle_start'] = pd.to_datetime(
    cycles['cycle_start'], utc=True
)

# Convert to local time zone
cycles['cycle_start'] = cycles['cycle_start'].dt.tz_convert(
    'Europe/Moscow'
)

print(cycles[['cycle_start', 'hrv_rmssd_milli',
              'resting_heart_rate', 'recovery_score']].head())
// 06 · Data export · Method 2

Whoop2CSV —
without code, automatically

★☆☆☆☆ Difficulty: minimal Up to 90 days OAuth Google Sheets

For those who need automation without programming. The service works through the official OAuth WHOOP - read-only, the password is not transmitted anywhere.

01
whoop2csv
.com
02
Connect
with WHOOP
OAuth redirect
03
Allow
access
read only
04
Choose
period
7 / 30 / 90 days
05
CSV or
Google Sheets
auto upload weekly
Advantages over app export
  • Customizable frequency
  • Direct integration with Google Sheets
  • Flexible field selection
  • No 24 hour wait
Restrictions
  • Maximum 90 days per request
  • There is no complete history as in official exports
  • Dependency on third party service
// 06 · Data export · Method 3

Official
WHOOP Developer API

★★★☆☆ Difficulty: medium OAuth 2.0 Automation Multiuser

For researchers who need automation, long-term monitoring of multiple participants, or integration into their own analytical pipeline.

01
developer
.whoop.com
For free
02
Create
application
+ Redirect URI
03
Client ID
+ Secret
04
Choose
scopes
read:recovery
read:sleep…
05
Access
Token
06
API
requests
GET/v2/recoveryRecovery Score, HRV, RHR, SpO₂, temperature
GET/v2/activity/sleepSleep stages, efficiency, disorders
GET/v2/activity/workoutWorkouts, heart rate zones, Strain
GET/v2/cyclePhysiological cycles, total load
GET/v2/user/profile/basicUser profile
import requests

access_token = "YOUR_TOKEN"

def get_all_recovery(start_date: str) -> list:
    """Get the entire Recovery history with pagination"""
    url = "https://api.prod.whoop.com/developer/v2/recovery"
    headers = {"Authorization": f"Bearer {access_token}"}
    results = []
    params = {"limit": 25, "start": start_date}

    while True:
        response = requests.get(url, headers=headers, params=params)
        data = response.json()
        results.extend(data["records"])

        # Pagination via next_token
        if not data.get("next_token"):
            break
        params["next_token"] = data["next_token"]

    return results

history = get_all_recovery("2023-01-01T00:00:00Z")
print(f"Records received: {len(history)}")

Rate limit - about 1000 requests/hour. For multi-user studies (>10 participants), please request a limit increase: support@developer.whoop.com. Addtime.sleep(1) between successive requests.

// 06 · Data export · Method 4

Python libraries:
whoopy and whoop-data

★★★☆☆ Difficulty: medium Pandas DataFrame Autopagination
install pip install whoopy
Automatically handles next_token pagination
Returns data as pandas DataFrame
Supports async mode
Token refresh out of the box
from whoopy import WhoopClient

client = WhoopClient(client_id="...", client_secret="...")

# Entire sleep history as a DataFrame
sleep_df = client.sleep.get_dataframe(
    start="2023-01-01",
    end="2025-03-01"
)

# Correlation of HRV and deep sleep
correlation = sleep_df['hrv_rmssd_milli'].corr(
    sleep_df['slow_wave_duration']
)
print(f"Correlation of HRV and deep sleep: {correlation:.3f}")
install pip install whoop-data
HR with 6 second granularity - not available in the official API
HR with granularity 1 minute
Authorization by login/password (not OAuth)

Uses reverse engineering of internal WHOOP API. Violates the Terms of Service. Subject to change without notice. Theoretically, there is a risk of account blocking. Use consciously.

from whoop_data import WhoopClient

client = WhoopClient(
    username="email@example.com",
    password="password"
)

# HR every 6 seconds per week
hr_raw = client.get_heart_rate(
    from_date="2024-01-01",
    to_date="2024-01-07",
    frequency="6"  # "6", "60" or "600"
)
// 06 · Data export · Method 5

Integration
with Apple Health

★☆☆☆☆ Difficulty: minimal iOS only Two-way sync
01
WHOOP →
Integrations
02
Apple Health
→ Connect
03
Choose
categories
Allow
04
Health →
Applications
control
permissions
From WHOOP → Apple Health
Sleep (stages, efficiency)
Resting heart rate
Average heart rate
SpO₂
Respiration rate
Workout (Strain, calories)
Recovery Score
From Apple Health → WHOOP
Activities (workouts)
Steps (limited in WHOOP 5.0)
HR from other devices
// NOTE

HRV is not transferred between platforms - different units: WHOOP uses RMSSD (ms), Apple Health uses SDNN (ms). Synchronization is not instantaneous, works in the background. To export from Apple Health to a custom format, use the application Health Auto Export.

// 06 · Data export · Method 6

Automated
self-hosted pipeline

★★★★★ Difficulty: high Multiuser Docker PostgreSQL Grafana

For long-term studies with multiple participants and the need to store data on your own infrastructure.

WHOOP API Python Scheduler PostgreSQL Grafana Dashboard App Export CSV pandas
MyWhoop
github.com/karl-cardenas-coding/mywhoop

Self-hosted server on Docker. Automatically downloads data from all connected accounts daily. Export to AWS S3, local CSV/JSON. For multi-user research.

Get-My-Whoop
github.com/zachgodsell93/Get-My-Whoop

Python application with support for PostgreSQL/SQLite, CSV/JSON/Excel, cron synchronization. For personal research database.

Recommended production stack
01Data collectionWHOOP API + whoopy
02ProcessingPython + pandas
03StoragePostgreSQL
04VisualizationGrafana
Covers most research tasks, works in real time, and scales to multiple participants.
// Final table

Which method to choose

Method Complexity Automation Story Detail Status
Official export (app) ☆☆☆☆ Manual All Aggregates ✓ Official
Whoop2CSV ☆☆☆☆ Google Sheets 90 days Aggregates ✓ Official
Official API ★★★☆☆ Yes All Aggregates ✓ Official
Python whoopy ★★★☆☆ Yes (cron) All Aggregates ✓ Official
Python whoop-data ★★★☆☆ Yes All HR 6-sec ⚠ Unofficial
Self-hosted pipeline ★★★★★ Yes (server) All Aggregates ✓ Official

For the novice researcher: start with official export through the application. In 10 minutes you will have the entire history in CSV. Further - whoopy for automation.

// 07 · Analytics

What to do next with the data

Level 1 Beginning Google Sheets / Excel

Open physiological_cycles.csv. Create three simple graphs:

  • HRV over time - recovery and stress patterns are visible
  • Dependence of Recovery Score on sleep time
  • Strain of the current day vs Recovery of the next morning
Level 2 Analyst Python + pandas

Download all four CSVs. Convert timestamps to datetime based on time zone. Create a single table using merge based on the cycle date.

  • Autocorrelation HRV
  • Anomaly detection via z-score
  • Correlation analysis of journal.csv with Recovery
Level 3 Researcher Publications

Work only with raw metrics: HRV (RMSSD), resting heart rate, sleep stages in minutes. Avoid Recovery Score and Strain as dependent variables - proprietary algorithms without open validation.

  • All timestamps are ISO UTC
  • When synchronizing with EEG, questionnaires or behavioral data, a single time zone is required
// 08 · Methodological limitations

Honest limits
WHOOP for Science

Please indicate these limitations in the methodological section of any publication using WHOOP data.

WHOOP is suitable for
  • Longitudinal monitoring in real conditions
  • Behavioral research (weeks, months)
  • Recovery patterns over long horizons
  • Cohort studies (multiple participants)
  • Coaching and Application Programs
  • Detection of COVID patterns
WHOOP is not suitable for
  • Research requiring beat-to-beat HRV
  • Accurate staging of sleep (especially REM and awakening)
  • Custom analytics of physiological signals
  • Intraday continuous HRV
  • Laboratory conditions with high precision
  • Research with high-intensity loads

For tasks requiring beat-to-beat HRV or raw signals, consider Oura Ring (more open API, CCC = 0.99) or specialized hardware (Polar H10 + Elite HRV, Zephyr BioHarness).