MLB API endpoint
Returns the Running Game table for pitchers, pitching teams, or league. Season/game, hand, runner movement, target base, prior pickoff count, minimum opportunities, team, and team-stint controls are live-verified; named sorting, player/team search, and pagination are applied locally. Per-play records are available from mlb-statcast-running-game-details. The expanded-column toggle returns the same source fields, and the first-party CSV download is not a separate JSON response mode.
/mlb/statcast-running-gameQuery parameters:
type: Pit, Pitching Team, or League; defaults to Pit.game_type: Regular, Playoff, or All; defaults to Regular.pitch_hand: all, L, or R; defaults to all.runner_moved: All, Advance, Out, or Hold; defaults to All.target_base: All, 2B, or 3B; defaults to All.prior_pk: All, 0, 1, 2, or 3; 3 means 3 or more prior pickoff/disengagement attempts.n: q, 1, 50, 100, 200, 500, 1000, 1500, or 2000; defaults to q (qualified).season_start and season_end: 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026 on the observation date; defaults to the current season. The start must not exceed the end. The season set advances with the live page.split: yes or no; defaults to no.team: omit or pass the empty value for all teams; pass split for separate team stints; or pass one MLB team id from 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.with_team_only: true or false; defaults to true. This source checkbox is meaningful only with one specific team id, where it filters pitchers to the selected team. It is rejected with all-team/split selection or League rows.sort: local table sort field: entity_name, team_name, start_year, pitch_hand, key_pitch_hand, runs_prevented_on_running_attr, simple_prevented_on_running_attr, net_attr_plus, net_attr_minus, n_init, rate_sbx, n_plus, n_minus, r_sec_minus_prim_lead, r_sec_minus_prim_lead_sbx, n_sb, n_cs, n_pk, n_bk, n_fb, r_primary_lead, r_secondary_lead, r_primary_lead_sbx, or r_secondary_lead_sbx. Defaults to simple_prevented_on_running_attr.sort_dir: asc or desc; defaults to desc.search: optional case-insensitive substring matched against the displayed player or team name.limit: 1-500 rows; defaults to 100. offset: zero-based offset up to 10000.Notable response behavior: The table rows are embedded in the public Baseball Savant page and preserve first-party fields, including both compact and expanded metrics. Source filters are applied upstream; search, named sorting, and pagination are local. The expanded-column button only changes display, so the API always includes the source fields. Use /mlb/discovery and statcast_running_game_filters for the exact current sets. The first-party CSV export is not a separate response mode here; this endpoint returns the complete table as paginated JSON.
The three table groups are Pit (pitchers), Pitching Team, and League. The season list observed on 2026-10-01 is 2016 through 2026.
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| end_year | 40 | 2,026 |
| entity_id | 40 | |
| entity_name | 40 | “Imanaga, Shota” and 39 other values |
| key_name_abbrev | 40 | |
| key_pitch_hand | 40 | |
| key_target_base | 40 | |
| key_team_id | 40 | |
| n_bk | 40 | 0 to 1, median 0 |
| n_cs | 40 | 0 to 4, median 1 |
| n_fb | 40 | 0 to 1, median 0 |
| n_init | 40 | 351 to 1,071, median 734 |
| n_minus | 40 | 0 to 7, median 2 |
| n_pitcher_cs_aa | 37 | -0.15 to 2.22, median 0.51 |
| n_pk | 40 | 0 to 5, median 1 |
| n_plus | 40 | 0 to 8, median 2 |
| n_sb | 40 | 0 to 8, median 2 |
| net_attr_minus | 40 | -3.33 to 3.08, median -0.55 |
| net_attr_plus | 40 | 2.06 to 11.21, median 6.25 |
| num_teams | 40 | 1 to 2, median 1 |
| pitch_hand | 40 | R (28), L (12) |
| r_primary_lead | 40 | 10.47 to 11.9, median 11.31 |
| r_primary_lead_sbx | 38 | 8.77 to 15.42, median 11.69 |
| r_sec_minus_prim_lead | 40 | 1.17 to 4.44, median 3.45 |
| r_sec_minus_prim_lead_sbx | 38 | 4.52 to 13.83, median 9.42 |
| r_secondary_lead | 40 | 11.97 to 15.72, median 14.73 |
| r_secondary_lead_sbx | 38 | 16.82 to 27.56, median 20.76 |
| rate_sbx | 40 | 0 to 0.01, median 0 |
| row_id | 40 | |
| runner_moved | 40 | 1 to 15, median 4 |
| runs_prevented_on_running_attr | 40 | 0.33 to 2.42, median 0.94 |
| simple_prevented_on_running_attr | 40 | 3.98 to 9.11, median 5.42 |
| start_year | 40 | 2,026 |
| team_image_url | 40 | “https://www.mlbstatic.com/team-logos/112.svg” and 19 other values |
| team_name | 40 | “CHC” and 19 other values |
| team_selection_id | 40 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| type | string | No | Leaderboard group Allowed values: Pit, Pitching Team, League. | ||
| game_type | string | No | Game scope Allowed values: Regular, Playoff, All. | ||
| pitch_hand | string | No | Pitcher's throwing hand Allowed values: all, L, R. | ||
| runner_moved | string | No | Runner movement outcome Allowed values: All, Advance, Out, Hold. | ||
| target_base | string | No | Target base Allowed values: All, 2B, 3B. | ||
| prior_pk | string | No | Prior pickoff/disengagement count Allowed values: All, 0, 1, 2, 3. | ||
| n | string | No | Minimum pitcher opportunities Allowed values: q, 1, 50, 100, 200, 500, 1000, 1500, 2000. | ||
| season_start | integer | No | Inclusive first season Allowed values: 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. | ||
| season_end | integer | No | Inclusive last season Allowed values: 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. | ||
| split | string | No | Return separate year rows Allowed values: yes, no. | ||
| team | string | No | MLB team id, or split team stints Allowed values: split, 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. | ||
| with_team_only | boolean | No | Restrict pitcher rows to the selected team; only valid with one specific team id | ||
| sort | string | No | Local table sort field Allowed values: entity_name, team_name, start_year, pitch_hand, key_pitch_hand, runs_prevented_on_running_attr, simple_prevented_on_running_attr, net_attr_plus, net_attr_minus, n_init, rate_sbx, n_plus, n_minus, r_sec_minus_prim_lead, r_sec_minus_prim_lead_sbx, n_sb, n_cs, n_pk, n_bk, n_fb, r_primary_lead, r_secondary_lead, r_primary_lead_sbx, r_secondary_lead_sbx. | ||
| sort_dir | string | No | Local sort direction Allowed values: asc, desc. | ||
| search | string | No | Case-insensitive substring of the displayed player or team name | ||
| limit | integer | No | Rows per page, 1-500 Minimum: 1. Maximum: 500. | ||
| offset | integer | No | Zero-based row offset Minimum: 0. Maximum: 10000. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/mlb/statcast-running-game?type=Pit&game_type=Regular&pitch_hand=all&runner_moved=All&target_base=All&prior_pk=All&n=q&season_start=2016&season_end=2016&split=yes&team=split&with_team_only=true&sort=entity_name&sort_dir=asc&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"board": "pitcher-running-game",
"total": 502,
"offset": 0,
"limit": 1,
"rows": [
{
"entity_name": "Jobe, Jackson",
"entity_id": 695549,
"row_id": "695549_2026_116",
"simple_prevented_on_running_attr": -1.419432558995225
}
]
}
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastRunningGameResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | mlb.StatcastRunningGameResponse | No | ||||
| data.board | string | No | ||||
| data.fetched_at | string | No | ||||
| data.filters | mlb.StatcastRunningGameOption | No | ||||
| data.filters.game_type | string | No | ||||
| data.filters.limit | integer | No | ||||
| data.filters.min_pitches | string | No | ||||
| data.filters.offset | integer | No | ||||
| data.filters.pitch_hand | string | No | ||||
| data.filters.prior_pk | string | No | ||||
| data.filters.runner_moved | string | No | ||||
| data.filters.search | string | No | ||||
| data.filters.season_end | integer | No | ||||
| data.filters.season_start | integer | No | ||||
| data.filters.sort | string | No | ||||
| data.filters.sort_dir | string | No | ||||
| data.filters.split | string | No | ||||
| data.filters.target_base | string | No | ||||
| data.filters.team | string | No | ||||
| data.filters.type | string | No | ||||
| data.filters.with_team_only | boolean | No | ||||
| data.limit | integer | No | ||||
| data.offset | integer | No | ||||
| data.rows | array | No | ||||
| data.source_url | 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-running-game?type=Pit&game_type=Regular&pitch_hand=all&runner_moved=All&target_base=All&prior_pk=All&n=q&season_start=2016&season_end=2016&split=yes&team=split&with_team_only=true&sort=entity_name&sort_dir=asc&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"