---
title: "Get Baseball Savant Pitch Movement rows"
method: GET
path: "/mlb/statcast-pitch-movement"
tags: ["MLB"]
---

# Get Baseball Savant Pitch Movement rows

`GET /mlb/statcast-pitch-movement`

## Request

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

Returns pitcher-level pitch movement table rows for the selected season, pitch type, throwing hand, and minimum pitch count. Sorting and pagination are applied locally. The page's X/Z visualization axes and CSV download are separate presentation formats and are not returned by this JSON table contract.

## Query parameters

- `year` '2026' | '2025' | '2024' | '2023' | '2022' | '2021' | '2020' | '2019' | '2018' | '2017'
- `pitch_type` 'FF' | 'CH' | 'CU' | 'FC' | 'FO' | 'KN' | 'SC' | 'SI' | 'SL' | 'SV' | 'FS' | 'ST' | 'ALL'
- `hand` 'R' | 'L'
- `min` 'q' | '50' | '100' | '250' | '500' | '750' | '1000' | '1500' | '2000' | '2500' | '3000'
- `sort` 'pitcher_name' | 'team_name_abbrev' | 'pitch_hand' | 'pitch_type_name' | 'pitches_thrown' | 'avg_speed' | 'pitcher_break_z' | 'diff_z' | 'pitcher_break_x_hidden' | 'diff_x' | 'pitcher_break_z_induced' | 'diff_z_induced_standard' | 'diff_x_standard'
- `sort_dir` 'asc' | 'desc'
- `limit` integer
- `offset` integer

## Headers

- `x-api-key` string, required

## Response `200`

OK

- MlbStatcastPitchMovementResponseDoc
  - `board` string
  - `hand` string
  - `min` string
  - `pitch_type` string
  - `rows` object[]
  - `total` integer
  - `year` 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/afac9b012a27?raw)
