769★strava – OpenClaw Skill
strava is an OpenClaw Skills integration for coding workflows. Load and analyze Strava activities, stats, and workouts using the Strava API
Skill Snapshot
| name | strava |
| description | Load and analyze Strava activities, stats, and workouts using the Strava API OpenClaw Skills integration. |
| owner | bohdanpodvirnyi |
| repository | bohdanpodvirnyi/strava |
| language | Markdown |
| license | MIT |
| topics | |
| security | L1 |
| install | openclaw add @bohdanpodvirnyi/strava |
| last updated | Feb 7, 2026 |
Maintainer

name: strava description: Load and analyze Strava activities, stats, and workouts using the Strava API homepage: https://developers.strava.com/ metadata: {"clawdbot":{"emoji":"🏃","requires":{"bins":["curl"],"env":["STRAVA_ACCESS_TOKEN"]},"primaryEnv":"STRAVA_ACCESS_TOKEN"}}
Strava Skill
Interact with Strava to load activities, analyze workouts, and track fitness data.
Setup
1. Create a Strava API Application
- Go to https://www.strava.com/settings/api
- Create an app (use
http://localhostas callback for testing) - Note your Client ID and Client Secret
2. Get Initial OAuth Tokens
Visit this URL in your browser (replace CLIENT_ID):
https://www.strava.com/oauth/authorize?client_id=CLIENT_ID&response_type=code&redirect_uri=http://localhost&approval_prompt=force&scope=activity:read_all
After authorizing, you'll be redirected to http://localhost/?code=AUTHORIZATION_CODE
Exchange the code for tokens:
curl -X POST https://www.strava.com/oauth/token \
-d client_id=YOUR_CLIENT_ID \
-d client_secret=YOUR_CLIENT_SECRET \
-d code=AUTHORIZATION_CODE \
-d grant_type=authorization_code
This returns access_token and refresh_token.
3. Configure Credentials
Add to ~/.clawdbot/clawdbot.json:
{
"skills": {
"entries": {
"strava": {
"enabled": true,
"env": {
"STRAVA_ACCESS_TOKEN": "your-access-token",
"STRAVA_REFRESH_TOKEN": "your-refresh-token",
"STRAVA_CLIENT_ID": "your-client-id",
"STRAVA_CLIENT_SECRET": "your-client-secret"
}
}
}
}
}
Or use environment variables:
export STRAVA_ACCESS_TOKEN="your-access-token"
export STRAVA_REFRESH_TOKEN="your-refresh-token"
export STRAVA_CLIENT_ID="your-client-id"
export STRAVA_CLIENT_SECRET="your-client-secret"
Usage
List Recent Activities
Get the last 30 activities:
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?per_page=30"
Get the last 10 activities:
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?per_page=10"
Filter Activities by Date
Get activities after a specific date (Unix timestamp):
# Activities after Jan 1, 2024
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?after=1704067200"
Get activities in a date range:
# Activities between Jan 1 - Jan 31, 2024
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?after=1704067200&before=1706745600"
Get Activity Details
Get full details for a specific activity (replace ACTIVITY_ID):
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/activities/ACTIVITY_ID"
Get Athlete Profile
Get the authenticated athlete's profile:
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete"
Get Athlete Stats
Get athlete statistics (replace ATHLETE_ID):
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athletes/ATHLETE_ID/stats"
Pagination
Navigate through pages:
# Page 1 (default)
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?page=1&per_page=30"
# Page 2
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?page=2&per_page=30"
Token Refresh
Access tokens expire every 6 hours. Refresh using the helper script:
bash {baseDir}/scripts/refresh_token.sh
Or manually:
curl -s -X POST https://www.strava.com/oauth/token \
-d client_id="${STRAVA_CLIENT_ID}" \
-d client_secret="${STRAVA_CLIENT_SECRET}" \
-d grant_type=refresh_token \
-d refresh_token="${STRAVA_REFRESH_TOKEN}"
The response includes a new access_token and refresh_token. Update your configuration with both tokens.
Common Data Fields
Activity objects include:
name— Activity titledistance— Distance in metersmoving_time— Moving time in secondselapsed_time— Total time in secondstotal_elevation_gain— Elevation gain in meterstype— Activity type (Run, Ride, Swim, etc.)sport_type— Specific sport typestart_date— Start time (ISO 8601)average_speed— Average speed in m/smax_speed— Max speed in m/saverage_heartrate— Average heart rate (if available)max_heartrate— Max heart rate (if available)kudos_count— Number of kudos received
Rate Limits
- 200 requests per 15 minutes
- 2,000 requests per day
If you hit rate limits, responses will include X-RateLimit-* headers.
Tips
- Convert Unix timestamps:
date -d @TIMESTAMP(Linux) ordate -r TIMESTAMP(macOS) - Convert meters to km: divide by 1000
- Convert meters to miles: divide by 1609.34
- Convert m/s to km/h: multiply by 3.6
- Convert m/s to mph: multiply by 2.237
- Convert seconds to hours: divide by 3600
- Parse JSON with
jqif available, or usegrep/sedfor basic extraction
Examples
Get running activities from last week with distances:
LAST_WEEK=$(date -d '7 days ago' +%s 2>/dev/null || date -v-7d +%s)
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?after=${LAST_WEEK}&per_page=50" \
| grep -E '"name"|"distance"|"type"'
Get total distance from recent activities:
curl -s -H "Authorization: Bearer ${STRAVA_ACCESS_TOKEN}" \
"https://www.strava.com/api/v3/athlete/activities?per_page=10" \
| grep -o '"distance":[0-9.]*' | cut -d: -f2 | awk '{sum+=$1} END {print sum/1000 " km"}'
Error Handling
If you get a 401 Unauthorized error, your access token has expired. Run the token refresh command.
If you get rate limit errors, wait until the limit window resets (check X-RateLimit-Usage header).
Strava Skill for Clawdbot
🏃 Load and analyze your Strava activities, stats, and workouts using the Strava API.
Features
- ✅ List recent activities with pagination
- ✅ Filter activities by date ranges
- ✅ Get detailed activity stats (distance, pace, heart rate, elevation)
- ✅ Access athlete profile and cumulative statistics
- ✅ Auto token refresh helper script
- ✅ Rate limit aware (200/15min, 2000/day)
- ✅ Works with curl only (no additional dependencies)
Quick Start
1. Create Strava API Application
Visit https://www.strava.com/settings/api and create an app.
2. Get OAuth Tokens
Follow the setup instructions in SKILL.md to obtain your access token and refresh token.
3. Configure
Add to ~/.clawdbot/clawdbot.json:
{
"skills": {
"entries": {
"strava": {
"enabled": true,
"env": {
"STRAVA_ACCESS_TOKEN": "your-access-token",
"STRAVA_REFRESH_TOKEN": "your-refresh-token",
"STRAVA_CLIENT_ID": "your-client-id",
"STRAVA_CLIENT_SECRET": "your-client-secret"
}
}
}
}
}
Usage Examples
Ask your agent:
- "Show me my last 10 Strava activities"
- "What activities did I do last week?"
- "Get details for my most recent run"
- "What's my total distance this month?"
- "Show my Strava profile and stats"
What You Can Do
- List Activities: Recent workouts with customizable page size
- Filter by Date: Query specific date ranges using Unix timestamps
- Activity Details: Full metrics including pace, heart rate, elevation
- Athlete Stats: Profile info and cumulative statistics
- Token Management: Auto-refresh expired tokens (expire every 6 hours)
API Coverage
GET /athlete/activities- List activitiesGET /activities/{id}- Activity detailsGET /athlete- Athlete profileGET /athletes/{id}/stats- Athlete statisticsPOST /oauth/token- Token refresh
Documentation
See SKILL.md for complete setup instructions, API reference, and advanced usage.
Requirements
curl(bundled with macOS/Linux)- Strava API application credentials
- OAuth access token
Links
- Strava Developers: https://developers.strava.com/
- API Docs: https://developers.strava.com/docs/reference/
- Create App: https://www.strava.com/settings/api
License
MIT
Author
Created for Clawdbot AI Assistant
🦞 Part of the Clawdbot skill ecosystem
Permissions & Security
Security level L1: Low-risk skills with minimal permissions. Review inputs and outputs before running in production.
Requirements
- OpenClaw CLI installed and configured.
- Language: Markdown
- License: MIT
- Topics:
FAQ
How do I install strava?
Run openclaw add @bohdanpodvirnyi/strava in your terminal. This installs strava into your OpenClaw Skills catalog.
Does this skill run locally or in the cloud?
OpenClaw Skills execute locally by default. Review the SKILL.md and permissions before running any skill.
Where can I verify the source code?
The source repository is available at https://github.com/openclaw/skills/tree/main/skills/bohdanpodvirnyi/strava. Review commits and README documentation before installing.
