MLB API endpoint
Returns the six embedded Batter/Pitcher rolling-window tables, filtered by metric, role, and plate-appearance window. Each group is sorted by the selected metric delta in the same direction as the first-party page and paginated independently. The upstream page has no season, team, or game-type filters.
/mlb/statcast-rollingReturns Baseball Savant's embedded rolling plate-appearance leaderboards. The
upstream page contains six groups: Batter and Pitcher at 50, 100, and 250 PA.
Each row includes player and team identifiers plus previous/current window
values and deltas for all six metrics. Rows are sorted by the selected metric's
delta in the same direction as the upstream page. limit and offset apply
independently to each returned group.
Query parameters:
metric: xwoba, woba, ba, xba, slg, or xslg; defaults to xwoba.role: Batter or Pitcher; omit to return both roles.window_pa: 50, 100, or 250; omit to return all windows.limit: rows per group, 1–500; defaults to 100.offset: zero-based offset per group, 0–5000; defaults to 0.The source has no season, team, game-type, or minimum qualifier filters. Its player rolling-breakdown charts are a separate surface.
| Field | Filled in, of 1 checked | Values in the sample |
|---|---|---|
| role | 1 | “Batter” |
| window_pa | 1 | 50 |
| total | 1 | 432 |
| offset | 1 | |
| limit | 1 | |
| rows | 1 | median 40 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| metric | string | No | Displayed metric Allowed values: xwoba, woba, ba, xba, slg, xslg. | ||
| role | string | No | Optional player role; omit for both Allowed values: Batter, Pitcher. | ||
| window_pa | string | No | Optional rolling plate-appearance window; omit for all Allowed values: 50, 100, 250. | ||
| limit | integer | No | Rows per group (1-500) Minimum: 1. Maximum: 500. | ||
| offset | integer | No | Zero-based row offset per group (0-5000) Minimum: 0. Maximum: 5000. | ||
| x-api-key (header) | string | Yes | API key required |
curl -X GET "https://api.crawlora.net/api/v1/mlb/statcast-rolling?metric=xwoba&role=Batter&window_pa=50&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"metric": "xwoba",
"total": 2509,
"offset": 0,
"limit": 100,
"source_url": "https://baseballsavant.mlb.com/rolling-leaderboard?type=xwoba",
"fetched_at": "2026-09-30T00:00:00Z",
"groups": [
{
"role": "Batter",
"window_pa": 50,
"total": 451,
"offset": 0,
"limit": 100,
"rows": [
{
"player_name": "Example Player",
"player_id": 123456,
"player_team_id": 147,
"last_x_xwoba": 0.4,
"penultimate_x_xwoba": 0.3,
"xwoba_delta": 0.1
}
]
}
]
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastRollingResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| fetched_at | string | No | ||||
| groups | array | No | ||||
| groups[].limit | integer | No | ||||
| groups[].offset | integer | No | ||||
| groups[].role | string | No | ||||
| groups[].rows | array | No | ||||
| groups[].total | integer | No | ||||
| groups[].window_pa | integer | No | ||||
| limit | integer | No | 100 | |||
| metric | string | No | xwoba | |||
| offset | integer | No | 0 | |||
| source_url | string | No | ||||
| total | integer | No | 2509 |
| 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-rolling?metric=xwoba&role=Batter&window_pa=50&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"