MLB API endpoint
Returns catcher, pitcher, catching-team, or league Catcher Blocking rows. Filters cover game type, season range, minimum opportunities, team/stint, and local table sorting. Use mlb_discovery for the exact filter sets. Row detail events are available from mlb-statcast-catcher-blocking-details; chart playback and CSV export controls are not data rows.
/mlb/statcast-catcher-blockingReturns Baseball Savant Catcher Blocking rows for the selected table group. Use /api/v1/mlb/discovery to retrieve the same accepted group, game type, season, minimum, team, sort, and direction values.
type: Cat, Pit, Pitching Team, or League. Defaults to Cat.game_type: Regular, Playoff, or All. Defaults to Regular.min: q, 1, 50, 100, 250, 500, 1000, 2000, 3000, 4000, or 5000. Defaults to q; applies to Cat and Pit only.start_year: first season. Accepted values currently 2018, 2019, 2020, 2021, 2022, 2023, 2024, 2025, and 2026; defaults to current season.end_year: last season from start_year through current season; same accepted season values as start_year.split: yes or no. Defaults to no.team: omit for all teams, split to separate team stints, or one of the upstream 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. Team filtering is unavailable for League.with_team_only: true or false; valid only for a numeric team with Cat or Pit. Defaults to upstream's true setting.sort: entity_name, team_name, start_year, N, catcher_runs, diff_runner_pbwp, N_runner_pbwp, x_runner_pbwp, diff_rate_runner_pbwp, freq_pbwp_1_easy, freq_pbwp_2_medium, freq_pbwp_3_tough, diff_runner_pbwp_1_easy, diff_runner_pbwp_2_medium, or diff_runner_pbwp_3_tough. Defaults to diff_runner_pbwp.sort_dir: asc or desc; defaults to desc.limit: rows per page, 1–500; defaults to 100.offset: zero-based row offset, 0–10000; defaults to 0.Minimum thresholds are rejected for Pitching Team and League. with_team_only is rejected unless a specific numeric team is selected for catcher or pitcher rows. Sorting and pagination are local after the complete filtered upstream table is read. Use a row's entity_id with the details route to fetch its play-location rows.
The first-party 3D playback and CSV export controls are separate representations and are not returned here.
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| N | 40 | 987 to 4,812, median 2,522 |
| N_runner_pbwp | 40 | 3 to 32, median 18 |
| catcher_runs | 40 | 0 to 4, median 1 |
| diff_rate_runner_pbwp | 40 | -0.05 to 0.22, median 0.05 |
| diff_runner_pbwp | 40 | -1 to 15, median 4 |
| diff_runner_pbwp_1_easy | 40 | -4.41 to 9.91, median 2.2 |
| diff_runner_pbwp_2_medium | 40 | -2.74 to 7.13, median 1.33 |
| diff_runner_pbwp_3_tough | 40 | -3.94 to 3.91, median 0.1 |
| entity_id | 40 | |
| entity_name | 40 | “Kirk, Alejandro” and 39 other values |
| freq_pbwp_1_easy | 40 | 0.94 to 0.98, median 0.96 |
| freq_pbwp_2_medium | 40 | 0.02 to 0.05, median 0.03 |
| freq_pbwp_3_tough | 40 | 0 to 0.02, median 0.01 |
| key_name_abbrev | 40 | |
| key_team_id | 40 | |
| num_teams | 40 | 1 to 3, median 1 |
| start_year | 40 | 2,026 |
| team_image_url | 40 | “https://www.mlbstatic.com/team-logos/141.svg” and 23 other values |
| team_name | 40 | “TOR” and 23 other values |
| team_selection_id | 40 | |
| x_runner_pbwp | 40 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| type | string | No | Leaderboard group Allowed values: Cat, Pit, Pitching Team, League. | ||
| game_type | string | No | Game type Allowed values: Regular, Playoff, All. | ||
| min | string | No | Minimum opportunities; applies to Cat and Pit Allowed values: q, 1, 50, 100, 250, 500, 1000, 2000, 3000, 4000, 5000. | ||
| 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 rows by season Allowed values: yes, no. | ||
| team | string | No | Optional team filter: split or an MLB team id from mlb_discovery | ||
| with_team_only | boolean | No | For a specific Cat or Pit team, include only rows for that team; defaults true | ||
| sort | string | No | Local sort field from mlb_discovery Allowed values: entity_name, team_name, start_year, N, catcher_runs, diff_runner_pbwp, N_runner_pbwp, x_runner_pbwp, diff_rate_runner_pbwp, freq_pbwp_1_easy, freq_pbwp_2_medium, freq_pbwp_3_tough, diff_runner_pbwp_1_easy, diff_runner_pbwp_2_medium, diff_runner_pbwp_3_tough. | ||
| 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 Minimum: 0. Maximum: 10000. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/mlb/statcast-catcher-blocking?type=Cat&game_type=Regular&min=q&split=yes&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": "catcher-blocking",
"type": "Cat",
"game_type": "Regular",
"minimum": "q",
"season_start": "2026",
"season_end": "2026",
"split": "no",
"total": 74,
"sort": "diff_runner_pbwp",
"sort_dir": "desc",
"offset": 0,
"limit": 1,
"rows": [
{
"entity_id": 682626,
"entity_name": "Francisco Alvarez"
}
],
"source_url": "https://baseballsavant.mlb.com/leaderboard/catcher-blocking?…",
"fetched_at": "2026-09-30T00:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastCatcherBlockingResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| board | string | No | catcher-blocking | |||
| fetched_at | string | No | ||||
| game_type | string | No | Regular | |||
| minimum | string | No | q | |||
| rows | array | No | ||||
| source_url | string | No | ||||
| total | integer | No | 74 | |||
| type | string | No | Cat |
| 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?type=Cat&game_type=Regular&min=q&split=yes&with_team_only=true&sort=entity_name&sort_dir=asc&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"