---
title: "Get Baseball Savant Catcher Framing leaderboard rows"
method: GET
path: "/mlb/statcast-catcher-framing"
tags: ["MLB"]
---

# Get Baseball Savant Catcher Framing leaderboard rows

`GET /mlb/statcast-catcher-framing`

## Request

- Base URL: `https://api.crawlora.net/api/v1`
- URL: `https://api.crawlora.net/api/v1/mlb/statcast-catcher-framing`
- Auth: API key in header `x-api-key`

Returns the Catcher Framing table for catcher, catching-team, batter, batting-team, pitcher, or league groups. Supports observed game, season, one-team, pitch/result minimum, date, bat-side, pitch-hand, pitch-type, ball/strike, and call-model filters, plus local sort and pagination. Use mlb_discovery for exact enum values; chart-only groupings and player comparison controls are excluded.

## Query parameters

- `type` 'catcher' | 'catching-team' | 'batter' | 'batting-team' | 'pitcher' | 'league'
- `game_type` 'Any' | 'Playoff' | 'Regular'
- `team` '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'
- `min_pitches` 'q' | '100' | '250' | '500' | '750' | '1000' | '1250' | '1500'
- `min_results` 1 | 25 | 50 | 100 | 250 | 500 | 750 | 1000 | 1250 | 1500
- `season_start` 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026
- `season_end` 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | 2026
- `date_start` string, date
- `date_end` string, date
- `bat_side` 'L' | 'R'
- `pitch_hand` 'L' | 'R'
- `pitch_type` 'FF' | 'SI' | 'FC' | 'CH' | 'FS' | 'FO' | 'SC' | 'CU' | 'SL' | 'ST' | 'SV' | 'KN'
- `ball_strike` 'in' | 'out'
- `call` 'original' | 'final'
- `sort` 'name' | 'team_name' | 'pitches' | 'pitches_shadow' | 'rv_tot' | 'pct_tot' | 'pitches_shadow_top' | 'rv_shadow_top' | 'pct_shadow_top' | 'pitches_shadow_bot' | 'rv_shadow_bot' | 'pct_shadow_bot' | 'pitches_11' | 'rv_11' | 'pct_11' | 'pitches_12' | 'rv_12' | 'pct_12' | 'pitches_13' | 'rv_13' | 'pct_13' | 'pitches_14' | 'rv_14' | 'pct_14' | 'pitches_16' | 'rv_16' | 'pct_16' | 'pitches_17' | 'rv_17' | 'pct_17' | 'pitches_18' | 'rv_18' | 'pct_18' | 'pitches_19' | 'rv_19' | 'pct_19' | 'pitches_heart' | 'rv_heart' | 'pct_heart' | 'pitches_chwa' | 'rv_chwa' | 'pct_chwa' | 'pitches_bin_minus10' | 'pitches_bin_minus9' | 'pitches_bin_minus8' | 'pitches_bin_minus7' | 'pitches_bin_minus6' | 'pitches_bin_minus5' | 'pitches_bin_minus4' | 'pitches_bin_minus3' | 'pitches_bin_minus2' | 'pitches_bin_minus1' | 'pitches_bin_0' | 'pitches_bin_1' | 'pitches_bin_2' | 'pitches_bin_3' | 'pitches_bin_4' | 'pitches_bin_5' | 'pitches_bin_6' | 'pitches_bin_7' | 'pitches_bin_8' | 'pitches_bin_9' | 'pct_bin_minus10' | 'pct_bin_minus9' | 'pct_bin_minus8' | 'pct_bin_minus7' | 'pct_bin_minus6' | 'pct_bin_minus5' | 'pct_bin_minus4' | 'pct_bin_minus3' | 'pct_bin_minus2' | 'pct_bin_minus1' | 'pct_bin_0' | 'pct_bin_1' | 'pct_bin_2' | 'pct_bin_3' | 'pct_bin_4' | 'pct_bin_5' | 'pct_bin_6' | 'pct_bin_7' | 'pct_bin_8' | 'pct_bin_9'
- `sort_dir` 'asc' | 'desc'
- `limit` integer
- `offset` integer

## Headers

- `x-api-key` string, required

## Response `200`

OK

- MlbStatcastCatcherFramingResponseDoc
  - `board` string
  - `fetched_at` string
  - `game_type` string
  - `limit` integer
  - `offset` integer
  - `rows` object[]
  - `source_url` string
  - `total` integer
  - `type` string

## Other responses

- `400`: Bad Request
- `404`: Not Found
- `503`: Service Unavailable

---

[API](https://skmtc.dev/crawlora/apis/crawlora-api.md) · [All operations](https://skmtc.dev/crawlora/apis/crawlora-api/llms.txt) · [OpenAPI document](https://skmtc.dev/crawlora/apis/crawlora-api/revisions/0497899e2016?raw)
