Strava

Overview

The Strava source can sync data from the Strava API
Useful links:

Output schema

This Source is capable of syncing the following Streams:

Features

Feature
Supported?
Full Refresh Sync
Yes
Incremental - Append Sync
Yes
Namespaces
No

Requirements

  • client_id - Strava account client ID
  • client_secret - Strava account client secret
  • refresh_token - Strava account refresh token
  • athlete_id - Strava athlete ID (only used for Athlete Stats)
  • query_start_timestamp - Starting timestamp for listing activities (only used for Activities)

Setup guide

Follow these steps to get the required credentials and inputs:
  • client_id and client_secret
    • Continue to follow the instructions from the doc above to obtain client_id and client_secret
  • refresh_token
    • Enter this URL into your browser (make sure to add your client_id from previous step:
      • http://www.strava.com/oauth/authorize?client_id=[REPLACE_WITH_YOUR_CLIENT_ID]&response_type=code&redirect_uri=http://localhost/exchange_token&approval_prompt=force&scope=activity:read_all
    • Authorize through the UI
    • Browser will redirect you to an empty page with a URL similar to http://localhost/exchange_token?state=&code=b55003496d87a9f0b694ca1680cd5690d27d9d28&scope=activity:read_all
    • Copy the authorization code above (in this example it would be b55003496d87a9f0b694ca1680cd5690d27d9d28)
    • Make a cURL request to exchange the authorization code and scope for a refresh token:
    • 1
      curl -X POST https://www.strava.com/oauth/token \
      2
      -F client_id=YOUR_CLIENT_ID \
      3
      -F client_secret=YOUR_CLIENT_SECRET \
      4
      -F code=AUTHORIZATION_CODE \
      5
      -F grant_type=authorization_code
      Copied!
    • The resulting json will contain the refresh_token
    • Example Result:
    • 1
      {
      2
      "token_type": "Bearer",
      3
      "expires_at": 1562908002,
      4
      "expires_in": 21600,
      5
      "refresh_token": "REFRESHTOKEN",
      6
      "access_token": "ACCESSTOKEN",
      7
      "athlete": {
      8
      "id": 123456,
      9
      "username": "MeowTheCat",
      10
      "resource_state": 2,
      11
      "firstname": "Meow",
      12
      "lastname": "TheCat",
      13
      "city": "",
      14
      "state": "",
      15
      "country": null,
      16
      ...
      17
      }
      18
      }
      Copied!
    • Refer to Strava's Getting Started - Oauth or Authentication documents for more information
  • athlete_id
    • Go to your athlete page by clicking your name on the Strava dashboard or click on "My Profile" on the drop down after hovering on your top bar icon
    • The number at the end of the url will be your athlete_id. For example 17831421 would be the athlete_id for https://www.strava.com/athletes/17831421

Performance considerations

Strava API has limitations to 100 requests every 15 minutes, 1000 daily. More information about Strava rate limits and adjustments to those limits can be found here.

Changelog

Version
Date
Pull Request
Subject
0.1.0
2021-10-18
7151
Initial release supporting Strava API
Last modified 29d ago