MLB API endpoint
Returns fielding run value for fielder, fielding-team, batter, batting-team, or pitcher views. Dates and grouping dimensions follow the first-party leaderboard. Minimum 0.1 is available only for fielder and fielding-team views; the batting/pitching views omit it. Sorting and pagination are applied locally. CSV and player-page visualizations are outside this table contract.
/mlb/statcast-fielding-run-valueQuery parameters:
type: fielder, fielding-team, batter, batting-team, or pitcher; defaults to fielder.season_start and season_end: each accepts 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, or 2026. The end season must not precede the start season. The list grows with MLB's current season.game_type: Any, Regular, or Playoff; defaults to Regular.minimum: q, 0.1, 1, 10, 25, 50, 100, 200, 500, 750, 1000, 2500, or 5000; defaults to q. 0.1 is accepted only when type is fielder or fielding-team.minimum_split: 0.1, 1, 10, 25, 50, 100, 200, 500, 750, 1000, 2500, or 5000; defaults to 1. 0.1 is accepted only when type is fielder or fielding-team.position: 0, 11, 12, 111, 112, 121, 13, 2, 3, 4, 5, 6, 7, 8, or 9; defaults to 0 (all).team_id for each selected team. Accepted IDs are 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, and 147.group_by for each split dimension: year, api_game_date_month_text, position, or game_type.date_start and date_end use YYYY-MM-DD, from 2018-03-29 through today. If both are set, the start must not follow the end.sort: name, team_name, total_runs, inf_of_runs, range_runs, arm_runs, dp_runs, fielding_runs_prevented_on_rec1b, catching_runs, framing_runs, throwing_runs, blocking_runs, outs_total, outs_2, outs_3, outs_4, outs_5, outs_6, outs_7, outs_8, outs_9, tot_pa, year, api_game_date_month_mm, api_game_date_month_text, pos_id, or game_type; defaults to total_runs.sort_dir: asc or desc; defaults to desc.limit: 1–500; defaults to 100. offset: zero-based, 0–5000; defaults to 0.Use mlb-discovery fields statcast_fielding_run_value_types, statcast_fielding_run_value_seasons, statcast_fielding_run_value_game_types, statcast_fielding_run_value_fielding_minimums, statcast_fielding_run_value_batting_minimums, statcast_fielding_run_value_positions, statcast_fielding_run_value_team_ids, statcast_fielding_run_value_group_by, statcast_fielding_run_value_sort_fields, and statcast_fielding_run_value_sort_directions for the accepted values. The batting minimum list also applies to minimum_split. The 0.1 threshold is omitted from the batting/pitching views by the first-party controls. The first-party table combines range, arm, double-play, first-base receiving, catcher, and inning totals; CSV download and player-page visuals are separate surfaces.
The anonymous page and its first-party JavaScript were replayed on 2026-10-01. All five types, all 11 seasons, all game types, every minimum and position option, all 30 team IDs, all four split dimensions, and date filtering were checked against live HTML data. position changes the returned table values for all five views; team views and batter/pitcher views can retain the same row count while the position filter changes values. Dates are applied upstream; REST sorting and pagination are local.
| Field | Filled in, of 12 checked | Values in the sample |
|---|---|---|
| abs_runs | 1 | 3.1 |
| arm_runs | 7 | -1.88 to 2.87, median -0.06 |
| blocking_runs | 1 | 2.31 |
| catching_runs | 1 | 10.07 |
| dp_runs | 6 | -2.01 to 1.03, median -0.04 |
| fielding_runs_prevented_on_rec1b | 3 | 0.02 to 1.8, median 0.05 |
| framing_runs | 1 | 6.62 |
| id | 12 | |
| inf_of_runs | 11 | -7.82 to 8.21, median 0.31 |
| n_teams | 12 | 1 |
| name | 12 | “Wells, Austin” and 11 other values |
| outs_2 | 12 | 0 to 2,878, median 0 |
| outs_3 | 12 | 0 to 1,870, median 0 |
| outs_4 | 12 | 0 to 3,465, median 0 |
| outs_5 | 12 | 0 to 2,626, median 0 |
| outs_6 | 12 | 0 to 1,737, median 0 |
| outs_7 | 12 | 0 to 3,026, median 0 |
| outs_8 | 12 | 0 to 2,884, median 0 |
| outs_9 | 12 | 0 to 1,513, median 0 |
| outs_total | 12 | 881 to 3,465, median 1,905 |
| range_runs | 11 | -7.33 to 9.74, median 1.39 |
| team_id | 12 | |
| team_name | 12 | Yankees in all 12 |
| throwing_runs | 1 | -1.95 |
| tot_pa | 12 | 133.11 to 532, median 291.44 |
| total_runs | 12 | -7.82 to 10.07, median 0.31 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| type | string | No | Table type Allowed values: fielder, fielding-team, batter, batting-team, pitcher. | ||
| season_start | string | No | First season Allowed values: 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. | ||
| season_end | string | No | Last season; must be >= season_start Allowed values: 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. | ||
| game_type | string | No | Game type Allowed values: Any, Regular, Playoff. | ||
| minimum | string | No | Total minimum; 0.1 only for fielder and fielding-team Allowed values: q, 0.1, 1, 10, 25, 50, 100, 200, 500, 750, 1000, 2500, 5000. | ||
| minimum_split | string | No | Minimum within each split; 0.1 only for fielder and fielding-team Allowed values: 0.1, 1, 10, 25, 50, 100, 200, 500, 750, 1000, 2500, 5000. | ||
| position | string | No | Position / position group Allowed values: 0, 11, 12, 111, 112, 121, 13, 2, 3, 4, 5, 6, 7, 8, 9. | ||
| team_id | array<string> | No | Repeated MLB team ids 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. Repeat this query parameter for multiple values. | ||
| group_by | array<string> | No | Repeated split dimensions Allowed values: year, api_game_date_month_text, position, game_type. Repeat this query parameter for multiple values. | ||
| date_start | string | No | Start date, YYYY-MM-DD, from 2018-03-29 through today | ||
| date_end | string | No | End date, YYYY-MM-DD, from 2018-03-29 through today | ||
| sort | string | No | Local sort field Allowed values: name, team_name, total_runs, inf_of_runs, range_runs, arm_runs, dp_runs, fielding_runs_prevented_on_rec1b, catching_runs, framing_runs, throwing_runs, blocking_runs, outs_total, outs_2, outs_3, outs_4, outs_5, outs_6, outs_7, outs_8, outs_9, tot_pa, year, api_game_date_month_mm, api_game_date_month_text, pos_id, game_type. | ||
| 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 (0-5000) Minimum: 0. Maximum: 5000. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/mlb/statcast-fielding-run-value?type=fielder&season_start=2016&season_end=2016&game_type=Any&minimum=q&minimum_split=0.1&position=0&team_id=108&group_by=year&sort=name&sort_dir=asc&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"board": "fielding-run-value",
"type": "fielder",
"season_start": "2026",
"season_end": "2026",
"game_type": "Regular",
"minimum": "q",
"minimum_split": "1",
"position": "0",
"teams": [
"112"
],
"total": 312,
"sort": "total_runs",
"sort_dir": "desc",
"offset": 0,
"limit": 1,
"rows": [
{
"total_runs": 26.348122191093196,
"inf_of_runs": 26.348122191093196,
"range_runs": 22.610490433454817,
"arm_runs": 3.737631757638384,
"outs_total": 4110,
"tot_pa": 637.6666666666666,
"id": 691718,
"name": "Crow-Armstrong, Pete",
"team_id": 112,
"team_name": "Cubs"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastFieldingRunValueResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | mlb.StatcastFieldingRunValueResponse | No | ||||
| data.board | string | No | ||||
| data.date_end | string | No | ||||
| data.date_start | string | No | ||||
| data.fetched_at | string | No | ||||
| data.game_type | string | No | ||||
| data.group_by | array | No | ||||
| data.limit | integer | No | ||||
| data.minimum | string | No | ||||
| data.minimum_split | string | No | ||||
| data.offset | integer | No | ||||
| data.position | string | No | ||||
| data.rows | array | No | ||||
| data.season_end | string | No | ||||
| data.season_start | string | No | ||||
| data.sort | string | No | ||||
| data.sort_dir | string | No | ||||
| data.source_url | string | No | ||||
| data.teams | array | No | ||||
| data.total | integer | No | ||||
| data.type | string | 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-fielding-run-value?type=fielder&season_start=2016&season_end=2016&game_type=Any&minimum=q&minimum_split=0.1&position=0&team_id=108&group_by=year&sort=name&sort_dir=asc&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"