Endpoint Playground
Returns batter, batting-team, or league Swing Path and Attack Angle rows with the first-party season, game, swing, team, date, side, contact, hard-hit, attack-zone, and pitcher-hand filters. Use mlb_discovery for exact values.
14 Oct 2026: 40 rows; 23 fields had a value in every checked item.
Sample value profiles: bat_side_formatted: L (19), R (18), S (3); attack_angle: 1.1 to 19.39, median 10.04; b_name_display_first_last: “Caminero, Junior” and 39 other values.
curl 'https://api.crawlora.net/api/v1/mlb/statcast-swing-path?type=batter&season_start=2023&season_end=2023&game_type=Any&min_swings=q&min_group_swings=1&team_id=108&bat_side=L&contact_type=2&is_hard_hit=1&attack_zone=0&pitch_hand=L&sort=name&sort_dir=asc' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| type | string | No | batter | Row type |
| season_start | string | No | 2023 | First season |
| season_end | string | No | 2023 | Last season; must be >= season_start |
| game_type | string | No | Any | Game type |
| min_swings | string | No | q | Minimum swing threshold |
| min_group_swings | string | No | 1 | Minimum swings per group |
| team_id | string | No | 108 | Optional MLB team id |
| date_start | string | No | Optional range start in YYYY-MM-DD | |
| date_end | string | No | Optional range end in YYYY-MM-DD | |
| bat_side | string | No | L | Batter side |
| contact_type | string | No | 2 | Contact type |
| is_hard_hit | string | No | 1 | Hard-hit filter |
| attack_zone | string | No | 0 | Attack zone |
| pitch_hand | string | No | L | Pitcher hand |
| sort | string | No | name | Local sort field |
| sort_dir | string | No | asc | Sort direction |
| limit | integer | No | Rows per page (1-500) | |
| offset | integer | No | Zero-based row offset |
{
"code": 0,
"data": {
"board": "swing-path-attack-angle",
"type": "batter",
"total": 1,
"sort": "avg_sweetspot_speed_mph",
"sort_dir": "desc",
"offset": 0,
"limit": 1,
"rows": [
{
"name": "Sample Player",
"team_name": "NYY",
"n_swings": 120
}
]
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.