MLB API endpoint
Returns today's birthday tables for batters and pitchers plus the selected upcoming-birthday table. Type and minimum-games are first-party filters; date must fall inside the live page's season date range. The active-player toggle, sorting, and pagination are applied locally. The MLB Terms of Use notes a private, non-commercial-use boundary and restrictions on redistribution; this endpoint exposes statistical rows only and excludes media, graphics, and CSV.
/mlb/statcast-birthday-indexParameters:
type — Upcoming table type: batter or pitcher. Defaults to batter.min_games — Minimum games played on a player's birthday: 1, 2, 3, 5, 8, or 10. Defaults to 1.date — Optional birthday in M-D form, such as 5-2. The accepted season window is read from the live page; out-of-range dates are rejected.show_inactives — Include inactive and deceased players in the upcoming table. Defaults to false. Today's batter and pitcher lists always include the rows returned by the upstream page.sort — Local table column. Shared values: player_name, is_player_active, birth_day_noyear_sort_hidden, age, birthday_index, birthday_games, birthday_pa, birthday_BA, non_birthday_BA, birthday_BA_diff, birthday_OPS, non_birthday_OPS, birthday_OPS_diff, birthday_wOBA, non_birthday_wOBA, birthday_wOBA_diff. Upcoming-only value: daysUntil (not available when date is selected). Batter-only values: birthday_hits, birthday_hit_1b, birthday_hit_2b, birthday_hit_3b, birthday_hit_hr. Pitcher-only values: birthday_hits, birthday_strikeout, birthday_k_percent, birthday_walk, birthday_bb_percent.sort_dir — asc or desc. When omitted, the route uses the column's first-party initial direction.limit — Rows per page, 1–500; defaults to 100.offset — Zero-based row offset, 0–5000; defaults to 0.The response includes both current-day lists (today_batters, today_pitchers) and the filtered upcoming rows. Filtering, sorting, and pagination apply to rows. The upstream silently resets unsupported closed-set values and dates, so this endpoint rejects a request if the live page does not confirm the requested type, threshold, or date.
MLB's official Terms of Use describes its digital services as private, non-commercial and restricts redistribution, modification, and derivative works. This endpoint returns statistical rows only and omits media, graphics, and CSV; review MLB's terms before expanding downstream redistribution.
| Field | Filled in, of 7 checked | Values in the sample |
|---|---|---|
| actual_birthday | 7 | 1939-05-02 to 1996-05-02 |
| age | 7 | 30 to 87, median 41 |
| birth_day_noyear | 7 | 5-2 in all 7 |
| birth_day_noyear_sort_hidden | 7 | 2026-05-02 |
| birthday_BA | 7 | 0.13 to 0.42, median 0.33 |
| birthday_BA_diff | 7 | -0.12 to 0.16, median 0.11 |
| birthday_OPS | 7 | 0.43 to 1.42, median 0.83 |
| birthday_OPS_diff | 7 | -0.29 to 0.68, median 0.18 |
| birthday_bb_percent | 7 | 0 to 20, median 9.1 |
| birthday_games | 7 | 2 to 6, median 3 |
| birthday_hit_1b | 7 | 1 to 5, median 3 |
| birthday_hit_2b | 7 | 0 to 1, median 0 |
| birthday_hit_3b | 7 | 0 |
| birthday_hit_hr | 7 | 0 to 3, median 0 |
| birthday_hits | 7 | 1 to 8, median 4 |
| birthday_index | 7 | |
| birthday_k_percent | 7 | 0 to 50, median 19 |
| birthday_pa | 7 | 6 to 28, median 11 |
| birthday_strikeout | 7 | 0 to 6, median 3 |
| birthday_wOBA | 7 | 0.23 to 0.61, median 0.35 |
| birthday_wOBA_diff | 7 | -0.09 to 0.28, median 0.07 |
| birthday_walk | 7 | 0 to 3, median 2 |
| curr_date_hidden | 7 | 2026-10-13 |
| dateString | 7 | “May 2, 1954” and 6 other values |
| daysUntil | 7 | 201 |
| id | 7 | |
| isBirthday | 7 | true in 0 of 7 |
| is_player_active | 7 | 0 to 1, median 0 |
| is_player_deceased | 7 | 0 to 1, median 0 |
| name | 7 | “Keith Moreland” and 6 other values |
| non_birthday_BA | 7 | 0.17 to 0.28, median 0.25 |
| non_birthday_OPS | 7 | 0.46 to 0.75, median 0.72 |
| non_birthday_wOBA | 7 | 0.21 to 0.33, median 0.31 |
| player_id | 7 | |
| player_name | 7 | “Keith Moreland” and 6 other values |
| player_type | 7 | Batter in all 7 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| type | string | No | Upcoming table Allowed values: batter, pitcher. | ||
| min_games | string | No | Minimum games played on the birthday Allowed values: 1, 2, 3, 5, 8, 10. | ||
| date | string | No | Optional birthday date in M-D form; accepted dates are bounded by the current live page season window | 5-2 | |
| show_inactives | boolean | No | Include inactive and deceased players in upcoming rows | ||
| sort | string | No | Local sort column. Some values are type- or date-specific and invalid combinations are rejected. Allowed values: player_name, is_player_active, birth_day_noyear_sort_hidden, age, daysUntil, birthday_index, birthday_games, birthday_pa, birthday_hits, birthday_hit_1b, birthday_hit_2b, birthday_hit_3b, birthday_hit_hr, birthday_strikeout, birthday_k_percent, birthday_walk, birthday_bb_percent, birthday_BA, non_birthday_BA, birthday_BA_diff, birthday_OPS, non_birthday_OPS, birthday_OPS_diff, birthday_wOBA, non_birthday_wOBA, birthday_wOBA_diff. | ||
| sort_dir | string | No | Local sort direction; omitted values use the selected column's live first-party initial direction Allowed values: asc, desc. | ||
| limit | integer | No | Rows per page (1-500) Minimum: 1. Maximum: 500. | ||
| offset | integer | No | Zero-based row offset (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-birthday-index?type=batter&min_games=1&show_inactives=true&sort=player_name&sort_dir=asc&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"type": "batter",
"min_games": 1,
"date": "5-2",
"show_inactives": false,
"total": 1,
"sort": "birthday_index",
"sort_dir": "desc",
"offset": 0,
"limit": 100,
"today_batters": [],
"today_pitchers": [],
"rows": [
{
"player_name": "Luis Torrens",
"player_id": 681390,
"player_type": "Batter",
"birthday_games": 1,
"birthday_index": 0.5
}
],
"source_url": "https://baseballsavant.mlb.com/birthday-index?date=5-2&minGames=1&showInactives=false&sortColumn=birthday_index&sortDirection=desc&type=batter",
"fetched_at": "2026-09-30T00:00:00Z"
}
}Request schema
No body schema
Response schema
#/definitions/mlb.statcastBirthdayIndexResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| date | string | No | 5-2 | |||
| fetched_at | string | No | ||||
| limit | integer | No | 100 | |||
| min_games | integer | No | 1 | |||
| offset | integer | No | 0 | |||
| rows | array | No | ||||
| show_inactives | boolean | No | false | |||
| sort | string | No | daysUntil | |||
| sort_dir | string | No | asc | |||
| source_url | string | No | ||||
| today_batters | array | No | ||||
| today_pitchers | array | No | ||||
| total | integer | No | 241 | |||
| type | string | No | batter |
| 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-birthday-index?type=batter&min_games=1&show_inactives=true&sort=player_name&sort_dir=asc&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"