MLB API endpoint
Returns season, venue, distance, distance-all, raw, or dimensions rows from Baseball Savant. Query filters are conditional on type and are live-echo validated; local sorting and pagination are applied to returned rows. The fence-stat and allDiffs controls only change display columns and do not change row data; CSV and linked venue detail pages are separate surfaces.
/mlb/statcast-park-factorsParameters:
type — year, venue, distance, distance-all, raw, or dimensions. Defaults to year.year — Mode-specific season. year, venue, and raw accept 2026, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2012, 2011, 2010, 2009, 2008, 2007, 2006, 2005, 2004, 2003, 2002, 2001, 2000, 1999, 1998, 1997, 1996, 1995, 1994, 1993, 1992, 1991, 1990, 1989, 1988, 1987, 1986, 1985, 1984, 1983, 1982, 1981, 1980, 1979, 1978, 1977, 1976, 1975, 1974, 1973, 1972, 1971, 1970, 1969; distance accepts 2026, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016; dimensions accepts 2026, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015. These are current-season-bounded; use the matching arrays in mlb_discovery as seasons advance.bat_side — R, L, or the empty value "" for both sides; it can also be omitted for both sides. Applies to year, venue, and raw.condition — All, Day, Night, Roof Closed, or Open Air. Applies to year and venue; defaults to All.rolling — 3, 2, or 1 years. Applies to year and venue; defaults to 3.stat — Venue metric: index_wOBA, index_wOBAcon, index_xwOBAcon, index_BACON, index_xBAcon, index_hardhit, index_runs, index_OBP, index_Hits, index_1B, index_2B, index_3B, index_HR, index_BB, or index_SO. Defaults to index_wOBA.parks — mlb or all; applies to year, venue, and distance-all. distance-all defaults to all; the other supported modes default to mlb.sort — Optional local field name that must appear in the selected mode's returned row objects. Omit to preserve Baseball Savant's row order.sort_dir — asc or desc; defaults to desc when sorting. Requires sort.limit — Rows per page, 1–500; defaults to 100.offset — Zero-based row offset, 0–10000; defaults to 0.Filters are conditional by table mode. distance-all has no selectable year; the source includes a year query key, but changing it was verified to leave the rows byte-identical. The fenceStatType (distance/height) and allDiffs=1 controls change the displayed columns only; they do not change the returned row data and are not API filters. Sorting is applied locally after extraction. CSV, visualizations, and the linked venue detail pages are separate formats/surfaces.
| Field | Filled in, of 29 checked | Values in the sample |
|---|---|---|
| grouping_venue_conditions | 29 | All in all 29 |
| index_1b | 29 | |
| index_2b | 29 | |
| index_3b | 29 | |
| index_bacon | 29 | |
| index_bb | 29 | |
| index_hardhit | 29 | |
| index_hits | 29 | |
| index_hr | 29 | |
| index_obp | 29 | |
| index_runs | 29 | |
| index_so | 29 | |
| index_woba | 29 | |
| index_wobacon | 29 | |
| index_wobatto | 29 | |
| index_xbacon | 29 | |
| index_xwobacon | 29 | |
| is_sport_milb | 29 | 0 |
| is_sport_mlb | 29 | 1 |
| key_bat_side | 29 | |
| key_is_year_rolling | 29 | |
| key_num_years_rolling | 29 | |
| key_year | 29 | |
| main_team_id | 29 | |
| n_pa | 29 | 37,433 to 58,810, median 56,135 |
| name_display_club | 29 | “Giants” and 28 other values |
| sport_id | 29 | |
| venue_id | 29 | |
| venue_name | 29 | “Oracle Park” and 28 other values |
| year_range | 29 | 2024-2026 in all 29 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| type | string | No | Park Factors table mode Allowed values: year, venue, distance, distance-all, raw, dimensions. | ||
| year | string | No | Mode-specific season; see endpoint markdown and mlb_discovery for exact values | ||
| bat_side | string | No | Optional batter side for year, venue, or raw mode Allowed values: R, L. | ||
| condition | string | No | Park condition for year and venue modes Allowed values: All, Day, Night, Roof Closed, Open Air. | ||
| rolling | string | No | Rolling year count for year and venue modes Allowed values: 1, 2, 3. | ||
| stat | string | No | Venue mode metric Allowed values: index_wOBA, index_wOBAcon, index_xwOBAcon, index_BACON, index_xBAcon, index_hardhit, index_runs, index_OBP, index_Hits, index_1B, index_2B, index_3B, index_HR, index_BB, index_SO. | ||
| parks | string | No | Park population selector Allowed values: mlb, all. | ||
| sort | string | No | Local row field present in the selected mode's data | ||
| sort_dir | string | No | Local sort direction Allowed values: asc, desc. | ||
| limit | integer | No | Rows per page (1-500) Minimum: 1. Maximum: 500. | ||
| offset | integer | No | Zero-based row offset Minimum: 0. Maximum: 10000. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/mlb/statcast-park-factors?type=year&bat_side=R&condition=All&rolling=1&stat=index_wOBA&parks=mlb&sort_dir=asc&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"board": "statcast-park-factors",
"type": "year",
"year": "2026",
"condition": "All",
"rolling": "3",
"parks": "mlb",
"total": 29,
"offset": 0,
"limit": 1,
"rows": [
{
"venue_id": "17",
"venue_name": "Wrigley Field",
"main_team_id": "112",
"index_wOBA": "98"
}
],
"source_url": "https://baseballsavant.mlb.com/leaderboard/statcast-park-factors?...",
"fetched_at": "2026-09-30T00:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastParkFactorsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| board | string | No | statcast-park-factors | |||
| rows | array | No | ||||
| total | integer | No | 29 | |||
| type | string | No | year |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 404 | Not Found | #/definitions/app.Response |
| 503 | Service Unavailable | #/definitions/app.Response |
Use environment variables for secrets and keep Crawlora API keys server-side.
curl -X GET "https://api.crawlora.net/api/v1/mlb/statcast-park-factors?type=year&bat_side=R&condition=All&rolling=1&stat=index_wOBA&parks=mlb&sort_dir=asc&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"