---
title: "Get Baseball Savant bat-tracking rows"
method: GET
path: "/mlb/statcast-bat-tracking"
tags: ["MLB"]
---

# Get Baseball Savant bat-tracking rows

`GET /mlb/statcast-bat-tracking`

## Request

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

Returns batter, batting-team, pitcher, pitching-team, or league bat-tracking rows with the live page's season, game type, swing threshold, date, side, contact, attack zone, team, pitch, count, and grouping filters. Use mlb_discovery for the same complete value sets. Multi-value filters are passed as repeated query parameters.

## Query parameters

- `type` 'batter' | 'batting-team' | 'pitcher' | 'pitching-team' | 'league'
- `season_start` '2023' | '2024' | '2025' | '2026'
- `season_end` '2023' | '2024' | '2025' | '2026'
- `game_type` 'Any' | 'Playoff' | 'Regular'
- `min_swings` 'q' | '1' | '5' | '10' | '25' | '50' | '100' | '200' | '500' | '1000'
- `min_group_swings` '1' | '5' | '10' | '25' | '50' | '100' | '200' | '500' | '1000'
- `date_start` string
- `date_end` string
- `bat_side` 'L' | 'R'
- `contact_type` '2' | '4' | '9'
- `is_hard_hit` '1' | '0'
- `attack_zone` '0' | '1' | '1.1' | '2' | '3'
- `pitch_hand` 'L' | 'R'
- `teams` string[]
- `pitch_types` string[]
- `counts` string[]
- `group_by` string[]
- `sort` 'avg_batter_x_position' | 'avg_batter_y_position' | 'avg_intercept_x_vs_batter' | 'avg_intercept_y_vs_batter' | 'avg_foot_sep0' | 'avg_foot_angle0' | 'attack_direction_pullopp' | 'rate_ideal_attack_angle' | 'attack_angle' | 'avg_plane_vertical_angle' | 'avg_sweetspot_speed_mph' | 'avg_sweetspot_speed_mph_qualified' | 'avg_is_sweetspot_speed_high' | 'avg_is_sweetspot_speed_high_qualified' | 'squared_up' | 'squared_up_qualified' | 'squared_up_per_bat_contact' | 'squared_up_per_swing' | 'squared_up_with_speed' | 'squared_up_with_speed_qualified' | 'squared_up_with_speed_per_bat_contact' | 'squared_up_with_speed_per_swing' | 'swing_length_qualified' | 'swords' | 'swings_qualified' | 'percent_qualified' | 'hit_into_play_qualified' | 'bat_contact' | 'bat_contact_qualified' | 'count' | 'delta_run_exp' | 'hit_into_play_per_swing' | 'pitcher_delta_run_exp' | 'strikes_swinging_qualified' | 'sweetspot_speed_high_qualified' | 'strike_swinging_per_swing' | 'id' | 'name' | 'batter_name' | 'b_name_display_first_last' | 'savant_batter_id' | 'team_id' | 'team_name' | 'side' | 'n_sides' | 'n_teams' | 'bat_side_formatted'
- `sort_dir` 'asc' | 'desc'
- `limit` integer
- `offset` integer

## Headers

- `x-api-key` string, required

## Response `200`

OK

- MlbStatcastBatTrackingResponseDoc
  - `board` string
  - `date_end` string
  - `date_start` string
  - `fetched_at` string
  - `game_type` string
  - `limit` integer
  - `min_group_swings` string
  - `min_swings` string
  - `offset` integer
  - `rows` object[]
  - `season_end` string
  - `season_start` string
  - `sort` string
  - `sort_dir` string
  - `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/afac9b012a27?raw)
