Strava Activities Scraper avatar

Strava Activities Scraper

Pricing

from $0.01 / 1,000 results

Go to Apify Store
Strava Activities Scraper

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

Victoria Usan

Maintained by Community

Actor stats

0

Bookmarked

1

Total users

0

Monthly active users

2 days ago

Last modified

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

  1. Create a Strava API application at strava.com/settings/api. Note your Client ID and Client Secret.
  2. Obtain a refresh token — run the included helper script locally:
    $npx tsx src/get-token.ts
    This opens your browser for OAuth authorization and prints the credentials you need.
  3. Configure the Actor in the Input tab with your Client ID, Client Secret, and Refresh Token.
  4. Run the Actor — it will fetch all activities and push them to the dataset.
  5. Download results from the Output tab in JSON, CSV, or Excel format.

Input

FieldTypeRequiredDescription
clientIdstringYesYour Strava API application client ID
clientSecretstringYesYour Strava API application client secret
refreshTokenstringYesOAuth2 refresh token with activity:read_all scope
maxActivitiesintegerNoMax 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

FieldFormatDescription
idnumberStrava activity ID
nametextActivity title
typetextSport type (Run, Ride, Swim, Hike, etc.)
datedateActivity start time (local timezone)
distanceKmnumberDistance in kilometers
movingTimeMinnumberMoving time in minutes
elevationGainMnumberTotal elevation gain in meters
avgSpeedKphnumberAverage speed in km/h
avgHeartratenumberAverage 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 maxActivities to 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.