MLB API endpoint
Expands a Catcher Blocking Cat, Pit, or Pitching Team table row into paginated play-location events. entity_id must come from the matching leaderboard rows and other filters must match that row query. League rows have no detail feed.
/mlb/statcast-catcher-blocking-detailsExpands a row from the Catcher Blocking leaderboard into play-location and pitch context observations. The entity_id must come from a row for the same type and filter selection. League aggregate rows have no detail feed.
entity_id: required positive row id returned by the leaderboard.type: Cat, Pit, or Pitching Team; defaults to Cat.game_type: Regular, Playoff, or All; defaults to Regular.start_year: 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, or 2026; defaults to current season.end_year: same values, at or after start_year; defaults to start_year.split: yes or no; defaults to no.team: optional split selector or one of team IDs 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. For Pitching Team, omit split.with_team_only: optional true or false; valid only for a numeric team with Cat or Pit.limit: rows per page, 1–500; defaults to 100.offset: zero-based row offset, 0–100000; defaults to 0.All play observations are fetched from the first-party detail feed and paginated locally. Fields include game/date, catcher and pitcher IDs/names, pitch type and hand, batter side, pitch location, and the blocking model coordinates. Empty data is valid when the selected row/filter combination has no plays.
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| api_pitch_type_subgroup | 40 | Fastball (18), Slider (13), Changeup (5) and 1 more |
| api_plate_time | 40 | 0.38 to 0.5, median 0.42 |
| bat_side | 40 | R (26), L (14) |
| bin_x_runner_pbwp | 40 | |
| catcher_id | 40 | |
| catcher_name | 40 | Alvarez, Francisco in all 40 |
| game_date | 40 | 2026-03-31 to 2026-09-13 |
| game_pk | 40 | 823,077 to 824,559, median 823,495 |
| is_pitch_ground | 40 | 0 to 1, median 0 |
| is_runner_pbwp | 40 | 0 to 1, median 0 |
| location_x | 40 | |
| location_y | 40 | |
| location_z | 40 | 0 to 4.25, median 2.02 |
| pitch_hand | 40 | L (24), R (16) |
| pitcher_id | 40 | |
| play_id | 40 | |
| player_name | 40 | Alvarez, Francisco in all 40 |
| polynomial_x_1 | 40 | |
| polynomial_x_2 | 40 | |
| polynomial_x_3 | 40 | |
| polynomial_y_1 | 40 | |
| polynomial_y_2 | 40 | |
| polynomial_y_3 | 40 | |
| polynomial_z_1 | 40 | 5.06 to 6.3, median 5.32 |
| polynomial_z_2 | 40 | -12.1 to 3.45, median -0.9 |
| polynomial_z_3 | 40 | -18.8 to -4.75, median -11.66 |
| x_runner_pbwp | 40 | |
| year | 40 | 2,026 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| entity_id | string | Yes | Entity id from a Cat, Pit, or Pitching Team leaderboard row | 682626 | |
| type | string | No | Row group Allowed values: Cat, Pit, Pitching Team. | ||
| game_type | string | No | Game type Allowed values: Regular, Playoff, All. | ||
| start_year | integer | No | First season, 2018 through current season Minimum: 2018. Maximum: 2026. | ||
| end_year | integer | No | Last season, start_year through current season Minimum: 2018. Maximum: 2026. | ||
| split | string | No | Split details by season Allowed values: yes, no. | ||
| team | string | No | Optional team id or split selector from mlb_discovery | ||
| with_team_only | boolean | No | For a specific Cat or Pit team, include only rows for that team; defaults true | ||
| 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-catcher-blocking-details?entity_id=682626&type=Cat&game_type=Regular&split=yes&with_team_only=true&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"board": "catcher-blocking-details",
"entity_id": 682626,
"type": "Cat",
"game_type": "Regular",
"season_start": "2026",
"season_end": "2026",
"split": "no",
"total": 3319,
"offset": 0,
"limit": 1,
"rows": [
{
"game_pk": 123,
"catcher_id": 682626,
"location_x": 0.1,
"location_y": 2.2
}
],
"source_url": "https://baseballsavant.mlb.com/leaderboard/services/catcher-blocking/682626?…",
"fetched_at": "2026-09-30T00:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastCatcherBlockingDetailsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| board | string | No | catcher-blocking-details | |||
| entity_id | integer | No | 682626 | |||
| fetched_at | string | No | ||||
| limit | integer | No | 100 | |||
| offset | integer | No | 0 | |||
| rows | array | No | ||||
| source_url | string | No | ||||
| total | integer | No | 3319 |
| 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-catcher-blocking-details?entity_id=682626&type=Cat&game_type=Regular&split=yes&with_team_only=true&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"