Skip to content

For sports scientists, coaches and analysts

Ask a season of training a question.

An athlete's activities, best efforts, lab tests and daily measures, one request each, ready for analysis. Use the Python SDK, or read the Parquet in the tools you already use. Start with your own data, then add the athletes who share theirs with you.

from datetime import date, timedelta

import sweatstack

sweatstack.authenticate()

# Your best power at every duration this past year:
# fresh, and after 1,000 and 2,000 kJ of work
curves = sweatstack.activities.longitudinal.mean_max(
    sport="cycling",
    metric="power",
    start=date.today() - timedelta(weeks=52),
    after=[0, 1000, 2000],
    output="pandas",
)

One request, no pipeline. The result is a DataFrame with one row per duration and fatigue state, and the activity that set each best effort.


What you can ask

  • A season of samples


    Every sample of every activity in a date range, for the metrics you choose, in one DataFrame. Resample by week, compare sports, find the sessions that matter.

    Longitudinal data

  • Best efforts, fresh and tired


    The best power or speed at every duration, across a season or within one activity. Add fatigue states to see the curve after 1,000 or 2,000 kJ of work.

    Mean-max

  • Time at or above any intensity


    Accumulated work duration: for every intensity, how long the athlete was at least that hard. A record of demonstrated capacity, without zone boundaries. In beta.

    Accumulated work duration

  • Thresholds and zones


    FatMax, thresholds, critical power and VO2max, from the athlete's history or from a lab test, each labeled with where it came from. Zones are cut from them. In beta, in the API.

    Metabolic profile

  • Lab and field together


    Lactate and VO2max tests, and single lactate or RPE readings. SweatStack links each reading to the activity it was taken in.

    Tests · Traces

  • Daily measures


    Body mass, resting heart rate, HRV and sleep, one value per day, next to the training that came before it.

    Dailies

A cyclist's best power at every duration from 1 second to 4 hours, with an intensity-duration model fitted to it
An athlete's best power at every duration, and an intensity-duration model fitted to it.

Whose data

Your own. Sign in, connect the accounts you record with, or upload your FIT files. Everything above works on your own history from the first day.

Athletes who share with you. An athlete shares their data with you from their SweatStack account, and can stop sharing at any time. In Python, you act for each of them with a delegated client:

from datetime import date, timedelta

from sweatstack import Client

coach = Client()
me = coach.whoami()

seasons = {}
for athlete in coach.users.list():
    if athlete.id == me.id:
        continue
    seasons[athlete.display_name] = coach.delegated_client(athlete).activities.longitudinal.data(
        sport=["running"],
        start=date.today() - timedelta(weeks=26),
        metrics=["speed", "heart_rate"],
    )

A team's roster. Athletes authorize the team once, and the whole staff works from the same consent. See SweatStack for Teams.

How sharing works →

Where you work

  • A script or a notebook


    The Python SDK returns pandas, Polars or Arrow, and caches responses on disk while you iterate. One uv run and a script is running.

    Analyze activity data

  • The browser


    SweatStack Console is a Python prompt in your browser, already signed in, with plotting. Nothing to install.

    SweatStack Console

  • An app for others


    When an analysis is worth sharing, turn it into a Streamlit app that your athletes or staff sign in to.

    Streamlit app

  • With your AI assistant


    Install the SweatStack skills, and Claude Code, Cursor or Codex writes analysis code against the real SDK.

    AI coding

Built on open tools

The parts of sports analysis that every team rebuilds should be shared. Our FIT parser, a scikit-learn compatible library for intensity-duration modeling, the sport taxonomy and a corpus of broken FIT files are open source, and none of them needs a SweatStack account. Open source at SweatStack →

Planning a study?

Email us before you plan around SweatStack. We'll tell you what it does for a study today, and what it doesn't yet. [email protected]

Ask your first question today

Accounts are free. Sign in, connect your data, and run the first query in a few minutes.