MLB pitch-by-pitch data
MLB pitch-by-pitch since 2015, every pitch from 2018: pitch type, velocity, location and the count, with the plate appearance. REST or MCP.
FastballAPI serves MLB pitch-by-pitch data: for each pitch the count it came in, the pitch type, its velocity, its location and the result, joined to the pitcher, the batter and the plate appearance.
get_pitches returns a game's pitches in order or a pitcher's or batter's season, and get_pitch_mix rolls a pitcher's season into an arsenal: usage, velocity, whiff rate and ball rate per pitch type. The table below is read from the database.
Coverage by season
Counted from the database on October 8, 2026: finished regular-season and playoff games.
| Season | Games | Covered | Pitches |
|---|---|---|---|
| 2026 | 2,448 | 100% | 720,229 |
| 2025 | 2,477 | 100% | 724,254 |
| 2024 | 2,472 | 100% | 722,359 |
| 2023 | 2,471 | 100% | 729,728 |
| 2022 | 2,470 | 100% | 720,142 |
| 2021 | 2,466 | 100% | 720,573 |
| 2020 | 951 | 100% | 279,661 |
| 2019 | 2,465 | 100% | 743,237 |
| 2018 | 2,449 | 100% | 726,333 |
| 2017 | 2,471 | 99% | 723,690 |
| 2016 | 2,464 | 98% | 711,823 |
| 2015 | 2,486 | 99% | 713,008 |
How to get it
get_pitches, 10 credits a call. A full 2026 season is 2,448 calls and 24,480 credits, which fits in one month of Pro ($49/mo).
curl -X POST https://mcp.fastballapi.com/v1/get_pitches \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"game_id": "401569531",
"limit": 2000
}'What comes back
| pitches[] | List of objects |
| pitches[].game_id | |
| pitches[].at_bat_id | |
| pitches[].pitch_number | |
| pitches[].inning | |
| pitches[].half | |
| pitches[].pitcher_id | |
| pitches[].batter_id | |
| pitches[].balls | |
| pitches[].strikes | |
| pitches[].pitch_type | |
| pitches[].pitch_type_name | |
| pitches[].velocity | |
| pitches[].px |
Every field and a real response: get_pitches docs.
Questions
How far back does the pitch data go?
To 2015, every season in the table below. Each season's pitch rows are counted against the box-score pitch counts: from 2018 they match to within 0.05%, and 2015 to 2017 are included too, with about 98 to 99% of each season's pitches. Pitch type and velocity are on 96% or more of each season's pitches, and 99.8% or more from 2020. Automatic balls and strikes (intentional walks, pitch-timer violations) are not pitches.
Is this Statcast?
No. It is public ESPN data: type, velocity, location and count, not spin rate or movement.
Can I get a pitcher's arsenal in one call?
Yes. get_pitch_mix returns each pitch type's usage, average and top velocity, whiff rate per swing and ball rate for a season.
Is it free?
Every account starts with 500 free credits and no card. A game's pitches are 10 credits.
What it will not do
- No spin rate, movement or release point.
- Pitch locations are in ESPN's diagram frame, as sent.
- Updated the morning after a game, not live.
Works with
Start with 500 free credits
No card. REST or MCP.