Sports & Fitness — entry 029 of 34

Strava

Verified Jul 2026

Strava's V3 API is the stable REST interface behind Strava's own mobile apps, giving OAuth-authorized apps access to an athlete's activities, segments, routes, and social/kudos data as JSON. It's free to build against within Strava's published per-app and per-15-minute rate limits, with no paid API tier -- monetization happens at the Strava subscription level for end users, not for developers. The old `strava.github.io/api/` static reference has been superseded by `developers.strava.com`'s Getting Started guide, API reference, and in-browser Playground, which is now the canonical developer portal; a live request confirmed the real `www.strava.com/api/v3` host requires a bearer token and echoes an open CORS policy.

fitnessgps-trackingoauthactivitiessocial-fitness
AuthenticationOAuthRequires an OAuth flow; expect app registration.
HTTPSSupportedTraffic is encrypted in transit.
CORSEnabledCallable directly from browser JavaScript.
PricingFreeNo paid tier — free for the documented use case.
FormatsJSONResponses can be requested as JSON.

GreatAPIs Score

Score77out of 100
Authentication8/25OAuth flow required
Pricing20/20Free to use
Docs20/20Machine-readable spec file bundled
Formats9/15Single response format
Freshness20/20Verified within 6 months

Embed this badge

Scored 77 on greatapis.com
<a href="https://greatapis.com/api/strava/"><img src="https://greatapis.com/badge/strava.svg" alt="Scored 77 on greatapis.com"></a>

Auth quickstart

  1. Register an app / run the OAuth flow to obtain a bearer token.
  2. Send it as an Authorization headerAuthorization: Bearer <token>
Stored keyNo key stored

Your key is stored only in this browser (localStorage) and sent directly to the API — never to greatapis.

Endpoints

Servers
https://www.strava.com/api/v3
Auth
strava_oauth
Activities8
POST/activitiesCreate an Activity
Responses
StatusDescriptionSchema
201The activity's detailed representation.DetailedActivity
defaultUnexpected error.Fault
GET/activities/{id}Get Activity
Parameters
NameInRequiredType
idpathyesinteger
include_all_effortsquerynoboolean
Responses
StatusDescriptionSchema
200The activity's detailed representation.DetailedActivity
defaultUnexpected error.Fault
PUT/activities/{id}Update Activity
Parameters
NameInRequiredType
idpathyesinteger
Request body

application/jsonUpdatableActivity

Responses
StatusDescriptionSchema
200The activity's detailed representation.DetailedActivity
defaultUnexpected error.Fault
GET/activities/{id}/commentsList Activity Comments
Parameters
NameInRequiredType
idpathyesinteger
pagequerynointeger
per_pagequerynointeger
page_sizequerynointeger
after_cursorquerynostring
Responses
StatusDescriptionSchema
200Comments.
defaultUnexpected error.Fault
GET/activities/{id}/kudosList Activity Kudoers
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200Comments.
defaultUnexpected error.Fault
GET/activities/{id}/lapsList Activity Laps
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200Activity Laps.
defaultUnexpected error.Fault
GET/activities/{id}/zonesGet Activity Zones
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200Activity Zones.
defaultUnexpected error.Fault
GET/athlete/activitiesList Athlete Activities
Parameters
NameInRequiredType
beforequerynointeger
afterquerynointeger
Responses
StatusDescriptionSchema
200The authenticated athlete's activities
defaultUnexpected error.Fault
Athletes4
GET/athleteGet Authenticated Athlete
Responses
StatusDescriptionSchema
200Profile information for the authenticated athlete.DetailedAthlete
defaultUnexpected error.Fault
PUT/athleteUpdate Athlete
Parameters
NameInRequiredType
weightpathyesnumber
Responses
StatusDescriptionSchema
200Profile information for the authenticated athlete.DetailedAthlete
defaultUnexpected error.Fault
GET/athlete/zonesGet Zones
Responses
StatusDescriptionSchema
200Heart rate and power zones.Zones
defaultUnexpected error.Fault
GET/athletes/{id}/statsGet Athlete Stats
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200Activity stats of the athlete.ActivityStats
defaultUnexpected error.Fault
Clubs5
GET/athlete/clubsList Athlete Clubs
Responses
StatusDescriptionSchema
200A list of summary club representations.
defaultUnexpected error.Fault
GET/clubs/{id}Get Club
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200The detailed representation of a club.DetailedClub
defaultUnexpected error.Fault
GET/clubs/{id}/activitiesList Club Activities
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200A list of activities.
defaultUnexpected error.Fault
GET/clubs/{id}/adminsList Club Administrators
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200A list of summary athlete representations.
defaultUnexpected error.Fault
GET/clubs/{id}/membersList Club Members
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200A list of club athlete representations.
defaultUnexpected error.Fault
Gears1
GET/gear/{id}Get Equipment
Parameters
NameInRequiredType
idpathyesstring
Responses
StatusDescriptionSchema
200A representation of the gear.DetailedGear
defaultUnexpected error.Fault
Routes4
GET/athletes/{id}/routesList Athlete Routes
Responses
StatusDescriptionSchema
200A representation of the route.
defaultUnexpected error.Fault
GET/routes/{id}Get Route
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200A representation of the route.Route
defaultUnexpected error.Fault
GET/routes/{id}/export_gpxExport Route GPX
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200A GPX file with the route.
defaultUnexpected error.Fault
GET/routes/{id}/export_tcxExport Route TCX
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200A TCX file with the route.
defaultUnexpected error.Fault
SegmentEfforts2
GET/segment_effortsList Segment Efforts
Parameters
NameInRequiredType
segment_idqueryyesinteger
start_date_localquerynostring
end_date_localquerynostring
queryno
Responses
StatusDescriptionSchema
200List of segment efforts.
defaultUnexpected error.Fault
GET/segment_efforts/{id}Get Segment Effort
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200Representation of a segment effort.DetailedSegmentEffort
defaultUnexpected error.Fault
Segments4
GET/segments/exploreExplore segments
Parameters
NameInRequiredType
boundsqueryyesarray
activity_typequerynostring
min_catquerynointeger
max_catquerynointeger
Responses
StatusDescriptionSchema
200List of matching segments.ExplorerResponse
defaultUnexpected error.Fault
GET/segments/starredList Starred Segments
Responses
StatusDescriptionSchema
200List of the authenticated athlete's starred segments.
defaultUnexpected error.Fault
GET/segments/{id}Get Segment
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200Representation of a segment.DetailedSegment
defaultUnexpected error.Fault
PUT/segments/{id}/starredStar Segment
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200Representation of a segment.DetailedSegment
defaultUnexpected error.Fault
Streams4
GET/activities/{id}/streamsGet Activity Streams
Parameters
NameInRequiredType
idpathyesinteger
keysqueryyesarray
key_by_typequeryyesboolean
Responses
StatusDescriptionSchema
200The set of requested streams.StreamSet
defaultUnexpected error.Fault
GET/routes/{id}/streamsGet Route Streams
Parameters
NameInRequiredType
idpathyesinteger
Responses
StatusDescriptionSchema
200The set of requested streams.StreamSet
defaultUnexpected error.Fault
GET/segment_efforts/{id}/streamsGet Segment Effort Streams
Parameters
NameInRequiredType
idpathyesinteger
keysqueryyesarray
key_by_typequeryyesboolean
Responses
StatusDescriptionSchema
200The set of requested streams.StreamSet
defaultUnexpected error.Fault
GET/segments/{id}/streamsGet Segment Streams
Parameters
NameInRequiredType
idpathyesinteger
keysqueryyesarray
key_by_typequeryyesboolean
Responses
StatusDescriptionSchema
200The set of requested streams.StreamSet
defaultUnexpected error.Fault
Uploads2
POST/uploadsUpload Activity
Responses
StatusDescriptionSchema
201A representation of the created upload.Upload
defaultUnexpected error.Fault
GET/uploads/{uploadId}Get Upload
Parameters
NameInRequiredType
uploadIdpathyesinteger
Responses
StatusDescriptionSchema
200Representation of the upload.Upload
defaultUnexpected error.Fault

Try it

Developer reference

Base URLhttps://www.strava.com/api/v3
Rate limit

Strava's default overall rate limit is 200 requests per 15 minutes and 2,000 per day per application, with a stricter 100/15min and 1,000/day sub-limit on "non-upload" endpoints (developers.strava.com/docs/rate-limits/) -- limits are shared across all users of an app and reported live via X-RateLimit-Limit/-Usage response headers.

Key endpoints
  • GET/athlete
  • GET/athlete/activities
  • GET/activities/{id}
  • GET/segments/explore
  • GET/athletes/{id}/stats