MLB spray chart data
Where every ball in play went, with its trajectory (ground ball, line drive, fly ball, pop-up) and result, for any batter or team. REST or MCP.
FastballAPI serves the location of every ball put in play on ESPN's field diagram, with its trajectory and the result of the plate appearance.
get_spray_chart groups a batter's or team's season by field and trajectory with hit rates, and include_balls returns every ball's location to draw the chart. 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 | Located balls in play |
|---|---|---|---|
| 2026 | 2,448 | 100% | 125,494 |
| 2025 | 2,477 | 100% | 127,276 |
| 2024 | 2,472 | 100% | 126,345 |
| 2023 | 2,471 | 100% | 126,264 |
| 2022 | 2,470 | 100% | 126,165 |
| 2021 | 2,466 | 100% | 123,499 |
| 2020 | 951 | 100% | 46,504 |
| 2019 | 2,465 | 100% | 127,377 |
| 2018 | 2,449 | 97% | 123,185 |
| 2017 | 2,471 | 98% | 127,296 |
| 2016 | 2,464 | 98% | 127,822 |
| 2015 | 2,486 | 98% | 130,433 |
How to get it
get_spray_chart, 10 credits a call. A full 2026 season is 125,494 calls and 1,254,940 credits.
curl -X POST https://mcp.fastballapi.com/v1/get_spray_chart \
-H "Content-Type: application/json" \
-H "x-api-key: YOUR_API_KEY" \
-d '{
"team": "NYY",
"season": 2024
}'What comes back
| season | |
| balls_in_play | |
| by_trajectory[] | List of objects |
| by_trajectory[].trajectory | |
| by_trajectory[].balls | |
| by_trajectory[].hits | |
| by_trajectory[].hr | |
| by_trajectory[].hit_rate | |
| by_field[] | List of objects |
| by_field[].field | |
| by_field[].balls | |
| by_field[].hits | |
| by_field[].hr | |
| by_field[].hit_rate |
Every field and a real response: get_spray_chart docs.
Questions
What do the coordinates mean?
Pixels on ESPN's 250 by 250 field diagram, with home plate near (125, 205) and y decreasing toward center field. They give direction and depth, not a measured distance.
Do you have exit velocity?
No. Trajectory and location only.
Is it free?
Every account starts with 500 free credits and no card. A spray chart is 10 credits.
What it will not do
- No exit velocity, launch angle or distance.
- include_balls returns up to 3,000 balls per call.
Works with
Start with 500 free credits
No card. REST or MCP.