cancel
Showing results for 
Search instead for 
Did you mean: 

Python - Trying to get all stats using API - URL showing an error

mikeparsons84
Mt. Kenya

Wondering if someone could help - I'm trying to obtain totals for an athlete.  I have managed to get all activities, but would also like totals.

This is the following code I am using:

stats_url = f"https://www.strava.com/api/v3/athletes/{client_id}/stats?" \
            f"access_token={access_token}"

statsresponse = requests.get(stats_url)
stats = statsresponse.json()
print('Stats API:', stats_url)
ride_total_year_calculated = round(stats['ytd_ride_totals']['distance']/1000,1 )

 

When copy and pasting the URL I get the following response:

 

{"message":"Forbidden","errors":[]}


 I'm obviously doing something really stupid here, but can't see it right now!

 

For further info, the following works:

activities_url = f"https://www.strava.com/api/v3/athlete/activities?" \
          f"access_token={access_token}"

print('RESTful API:', activities_url)
response = requests.get(activities_url, params=params)

print(len(response.json()))

for i in range(0,len(response.json())):  
activity = response.json()[i]
print('Disance:', activity['distance'], 'm')
print('Date:', activity['start_date'])
print('type:', activity['type'])

 

1 ACCEPTED SOLUTION

ActivityFix
Elbrus
stats_url = f"https://www.strava.com/api/v3/athletes/{client_id}/stats?" \
            f"access_token={access_token}"

Did you mean to insert client_id there? That should be athlete_id

See: https://developers.strava.com/docs/reference/#api-Athletes-getStats

GET /athletes/{id}/stats

Parameters

id
required Long, in path
The identifier of the athlete. Must match the authenticated athlete.

 

View solution in original post

3 REPLIES 3

mikeparsons84
Mt. Kenya

That's a good point - however that is set to my athlete ID.  The URL looks like this (with x's as actual athlete id):

 

https://www.strava.com/api/v3/athletes/xxxxxx/stats?access_token=2ac758f65d08641b17791d6c69ed1a70840...

ActivityFix
Elbrus
stats_url = f"https://www.strava.com/api/v3/athletes/{client_id}/stats?" \
            f"access_token={access_token}"

Did you mean to insert client_id there? That should be athlete_id

See: https://developers.strava.com/docs/reference/#api-Athletes-getStats

GET /athletes/{id}/stats

Parameters

id
required Long, in path
The identifier of the athlete. Must match the authenticated athlete.

 

You’re absolutely right, thank you so much