Search API Connector Documentation

Print

Import Strava Data to Google Sheets

premium

In this guide, we’ll walk through how to pull Strava data data directly into Google Sheets, using the API Connector add-on for Sheets. Strava is, of course, a well-known fitness tracker website and app.

Contents

Before You Begin

Click here to install the API Connector add-on from the Google Marketplace.

Part 1: Connect to the Strava API

The easiest way to get started with the Strava API is through API Connector’s built-in integration.

  1. Select Strava from the drop-down list of applications
    strava-application
  2. Under Authorization, click Connect to Strava
    strava-authorization
  3. You will be directed to strava.com and asked to sign in, if you haven’t already. You’ll also be asked to authorize the connection.
    strava-img7
  4. You’ll then be returned to your Google Sheet, and can verify that your Strava connection is active.

Part 2: Fetch Data from Strava

Now that we’re connected, let’s pull some data into Sheets.

  1. Under Endpoint, choose /athlete to get data about yourself.
    strava-endpoints
  2. Select a destination sheet, name your request, and click Run.
    strava-response

Part 3: Create a Custom API Request

Alternatively, you can create a custom request instead of using API Connector’s built-in integration. When you create a custom request, you add your complete URL into the request URL field, and choose Strava from the OAuth menu.strava-response

Part 4: More Example API URLs

Here are some more examples of custom API URLs. Check the documentation for the full set of available requests, or check out this user-made video from Scott:

  • Get your own starred segments
    https://www.strava.com/api/v3/segments/starred
  • Get a public list of running races
    https://www.strava.com/api/v3/running_races
  • Get your own activities
    https://www.strava.com/api/v3/athlete/activities

Part 5: Handle Pagination

Note Strava’s limits on the number of records returned on a response. By default, only 30 records will be returned unless you use pagination handling as described in their documentation.
strava-img8

This means that to get 200 records, you’d use the ‘per_page’ parameter, and to return more than 200 you’d then make subsequent requests using the ‘page’ parameter.

With API Connector you can loop through these automatically with pagination handling, like this:

  • Pagination typepage parameter
  • Page parameterpage
  • Run untilchoose when to stop fetching data
    pagination-page-parameter

Part 6: API Documentation

To see more API endpoints and example responses, I suggest checking out out the Strava API playground located at https://developers.strava.com/playground/.

Previous Import Spotify Data to Google Sheets
Next Import Stripe Data to Google Sheets

22 thoughts on “Import Strava Data to Google Sheets”

  1. Hi, I tried using this with the endpoint https://www.strava.com/api/v3/athlete/activities but it only returned 30 activities. The cutoff point seemed random, it only went back to May 2020.

    Is this a problem with Strava’s OAuth? Should this API connection work in 2021 still?

    Thanks

    Reply
    • By default Strava only sends 30 records at a time. To get more, you can add ?per_page=200 to the end of your URL. If you have more than 200 records, you would paginate through using “page parameter” pagination.

      Reply
  2. Hi Anna,
    Do you think it’s possible to get activity date from strava. I don’t see it in Strava API documentation.

    Or can we get data using API Connector, by filtering “Today Activities” Only (based on date range) ?

    Reply
    • Hey Rudy, when you run the https://www.strava.com/api/v3/athlete/activities request, it returns a “start_date” field, is that what you’re looking for?

      Reply
      • Gotcha. Based on what I see in their API docs, they only return the following for the /clubs/{id}/activities endpoint:
        [
        {
        "resource_state": 2,
        "athlete": {
        "resource_state": 2,
        "firstname": "Peter",
        "lastname": "S."
        },
        "name": "World Championship",
        "distance": 2641.7,
        "moving_time": 577,
        "elapsed_time": 635,
        "total_elevation_gain": 8.8,
        "type": "Ride",
        "workout_type": null
        }
        ]

        There’s no date in there so it doesn’t look like this is available. I checked and found quite a few people complaining about this (e.g. here, here, here). Sorry about that.

    • That is, I can run: https://www.strava.com/api/v3/athlete/activities/{id]/streams, but I can’t make it return anytthing but distance.

      Reply
      • I’m trying to make a heart rate based measure of training load. Currently I use the open software Golden Cheetah to do this and copy-paste the values over to Google Sheets.

      • I see. Their docs are pretty unclear on this point, and I don’t have my own data to test with, but could you please try this?
        https://www.strava.com/api/v3/activities/{id}/streams?keys=distance,latlng,velocity_smooth,altitude,heartrate&key_by_type=true

        Let me know if that gets you back what you’re looking for.

  3. is there a means to use values from the sheet as parameters on the api. For example, the strava gear api requires the gearid which can be gotten from activities. I would like to pass the gearid to the api in a loop to get all the gear records.

    Reply
  4. Hello! Thank you for the article! Could you please advise how or where can I get the Club’s id? I would like to export recent activities of club members but for API
    /clubs/{id}/activities

    Thanks in advance.

    Reply
  5. Hi

    I love API connector and have imported all my Strava activities into Google Sheets.

    While analyzing them I initially couldn’t find most of the activities I did abroad (outside the Netherlands for me). Looking closer they are there but almost all of them are listed with location_country=Netherlands, although in some cases the time zone indicates Switzerland or France. In the Strava web interface these activities are located in the correct countries.

    When I search the Strava API documentation (https://developers.strava.com/docs/reference/) location_country is not really explained.

    I would like to be able to filter for foreign activities. How can I get the correct data?

    Cheers,
    Marnix

    Reply
    • I’m not really familiar with this but after checking online, this seems to be a bug in the Strava API.
      I see a few people mentioning it, e.g. here and here
      So unfortunately it looks like you will have to use the web interface for this 🙁

      Reply
      • I think you have the following options:
        1) https://www.strava.com/api/v3/athletes/{id}/stats. This will show you your YTD totals, but only for activities set to Everyone.
        2) https://www.strava.com/api/v3/athlete/activities. This will show all your data, split out for each activity date, so you’ll need to aggregate it yourself.

Leave a Comment

Table of Contents