Strava Activities Scraper
Pricing
from $0.01 / 1,000 results
Strava Activities Scraper
Fetches all your Strava activities via the Strava API using OAuth credentials and computes per-sport statistics.
Pricing
from $0.01 / 1,000 results
Rating
0.0
(0)
Developer
Victoria Usan
Maintained by CommunityActor stats
0
Bookmarked
1
Total users
0
Monthly active users
2 days ago
Last modified
Categories
Share
Fetches all your Strava activities via the official Strava API using OAuth credentials, pushes them to a structured dataset, and computes aggregated per-sport statistics. Run it on the Apify platform for scheduled exports, API access, and integrations with 100+ tools.
What does Strava Activities Scraper do?
This Actor connects to the Strava API using your OAuth2 credentials, downloads your complete activity history (runs, rides, swims, hikes, etc.), and outputs clean, structured data. It also computes per-sport statistics including total distance, time, elevation, and averages.
Unlike browser-based scrapers, this Actor uses the official Strava REST API — making it fast, reliable, and respectful of Strava's infrastructure.
Why use Strava Activities Scraper?
- Full activity export — fetch your entire Strava history in one run
- Structured data — clean JSON output ready for analysis, dashboards, or integrations
- Per-sport statistics — automatic aggregation by activity type
- Scheduled runs — set up daily/weekly exports on Apify to track progress over time
- API access — query your latest results via the Apify API from any app
- Multiple formats — download as JSON, CSV, Excel, or HTML
How to use Strava Activities Scraper
- Create a Strava API application at strava.com/settings/api. Note your Client ID and Client Secret.
- Obtain a refresh token — run the included helper script locally:
This opens your browser for OAuth authorization and prints the credentials you need.$npx tsx src/get-token.ts - Configure the Actor in the Input tab with your Client ID, Client Secret, and Refresh Token.
- Run the Actor — it will fetch all activities and push them to the dataset.
- Download results from the Output tab in JSON, CSV, or Excel format.
Input
| Field | Type | Required | Description |
|---|---|---|---|
clientId | string | Yes | Your Strava API application client ID |
clientSecret | string | Yes | Your Strava API application client secret |
refreshToken | string | Yes | OAuth2 refresh token with activity:read_all scope |
maxActivities | integer | No | Max activities to fetch (0 = all, default: 0) |
Output
Each activity is stored as a dataset item:
{"id": 12345678901,"name": "Morning Run","type": "Run","date": "2026-06-12T07:30:00Z","distanceKm": 8.42,"movingTimeMin": 42.5,"elevationGainM": 125,"avgSpeedKph": 11.9,"avgHeartrate": 152}
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
Additionally, aggregated statistics are saved to the key-value store under the statistics key:
{"totalActivities": 342,"byType": {"Run": {"count": 180,"totalDistanceKm": 1520.4,"totalMovingTimeHours": 142.3,"totalElevationGainM": 18500,"avgDistanceKm": 8.45,"avgMovingTimeMin": 47.4,"avgElevationGainM": 103}}}
Data fields
| Field | Format | Description |
|---|---|---|
id | number | Strava activity ID |
name | text | Activity title |
type | text | Sport type (Run, Ride, Swim, Hike, etc.) |
date | date | Activity start time (local timezone) |
distanceKm | number | Distance in kilometers |
movingTimeMin | number | Moving time in minutes |
elevationGainM | number | Total elevation gain in meters |
avgSpeedKph | number | Average speed in km/h |
avgHeartrate | number | Average heart rate (if sensor used) |
Cost estimation
This Actor uses only HTTP API calls (no browser), so it's very lightweight:
- ~1 compute unit per run fetching up to 1,000 activities
- ~0.005 USD for a typical run of a few hundred activities
- Runs complete in seconds, not minutes
The Apify Free plan includes enough compute units for regular scheduled runs.
Tips
- Set
maxActivitiesto a small number (e.g., 10) for your first test run - Schedule weekly runs to keep an up-to-date export of your training data
- Use the Apify API to integrate your activity data into custom dashboards or spreadsheets
- The refresh token doesn't expire as long as it's used periodically — scheduled runs keep it alive
FAQ and support
Is this legal? Yes — this Actor uses Strava's official public API with your own OAuth credentials. It only accesses data you've explicitly authorized.
What scopes are needed?
The refresh token needs the activity:read_all scope to access all your activities including private ones. Use read scope if you only want public activities.
My token stopped working
If you haven't used the refresh token in 6+ months, it may have been revoked. Run the get-token.ts helper again to generate a new one.
Found a bug? Open an issue in the Issues tab or contact the author for custom solutions.