MLB API endpoint
Returns player Sprint Speed rows from the Baseball Savant leaderboard. The source filters season range, position, and minimum competitive runs; team filtering and sorting are applied locally. Use mlb_discovery for every closed value set.
/mlb/statcast-sprint-speedQuery parameters:
min_season (optional): first season, one of 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. Defaults to 2026.max_season (optional): last season from the same set; it must be greater than or equal to min_season. Defaults to min_season.position (optional): all, 1, 2, 3, 4, 5, 6, 7, 8, 9, or 10. Omitting it selects the source page's default All Positions view. 1 (pitcher) is accepted and can return an empty rows array.team_id (optional): one of 108, 117, 133, 141, 144, 158, 138, 112, 109, 119, 137, 114, 136, 146, 121, 120, 110, 135, 143, 134, 140, 139, 113, 111, 115, 118, 116, 142, 145, 147. The source embeds all teams and applies this selector in the browser; the API filters those rows locally.minimum_runs (optional): 0, 5, 10, 25, 50, 75, 100, 150, 200, or 250. Defaults to 10. Upstream returns the same floor for 0 and 5.sort (optional): player, team, position, age, competitive_runs, bolts, home_to_first, or sprint_speed. Defaults to sprint_speed; age is available only for one season.sort_dir (optional): asc or desc; defaults to desc.limit (optional): 1–500; defaults to 100.offset (optional): 0–5000; defaults to 0.x-api-key (required): API key.Response behavior: Source season, position, and minimum-run filters select embedded rows; team and sort filters are applied locally. Rows preserve the upstream field names, including runner_id, name_display_last_first, team_id, position_name, n, n_bolts, hp_to_1b, r_sprint_speed_top50percent, and timeframe. Use /mlb/discovery for the matching labels and closed values.
| Field | Filled in, of 1 checked | Values in the sample |
|---|---|---|
| age | 1 | 29 |
| batter_started_at_position | 1 | 8 |
| distance_burst | 1 | 30.6 |
| file_code | 1 | |
| hp_to_1b | 1 | 4.51 |
| hp_to_1b_lhh | 1 | 4.51 |
| hp_to_1b_rhh | 0 | |
| href | 1 | median 50 characters |
| n | 1 | 150 |
| n_bolts | 0 | |
| n_top50percent | 1 | 96 |
| name_abbrev | 1 | “NYY” |
| name_display_last_first | 1 | “Grisham, Trent” |
| position_name | 1 | “CF” |
| r_sprint_speed_top50percent | 1 | 26.83 |
| r_sprint_speed_top50percent_pretty | 1 | 26.8 |
| runner_id | 1 | |
| speed_order | 1 | 405 |
| team_id | 1 | |
| timeframe | 1 | 2,026 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| min_season | string | No | First season Allowed values: 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. | ||
| max_season | string | No | Last season; must be >= min_season Allowed values: 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. | ||
| position | string | No | Position code; omitted is All Positions Allowed values: all, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10. | ||
| team_id | string | No | MLB team id Allowed values: 108, 117, 133, 141, 144, 158, 138, 112, 109, 119, 137, 114, 136, 146, 121, 120, 110, 135, 143, 134, 140, 139, 113, 111, 115, 118, 116, 142, 145, 147. | ||
| minimum_runs | string | No | Minimum competitive runs Allowed values: 0, 5, 10, 25, 50, 75, 100, 150, 200, 250. | ||
| sort | string | No | Local sort field Allowed values: player, team, position, age, competitive_runs, bolts, home_to_first, sprint_speed. | ||
| sort_dir | string | No | Sort direction Allowed values: asc, desc. | ||
| limit | integer | No | Rows per page (1-500) Minimum: 1. Maximum: 500. | ||
| offset | integer | No | Zero-based row offset Minimum: 0. Maximum: 5000. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/mlb/statcast-sprint-speed?min_season=2015&max_season=2015&position=all&team_id=108&minimum_runs=0&sort=player&sort_dir=asc&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"board": "sprint-speed",
"min_season": "2026",
"max_season": "2026",
"minimum_runs": "10",
"sort": "sprint_speed",
"sort_dir": "desc",
"total": 567,
"offset": 0,
"limit": 100,
"rows": [
{
"runner_id": 695508,
"name_display_last_first": "Cauley, Cam",
"team_id": 140,
"position_name": "CF",
"n": 24,
"r_sprint_speed_top50percent": 30.5
}
]
}
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastSprintSpeedResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | mlb.StatcastSprintSpeedResponse | No | ||||
| data.board | string | No | ||||
| data.fetched_at | string | No | ||||
| data.limit | integer | No | ||||
| data.max_season | string | No | ||||
| data.min_season | string | No | ||||
| data.minimum_runs | string | No | ||||
| data.offset | integer | No | ||||
| data.position | string | No | ||||
| data.rows | array | No | ||||
| data.sort | string | No | ||||
| data.sort_dir | string | No | ||||
| data.source_url | string | No | ||||
| data.team_id | string | No | ||||
| data.total | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/mlb/statcast-sprint-speed?min_season=2015&max_season=2015&position=all&team_id=108&minimum_runs=0&sort=player&sort_dir=asc&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"