---
title: "List at_bats for MLB"
method: GET
path: "/api/v1/mlb/at_bats"
tags: ["MLB"]
---

# List at_bats for MLB

`GET /api/v1/mlb/at_bats`

## Request

- Base URL: `https://api.stat-api.com`
- URL: `https://api.stat-api.com/api/v1/mlb/at_bats`
- Auth: HTTP bearer

## Query parameters

- `game_id` integer
- `limit` integer
- `from_id` integer
- `format` 'json' | 'csv'

## Response `200`

at_bats rows matching the declared filter set.

- MLBAtBatsListResponse
  - `at_bats` MLBAtBats[], required
    - `at_bat_number` integer, required
    - `balls` integer, required
    - `bat_side` string, nullable: Batter side for this matchup (L/R) — per-PA truth, resolves switch hitters
    - `batter_id` integer, required
    - `end_outs` integer, required
    - `end_runners` integer, required
    - `end_time` string, date-time, nullable: Wall-clock end of the plate appearance, as the league records it
    - `expected_batting_avg` number, double, nullable
    - `expected_woba` number, double, nullable
    - `game_id` integer, required
    - `hit_coord_x` number, float, nullable
    - `hit_coord_y` number, float, nullable
    - `hit_distance` integer, nullable
    - `hit_exit_velocity` number, float, nullable
    - `hit_launch_angle` number, float, nullable
    - `hit_location` string, nullable
    - `hit_type` string, nullable
    - `id` integer, required: Primary Key
    - `inning_id` integer, required
    - `is_barrel` boolean, nullable
    - `is_flare_burner` boolean, nullable: Launch angle 10-25 AND exit velocity < 95
    - `is_hard_hit` boolean, nullable
    - `is_solid_contact` boolean, nullable: Launch angle 20-25 AND exit velocity 95-100
    - `is_sweet_spot` boolean, nullable: Launch angle between 8-32 degrees
    - `is_topped` boolean, nullable: Launch angle < 10 AND exit velocity < 90
    - `is_under` boolean, nullable: Launch angle less than 10 degrees
    - `launch_speed_angle_zone` integer, nullable
    - `pitch_count` integer, required
    - `pitch_hand` string, nullable: Pitcher hand for this matchup (L/R)
    - `pitcher_id` integer, required
    - `result` string, required
    - `runs_scored` integer, required
    - `spray_angle` number, float, nullable: Horizontal angle from center field (degrees)
    - `start_outs` integer, required
    - `start_runners` integer, required
    - `start_time` string, date-time, nullable: Wall-clock start of the plate appearance, as the league records it
    - `statcast_quality_score` number, double, nullable: Statcast data quality score (0.0-1.0)
    - `strikes` integer, required
    - `tracking_confidence` number, double, nullable: Confidence in tracking data accuracy
  - `has_more` boolean, required: True when a full page came back, so more rows can exist.
  - `limit` integer, required: Page size used for this response.
  - `next_from_id` integer, nullable, required: Pass this as `from_id` on the next request to page forward. `null` on the terminal page, and on a first page requested without `from_id` (that page uses the default sort): to walk every row, start with `from_id=0`.

## Other responses

- `400`: No declared filter set was satisfied by the request — see `accepted` in the body for the valid combinations.

---

[API](https://skmtc.dev/stat-api/apis/sports-db-public-api.md) · [All operations](https://skmtc.dev/stat-api/apis/sports-db-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/stat-api/apis/sports-db-public-api/revisions/601ff9eaca3f?raw)
