MLB API endpoint
Returns per-play records backing an individual first-base receiving leaderboard row, including game/play ids, outcome codes, receiving OAA, expected out rate, timing, and field coordinates. This is tabular JSON; the separate 3D skeletal visualization route is excluded.
/mlb/statcast-first-base-receiving-detailsRequired query parameter: player_id is a positive MLB player id from a First Base Receiving row. The endpoint accepts the leaderboard group type (fielder_3, throw_fielder_id, pitching-team, batting-team, league), repeated season[] (2021, 2022, 2023, 2024, 2025, 2026) and gameType[] (R, F, D, L, W), min (q, 1, 5, 10, 25, 50, 75, 100, 200, 300, 400, 500, 750, 1000), split[] (throw_height_code, throw_location_code_full, runners_on_cd), minSplit (1, 5, 10, 25, 50, 75, 100, 200, 300, 400, 500, 750, 1000), splitYear (0, 1), repeated team[] (108, 117, 133, 141, 144, 158, 138, 112, 109, 119, 137, 114, 136, 146, 121, 120, 110, 135, 143, 134, 140, 139, 111, 113, 115, 118, 116, 142, 145, 147), dateStart/dateEnd (YYYY-MM-DD), fielder_3_hand (L, R), min_height_in_inches (70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80), is_hit_into_play_field_out (0, 1), repeated runners_on_cd[] (0, 1, 2, 3, 4, 5, 6, 7), throw_pos_id[] (4, 5, 6), throw_height_code[] (1_Low, 2_Mid, 3_High), throw_location_code_full[] (A. On Target, B. Scoop, C. Bounce, D. Low, E. Wide, F. High), bin_time_X10[] (-1, 0, 1, 2, 3, 4, 5), plus limit (1–500) and offset (0–100000).
The response includes source play/game ids and dates, receiving OAA and expected out rate, runner state, target base, throw height/location/position, outcome flag, catch/intercept coordinates, throw timing, and trajectory coefficients when supplied upstream. The source request and accepted values were checked live on 2026-10-01. Data is fetched from the first-party JSON detail route and paginated locally. The separate skeletal-animation route is visualization data and is not included.
Example response shape:
{"code":200,"msg":"OK","data":{"player_id":683737,"total":169,"offset":0,"limit":1,"rows":[{"year":2026,"game_pk":825042,"game_date":"2026-08-25","play_id":"8bfa3b8b-b0a0-3556-a972-0975cc95b2f8","oaa":0.065,"expected_rate_out":0.935,"runners_on_cd":0,"throw_pos_id":4,"throw_height_code":"1_Low","throw_location_code_full":"D. Low","bin_time_X10":5}]}}
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| bag_x | 40 | |
| bag_y | 40 | |
| bin_time_X10 | 40 | 0 to 5, median 4 |
| bounce_catch_x | 7 | |
| bounce_catch_y | 7 | |
| bounce_catch_z | 7 | 1 |
| catch_x | 40 | |
| catch_y | 40 | |
| catch_z | 40 | 0 to 9.84, median 3.19 |
| expected_rate_out | 40 | 0.01 to 0.99, median 0.97 |
| f3_name_display_last_first | 40 | Busch, Michael in all 40 |
| game_date | 40 | 2026-03-26 to 2026-09-27 |
| game_date_1 | 40 | 2026-03-26 to 2026-09-27 |
| game_pk | 40 | 824,678 to 825,042, median 824,689 |
| has_skeletal | 40 | true in 40 of 40 |
| intercept_ball_was_released_time | 40 | 2.53 to 4.1, median 3.4 |
| intercept_ball_was_released_x | 40 | |
| intercept_ball_was_released_y | 40 | |
| is_hit_into_play_field_out | 40 | 0 to 1, median 1 |
| new_catch_z | 40 | 1 to 9.84, median 3.19 |
| oaa | 40 | -0.99 to 0.23, median 0.01 |
| play_id | 40 | |
| play_key | 40 | |
| play_url | 40 | research.mlb.com |
| quadratic_x_a | 40 | |
| quadratic_x_b | 40 | |
| quadratic_x_c | 40 | |
| quadratic_y_a | 40 | |
| quadratic_y_b | 40 | |
| quadratic_y_c | 40 | |
| quadratic_z_a | 40 | -16.53 to -9.45, median -13.75 |
| quadratic_z_b | 40 | 67.97 to 143.86, median 109.05 |
| quadratic_z_c | 40 | -307.96 to -109.42, median -202.6 |
| runners_on_cd | 40 | 0 to 5, median 0 |
| target_base_for_ball | 40 | 1st in all 40 |
| team_id | 40 | |
| throw_height_code | 40 | |
| throw_location_code_full | 40 | |
| throw_name_display_last_first | 40 | Hoerner, Nico (12), Swanson, Dansby (11), Bregman, Alex (10) and 3 more |
| throw_pos_id | 40 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| player_id | integer | Yes | Positive MLB player id | 683737 | |
| type | string | No | Leaderboard group Allowed values: fielder_3, throw_fielder_id, pitching-team, batting-team, league. | ||
| season[] | array<string> | No | Season values Allowed values: 2021, 2022, 2023, 2024, 2025, 2026. Repeat this query parameter for multiple values. | ||
| gameType[] | array<string> | No | Game types Allowed values: R, F, D, L, W. Repeat this query parameter for multiple values. | ||
| min | string | No | Minimum opportunities Allowed values: q, 1, 5, 10, 25, 50, 75, 100, 200, 300, 400, 500, 750, 1000. | ||
| minSplit | string | No | Grouped opportunity threshold Allowed values: 1, 5, 10, 25, 50, 75, 100, 200, 300, 400, 500, 750, 1000. | ||
| split[] | array<string> | No | Group dimensions Allowed values: throw_height_code, throw_location_code_full, runners_on_cd. Repeat this query parameter for multiple values. | ||
| splitYear | string | No | Year split selector Allowed values: 0, 1. | ||
| team[] | array<string> | No | MLB team ids Allowed values: 108, 117, 133, 141, 144, 158, 138, 112, 109, 119, 137, 114, 136, 146, 121, 120, 110, 135, 143, 134, 140, 139, 111, 113, 115, 118, 116, 142, 145, 147. Repeat this query parameter for multiple values. | ||
| dateStart | string | No | Inclusive start date (YYYY-MM-DD) | ||
| dateEnd | string | No | Inclusive end date (YYYY-MM-DD) | ||
| fielder_3_hand | string | No | First baseman batting hand Allowed values: L, R. | ||
| min_height_in_inches | string | No | Minimum fielder height Allowed values: 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80. | ||
| is_hit_into_play_field_out | string | No | Field-out flag Allowed values: 0, 1. | ||
| runners_on_cd[] | array<string> | No | Base occupancy codes Allowed values: 0, 1, 2, 3, 4, 5, 6, 7. Repeat this query parameter for multiple values. | ||
| throw_pos_id[] | array<string> | No | Throwing position ids Allowed values: 4, 5, 6. Repeat this query parameter for multiple values. | ||
| throw_height_code[] | array<string> | No | Throw heights Allowed values: 1_Low, 2_Mid, 3_High. Repeat this query parameter for multiple values. | ||
| throw_location_code_full[] | array<string> | No | Throw outcomes Allowed values: A. On Target, B. Scoop, C. Bounce, D. Low, E. Wide, F. High. Repeat this query parameter for multiple values. | ||
| bin_time_X10[] | array<string> | No | Time bins Allowed values: -1, 0, 1, 2, 3, 4, 5. Repeat this query parameter for multiple values. | ||
| limit | integer | No | Rows per page, 1-500 Minimum: 1. Maximum: 500. | ||
| offset | integer | No | Zero-based row offset Minimum: 0. Maximum: 100000. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/mlb/statcast-first-base-receiving-details?player_id=683737&type=fielder_3&season%5B%5D=2021&gameType%5B%5D=R&min=q&minSplit=1&split%5B%5D=throw_height_code&splitYear=0&team%5B%5D=108&fielder_3_hand=L&min_height_in_inches=70&is_hit_into_play_field_out=0&runners_on_cd%5B%5D=0&throw_pos_id%5B%5D=4&throw_height_code%5B%5D=1_Low&throw_location_code_full%5B%5D=A.+On+Target&bin_time_X10%5B%5D=-1&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"player_id": 683737,
"total": 169,
"offset": 0,
"limit": 1,
"rows": [
{
"year": 2026,
"game_pk": 825042,
"game_date": "2026-08-25",
"play_id": "8bfa3b8b-b0a0-3556-a972-0975cc95b2f8",
"oaa": 0.065,
"expected_rate_out": 0.935,
"runners_on_cd": 0,
"throw_pos_id": 4,
"throw_height_code": "1_Low",
"throw_location_code_full": "D. Low",
"bin_time_X10": 5
}
]
}
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastFirstBaseReceivingDetailsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | mlb.StatcastFirstBaseReceivingDetailsResponse | No | ||||
| data.fetched_at | string | No | ||||
| data.limit | integer | No | ||||
| data.offset | integer | No | ||||
| data.player_id | 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 |
| 429 | Too Many Requests | #/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-first-base-receiving-details?player_id=683737&type=fielder_3&season%5B%5D=2021&gameType%5B%5D=R&min=q&minSplit=1&split%5B%5D=throw_height_code&splitYear=0&team%5B%5D=108&fielder_3_hand=L&min_height_in_inches=70&is_hit_into_play_field_out=0&runners_on_cd%5B%5D=0&throw_pos_id%5B%5D=4&throw_height_code%5B%5D=1_Low&throw_location_code_full%5B%5D=A.+On+Target&bin_time_X10%5B%5D=-1&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"