Segments
Segments are specific sections of road. Athletes’ times are compared on these segments and leaderboards are created.
Detailed representation attributes
id: | integer |
resource_state: |
integer indicates level of detail. Possible values: 2 -> ‘summary’, 3 -> ‘detail’ |
name: | string |
activity_type: |
string ‘Ride’ or ‘Run’ |
distance: |
float meters |
average_grade: |
float percent |
maximum_grade: |
float percent |
elevation_high: |
float meters |
elevation_low: |
float meters |
start_latlng: | [latitude, longitude] |
end_latlng: | [latitude, longitude] |
climb_category: |
integer [0, 5], higher is harder ie. 5 is Hors catégorie, 0 is uncategorized |
city: | string |
state: | string |
country: | string |
private: | boolean |
starred: |
boolean true if authenticated athlete has starred segment |
created_at: | time string |
updated_at: | time string |
total_elevation_gain: |
float meters |
map: |
object includes a summary polyline |
effort_count: |
integer number of attempts |
athlete_count: |
integer number of unique athletes |
hazardous: | boolean |
star_count: |
integer number of stars on this segment. |
Summary representation attributes
The summary representation of the segment object is the same as the detailed representation, except it does NOT include these attributes:
created_at
updated_at
total_elevation_gain
map
effort_count
athlete_count
star_count
Example segment
{
"id": 229781,
"resource_state": 3,
"name": "Hawk Hill",
"activity_type": "Ride",
"distance": 2684.82,
"average_grade": 5.7,
"maximum_grade": 14.2,
"elevation_high": 245.3,
"elevation_low": 92.4,
"start_latlng": [
37.8331119,
-122.4834356
],
"end_latlng": [
37.8280722,
-122.4981393
],
"climb_category": 1,
"city": "San Francisco",
"state": "CA",
"country": "United States",
"private": false,
"starred": false,
"created_at": "2008-01-01T17:44:00Z",
"updated_at": "2013-09-04T20:00:50Z",
"total_elevation_gain": 155.7,
"map": {
"id": "s229781",
"polyline": "}g|e...VJr@",
"resource_state": 3
},
"effort_count": 51335,
"athlete_count": 7036,
"hazardous": false,
"star_count": 0
}
Retrieve details about a specific segment.
Parameters
id: | integer required |
Returns a detailed representation of the segment.
Definition
GET https://www.strava.com/api/v3/segments/:id
Example request
$ curl -G https://www.strava.com/api/v3/segments/229781 \
-H "Authorization: Bearer 83ebeabdec09f6670863766f792ead24d61fe3f9"
Returns a summary representation of the segments starred by the authenticated user. Pagination is supported.
Parameters
page: | integer optional |
per_page: | integer optional |
Note: adds in an athlete_pr_effort
object if applicable.
This represents the PR of the requesting athlete.
Definition
GET https://www.strava.com/api/v3/segments/starred
GET https://www.strava.com/api/v3/athletes/:id/segments/starred
Example request
$ curl -G https://www.strava.com/api/v3/segments/starred \
-H "Authorization: Bearer 83ebeabdec09f6670863766f792ead24d61fe3f9"
Example segment
{
"id": 229781,
"resource_state": 2,
"name": "Hawk Hill",
"activity_type": "Ride",
"distance": 2684.82,
"average_grade": 5.7,
"maximum_grade": 14.2,
"elevation_high": 245.3,
"elevation_low": 92.4,
"start_latlng": [
37.8331119,
-122.4834356
],
"end_latlng": [
37.8280722,
-122.4981393
],
"start_latitude": 37.8331119,
"start_longitude": -122.4834356,
"end_latitude": 37.8280722,
"end_longitude": -122.4981393,
"climb_category": 1,
"city": "San Francisco",
"state": "CA",
"country": "United States",
"private": false,
"starred": true,
"hazardous": false,
"pr_time": 550,
"athlete_pr_effort": {
"id": 3439333050,
"elapsed_time": 550,
"distance": 2713.4,
"start_date": "2013-01-21T19:05:07Z",
"start_date_local": "2013-01-21T11:05:07Z",
"is_kom": false
},
"starred_date": "2014-07-24T23:23:24Z"
}
Requires write permissions, as requested during the authorization process.
id: | integer required |
starred: |
boolean required set to ‘true’ to star |
Returns a detailed representation of the segment.
Definition
PUT https://www.strava.com/api/v3/segments/:id/starred
Retrieve an array of segment efforts, for a given segment, filtered by athlete and/or a date range. Pagination is supported.
Parameters
id: | integer required |
start_date_local: |
datetime ISO 8601 formatted date time, see Dates for more information |
end_date_local: |
datetime ISO 8601 formatted date time, see Dates for more information |
page: | integer optional |
per_page: | integer optional |
Returns an array of segment effort summary representations
sorted by start_date_local
or absolute local time ascending.
Filtering parameters, like start_date_local
and end_date_local
, are optional.
If they are not provided all efforts for the segment will be returned.
Date range filtering is accomplished using an inclusive start and end time, thus
start_date_local
and end_date_local
must be sent together. For open ended ranges pick dates significantly in the past or future.
The filtering is done over local time for the segment, so there is no need for timezone conversion.
For example, all efforts on Jan. 1st, 2014 for a
segment in San Francisco, CA can be fetched using 2014-01-01T00:00:00Z and 2014-01-01T23:59:59Z.
Definition
GET https://www.strava.com/api/v3/segments/:id/all_efforts
Example requests
$ curl -G https://www.strava.com/api/v3/segments/229781/all_efforts \
-H "Authorization: Bearer 83ebeabdec09f6670863766f792ead24d61fe3f9" \
-d athlete_id=227615
$ curl -G https://www.strava.com/api/v3/segments/229781/all_efforts \
-H "Authorization: Bearer 83ebeabdec09f6670863766f792ead24d61fe3f9" \
-d start_date_local=2014-01-01T00:00:00Z
-d end_date_local=2014-01-01T23:59:59Z
Leaderboards represent the ranking of athletes on specific segments.
Filter by age_group
and weight_class
is only allowed if the
authenticated athlete is a Strava premium member.
Pagination is supported.
Parameters
id: | integer required |
gender: |
string optional ‘M’ or ‘F’ |
age_group: |
string optional ‘0_19’, ‘20_24’, ‘25_34’, ‘35_44’, ‘45_54’, ‘55_64’, ‘65_69’, ‘70_74’, ‘75_plus’ |
weight_class: |
string optional pounds ‘0_74’, ‘75_99’, ‘100_124’, ‘125_149’, ‘150_164’, ‘165_179’, ‘180_199’, ‘200_224’, ‘225_249’, ‘250_plus’ or kilograms ‘0_34’, ‘35_44’, ‘45_54’, ‘55_64’, ‘65_74’, ‘75_84’, ‘85_94’, ‘95_104’, ‘105_114’, ‘115_plus’ |
following: | boolean optional |
club_id: | integer optional |
date_range: |
string optional ‘this_year’, ‘this_month’, ‘this_week’, ‘today’ |
context_entries: |
integer optional default is 2, max of 15 |
page: | integer optional |
per_page: |
integer optional default is 10 |
Returns an array of leaderboard entry objects similar to the example response to the right.
Note that effort ids should be considered 64-bit integers and effort_count
is deprecated, use entry_count
instead.
If the requesting athlete has completed this segment, their entry, along with a “context,” will be returned in addition to
the entries defined by page
and per_page
. The context is a default of 2 entries before and after the requesting athlete’s entry.
Entries will not be repeated if there is overlap with those requested by the page
and per_page
parameters.
For example, if the requesting athlete is 15th on a segment, the default result will include the top 10 plus 13-17 (number 15 plus/minus 2).
Definition
GET https://www.strava.com/api/v3/segments/:id/leaderboard
Example request
$ curl -G \
https://www.strava.com/api/v3/segments/229781/leaderboard \
-H "Authorization: Bearer 83ebeabdec09f6670863766f792ead24d61fe3f9" \
-d per_page=2
Example response
{
"entry_count": 7037,
"entries": [
{
"athlete_name": "Jim W.",
"rank": 0,
"elapsed_time": 360,
"moving_time": 360,
"start_date": "2013-03-29T13:49:35Z",
"start_date_local": "2013-03-29T06:49:35Z"
},
{
"athlete_name": "Chris Z.",
"elapsed_time": 374,
"moving_time": 374,
"start_date": "2012-02-23T14:50:16Z",
"start_date_local": "2012-02-23T06:50:16Z",
"rank": 1
}
]
}
This endpoint can be used to find popular segments within a given area.
Parameters
bounds: |
floats required comma separated list of bounding box corners ‘sw.lat,sw.lng,ne.lat,ne.lng’ ‘south,west,north,east’ |
activity_type: |
string optional ‘running’ or ‘riding’, default is riding |
min_cat: |
integer optional Minimum climb category filter |
max_cat: |
integer optional Maximum climb category filter |
Returns an array of up to 10 segment objects similar to the example response to the right.
Definition
GET https://www.strava.com/api/v3/segments/explore
Example request
$ curl -G https://www.strava.com/api/v3/segments/explore \
-H "Authorization: Bearer 83ebeabdec09f6670863766f792ead24d61fe3f9" \
-d bounds=37.821362,-122.505373,37.842038,-122.465977 \
Example response
{
"segments": [
{
"id": 229781,
"name": "Hawk Hill",
"climb_category": 1,
"climb_category_desc": "4",
"avg_grade": 5.7,
"start_latlng": [
37.8331119,
-122.4834356
],
"end_latlng": [
37.8280722,
-122.4981393
],
"elev_difference": 152.8,
"distance": 2684.8,
"points": "}g|eFnm@n@Op@VJr@"
},
{
"id": 632535,
"name": "Hawk Hill Upper Conzelman to Summit",
"climb_category": 0,
"climb_category_desc": "NC",
"avg_grade": 8.10913,
"start_latlng": [
37.8334451,
-122.4941994
],
"end_latlng": [
37.8281297,
-122.4980005
],
"elev_difference": 67.29200000000003,
"distance": 829.834,
"points": "_j|eFvc@p@SbAu@h@Qn@?RTDH"
}
]
}