MLB API endpoint
Returns Batter or Pitcher Home Runs Tracking rows. Year, team id, minimum home runs, and Standard/Adjusted mode are first-party filters. The first-party table sorts client-side; this endpoint applies a named local sort and pagination. Use mlb_discovery for the exact filter sets. Per-player home-run plays are available from mlb-statcast-home-runs-details; trajectory images, video media, and CSV downloads are separate representations.
/mlb/statcast-home-runsReturns Baseball Savant's Home Runs Tracking leaderboard for batters or pitchers.
The page compares actual home runs with trajectories projected across all 30
MLB parks. Adjusted and Standard modes are separate source filters. Each row
includes player and team identity, HR totals, park outcome counts, and expected
home-run measurements. A player row can be expanded through
mlb-statcast-home-runs-details.
player_type: Batter or Pitcher; defaults to Batter.year: 2019, 2020, 2021, 2022, 2023, 2024, 2025, or 2026 in
the live selector checked on 2026-09-30; defaults to the current season. The
accepted selector range contains the current season and previous seven.team: optional MLB team id: 108, 109, 110, 111, 112, 113,
114, 115, 116, 117, 118, 119, 120, 121, 133, 134,
135, 136, 137, 138, 139, 140, 141, 142, 143, 144,
145, 146, 147, or 158. Omit it to include every team.min: minimum home run total: 0, 5, 10, 15, 20, or 25; defaults
to 0.cat: adj_xhr for Adjusted or xhr for Standard; defaults to adj_xhr.sort: local sort column: player, team, year, cat, avg_hr_trot,
doubters, mostly_gone, no_doubters, no_doubter_per, hr_total,
xhr, or xhr_diff; defaults to xhr.sort_dir: asc or desc; defaults to desc.limit: 1–500; defaults to 100.offset: 0–5000; defaults to 0.The first-party table applies player_type, team, min, cat, and year
when loading its embedded table. REST sorting and pagination are local. The
source sort and sortDir values are presentation state and do not change the
upstream rows. Team ids are the exact values from the source select, not
abbreviations. See mlb_discovery for the same filter sets.
CSV downloads, trajectory images, and video media are separate upstream representations and are not returned by this JSON route.
GET /api/v1/mlb/statcast-home-runs?player_type=Batter&year=2026&team=112&min=10&cat=adj_xhr&sort=xhr&sort_dir=desc&limit=2
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| ari | 40 | 17 to 40, median 26 |
| atl | 40 | 24 to 47, median 31 |
| avg_hr_trot | 40 | 21.96 to 29.05, median 24.85 |
| bal | 40 | 24 to 51, median 31 |
| bos | 40 | 17 to 38, median 22 |
| cat | 40 | adj_xhr in all 40 |
| chc | 40 | 26 to 49, median 33 |
| cin | 40 | 27 to 53, median 34 |
| cle | 40 | 21 to 48, median 28 |
| col | 40 | 23 to 48, median 32 |
| cws | 40 | 21 to 46, median 29 |
| det | 40 | 23 to 46, median 32 |
| doubters | 40 | 4 to 19, median 10 |
| hou | 40 | 22 to 42, median 30 |
| hr_total | 40 | 22 to 46, median 30 |
| kc | 40 | 24 to 47, median 30 |
| laa | 40 | 20 to 43, median 26 |
| lad | 40 | 27 to 52, median 35 |
| mia | 40 | 19 to 48, median 28 |
| mil | 40 | 27 to 52, median 35 |
| min | 40 | 19 to 40, median 27 |
| mostly_gone | 40 | 12 to 37, median 21 |
| no_doubter_per | 40 | 19.4 to 73.9, median 51.9 |
| no_doubters | 40 | 6 to 28, median 15 |
| non_hr_ct | 40 | 6 to 24, median 15 |
| non_hr_would_have_left | 40 | 2 to 13, median 9 |
| num_teams | 40 | 1 to 2, median 1 |
| nym | 40 | 24 to 48, median 30 |
| nyy | 40 | 18 to 46, median 30 |
| oak | 40 | 26 to 52, median 35 |
| perfect_timing | 40 | 34 to 66, median 46 |
| perfect_timing_per | 40 | 55 to 83.7, median 67.4 |
| phi | 40 | 29 to 52, median 37 |
| pit | 40 | 17 to 42, median 24 |
| player | 40 | “Alvarez, Yordan” and 39 other values |
| player_id | 40 | |
| player_type | 40 | Batter in all 40 |
| player_url | 40 | baseballsavant.mlb.com |
| sd | 40 | 21 to 42, median 28 |
| sea | 40 | 24 to 49, median 33 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| player_type | string | No | Table type Allowed values: Batter, Pitcher. | ||
| year | string | No | Season Allowed values: 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. | ||
| team | string | No | MLB team id; blank selects all teams Allowed values: 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 158. | ||
| min | string | No | Minimum home run total Allowed values: 0, 5, 10, 15, 20, 25. | ||
| cat | string | No | Trajectory mode Allowed values: adj_xhr, xhr. | ||
| sort | string | No | Local sort column Allowed values: player, team, year, cat, avg_hr_trot, doubters, mostly_gone, no_doubters, no_doubter_per, hr_total, xhr, xhr_diff. | ||
| sort_dir | string | No | Local 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-home-runs?player_type=Batter&year=2019&team=108&min=0&cat=adj_xhr&sort=player&sort_dir=asc&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"board": "home-runs",
"player_type": "Batter",
"year": "2026",
"team": "112",
"min": "10",
"cat": "adj_xhr",
"sort": "xhr",
"sort_dir": "desc",
"total": 15,
"offset": 0,
"limit": 2,
"rows": [
{
"player": "Crow-Armstrong, Pete",
"team_id": "112",
"team_abbrev": "CHC",
"player_id": "691718",
"hr_total": "45",
"xhr": 42.2,
"player_url": "https://baseballsavant.mlb.com/savant-player/691718"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastHomeRunsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| board | string | No | home-runs | |||
| cat | string | No | adj_xhr | |||
| min | string | No | 10 | |||
| player_type | string | No | Batter | |||
| rows | array | No | ||||
| sort | string | No | xhr | |||
| sort_dir | string | No | desc | |||
| team | string | No | 112 | |||
| total | integer | No | 49 | |||
| year | string | No | 2026 |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/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-home-runs?player_type=Batter&year=2019&team=108&min=0&cat=adj_xhr&sort=player&sort_dir=asc&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"