Skip to content

fitops activities

Browse and query synced activities.

Output is a formatted table by default. Add --json to any command for raw JSON output (useful for scripting or AI agents).

Commands

fitops activities list

List recent activities with full metrics.

bash
fitops activities list [OPTIONS]

Options:

FlagDefaultDescription
--sport TYPEallFilter by sport type (e.g. Run, Ride, Swim)
--limit N20Max number of activities to return
--offset N0Skip the first N results (use with --limit to page through results)
--after DATEFilter activities after this date (YYYY-MM-DD)
--before DATEFilter activities before this date (YYYY-MM-DD)
--search TEXTCase-insensitive substring match on activity name/title
--tag TAGFilter by tag: race, trainer, commute, manual, private
--jsonfalseOutput raw JSON instead of the formatted table

Examples:

bash
fitops activities list
fitops activities list --sport Run --limit 10
fitops activities list --after 2026-01-01
fitops activities list --after 2025-12-01 --before 2026-01-01   # date range
fitops activities list --sport Ride --limit 5 --after 2025-12-01
fitops activities list --search "Morning Run"                   # title search
fitops activities list --tag race                               # races only
fitops activities list --tag trainer                            # indoor trainer rides
fitops activities list --sport Run --json          # JSON for scripting or agents
fitops activities list --sport Run --limit 20 --offset 20       # page 2

Pagination (JSON mode):

When using --json, the _meta envelope includes pagination fields so agents can detect when more results exist:

json
{
  "_meta": {
    "total_count": 150,
    "returned_count": 20,
    "offset": 0,
    "has_more": true
  }
}

To page through all results, increment --offset by --limit until has_more is false.

Supported tag values:

TagMatches
raceActivities with Strava workout_type = 1 (race)
trainerIndoor trainer sessions
commuteCommute activities
manualManually entered activities
privatePrivate activities

See Output Examples → Activities for sample output.


fitops activities get <ID>

Get detailed info for a single activity.

bash
fitops activities get 12345678901 [--fresh]

Arguments:

ArgumentDescription
IDStrava activity ID (required)

Options:

FlagDescription
--freshRe-fetch detail from Strava API (bypasses local cache)
--jsonOutput raw JSON instead of the formatted summary

fitops activities streams <ID>

Get time-series stream data for an activity (heart rate, pace, altitude, power, cadence, etc.).

bash
fitops activities streams 12345678901 [--fresh]

Streams are fetched from Strava on first request and cached locally. Use --fresh to force a re-fetch.

Output:

Streams for activity 17972016511

  altitude              3492 data points
  heartrate             3492 data points
  cadence               3492 data points
  velocity_smooth       3492 data points
  distance              3492 data points

Use --json to get the raw data arrays for scripting or analysis.


fitops activities chart <ID>

Render a time-series stream as an ASCII chart directly in the terminal — useful for quick visual inspection and for AI agents that consume plain text.

bash
fitops activities chart 12345678901 [OPTIONS]

Arguments:

ArgumentDescription
IDStrava activity ID (required)

Options:

FlagDefaultDescription
--stream STREAMheartrateStream to plot (see table below)
--x-axis VALUEtimeX-axis type: time or distance
--from NStart of zoom window (seconds or metres)
--to NEnd of zoom window (seconds or metres)
--width NautoChart width in characters (default: terminal width)
--height N20Chart height in rows
--resolution NautoNumber of data buckets (lower = smoother curve)

Supported streams:

StreamDisplayNotes
heartrateHeart Rate (bpm)
pace / velocity_smoothPace (min/km)Y-axis inverted: faster = higher
speedSpeed (km/h)Auto-selected for cycling when velocity_smooth is requested
gapGrade Adj. Pace (min/km)Derived — requires velocity_smooth + grade_smooth streams
wapWeighted Avg Pace (min/km)Derived — 30-sample rolling mean of pace
altitudeAltitude (m)
cadenceCadence (spm)
wattsPower (W)
distanceDistance (m)

Sport-aware display: requesting pace or velocity_smooth on a cycling activity automatically switches to speed (km/h).

Examples:

bash
# Heart rate over the full run
fitops activities chart 17985851162

# Pace chart
fitops activities chart 17985851162 --stream pace

# Grade-adjusted pace (GAP) over distance
fitops activities chart 17985851162 --stream gap --x-axis distance

# Zoom into km 5–10
fitops activities chart 17985851162 --stream heartrate --x-axis distance --from 5000 --to 10000

# Smooth curve with low resolution
fitops activities chart 17985851162 --stream heartrate --resolution 30

# Tall, wide chart
fitops activities chart 17985851162 --stream altitude --width 120 --height 30

Chart anatomy:

Activity chart  |  Heart Rate (bpm)  over time (s)  [res: 71]
min: 142 bpm  avg: 163 bpm  max: 190 bpm  samples: 3492

    190|    ▪▪▪▪  ▪ ▪▪▪▪▪▪▪  ▪ ▪ ▪▪▪▪▪▪▪▪▪▪▪▪▪ ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
        |  ▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
    166|▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪▪
        | ...
    142|▪
-------+-----------------------------------------------------------------------
        0:00                             66:39                           133:17
  • — midpoint of each data bucket (primary trace)
  • · — min–max range indicator (shown only when zoomed in tightly)
  • Y-axis labels: top, mid, and bottom values
  • X-axis labels: start, midpoint, and end of the window
  • [res: N] in the title shows the active bucket count

See Output Examples → Activities for a full rendered example.


Sport Type Values

Common Strava sport types: Run, TrailRun, Ride, VirtualRide, Swim, Walk, Hike, WeightTraining, Yoga, Workout

See Also

Commands Reference

FitOps CLI — terminal-first training analytics