MLB API endpoint
Returns game-level pitches expanded from one batter or pitcher pitch-arsenal row. Supply player_id, player_type, year, and the row's pitch_type. The upstream's min_ab request parameter is ignored, so it is not exposed. Rows include play_id values used by Baseball Savant's video pages; this endpoint returns play data and identifiers, not video media.
/mlb/statcast-pitch-arsenal-detailsReturns the game-level pitch rows loaded when a batter or pitcher Pitch Arsenal
Stats row is expanded. Select a player_id and pitch code from
/mlb/statcast-pitch-arsenal; supply its year and player_type as well.
play_id values identify video entries used by Baseball Savant; this route
returns play data and IDs, not video media.
player_id: required positive numeric player ID from a leaderboard row.player_type: pitcher or batter; defaults to pitcher.pitch_type: required; one of FF, CH, CU, FC, KN, SC, SI,
SL, SV, FS, ST, or legacy aliases CUKC (same rows as CU) and
SIFT (same rows as SI). Prefer the pitch code on the selected row.year: one of 2019, 2020, 2021, 2022, 2023, 2024, 2025, or
2026; these were the current selector values on 2026-09-30. Defaults to
2026.limit: 1–500; defaults to 100.offset: 0–5000; defaults to 0.Baseball Savant's expansion JavaScript sends details=true, player_id,
year, type, and pitchType. Its additional min_ab parameter was
cold-tested at 1 and 100 and returned byte-identical 416-row results for
the same player/pitch/season, so this API does not expose that ignored parameter.
The player and pitch selectors change the returned plays. A valid request may
return an empty plays array.
GET /api/v1/mlb/statcast-pitch-arsenal-details?player_id=592332&player_type=pitcher&pitch_type=FF&year=2026&limit=1
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| api_pitch_type_merged | 40 | FF in all 40 |
| batter_id | 40 | |
| batter_name | 40 | “Graham Pauley” and 21 other values |
| event_type | 40 | “single” and 8 other values |
| game_date | 40 | 2026-09-03 to 2026-09-23 |
| outs | 40 | 0 to 2, median 1 |
| pitch_name | 40 | FF in all 40 |
| pitch_speed | 40 | 90.5 to 95.6, median 93.8 |
| pitcher_id | 40 | |
| pitcher_name | 40 | Kevin Gausman in all 40 |
| play_id | 40 | |
| player_id | 40 | |
| pre_ball_count | 40 | 823,739 to 824,632, median 824,625 |
| pre_strike_count | 40 | 0 to 2, median 2 |
| year | 40 | 2,026 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| player_id | string | Yes | Positive MLB player id from mlb-statcast-pitch-arsenal | 592332 | |
| player_type | string | No | Row type Allowed values: pitcher, batter. | ||
| pitch_type | string | Yes | Pitch type from the selected row Allowed values: FF, CH, CU, FC, KN, SC, SI, SL, SV, FS, ST, CUKC, SIFT. | FF | |
| year | string | No | Season Allowed values: 2019, 2020, 2021, 2022, 2023, 2024, 2025, 2026. | ||
| 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-pitch-arsenal-details?player_id=592332&player_type=pitcher&pitch_type=FF&year=2019&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"player_id": "592332",
"player_type": "pitcher",
"pitch_type": "FF",
"year": "2026",
"total": 416,
"offset": 0,
"limit": 1,
"plays": [
{
"player_id": "592332",
"game_date": "2026-09-23",
"pitch_name": "FF",
"pitch_speed": "91.4",
"play_id": "745a09f9-d262-32b0-8c67-a18f4f9883f4"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastPitchArsenalDetailsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| pitch_type | string | No | FF | |||
| player_id | string | No | 592332 | |||
| player_type | string | No | pitcher | |||
| plays | array | No | ||||
| total | integer | No | 416 | |||
| 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-pitch-arsenal-details?player_id=592332&player_type=pitcher&pitch_type=FF&year=2019&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"