MLB API endpoint
Returns MLB Pipeline prospect stats from the anonymous first-party prospect tables. Supports the Top 100, all-prospect, or one-team list; batter/pitcher views; validated date periods and minimum thresholds; and local name/position filters. Use mlb_discovery for date periods, minimum thresholds, and positions. Team ids come from mlb_teams.
/mlb/prospect-statsReturns ranked prospect statistics from MLB Pipeline's anonymous stats tables.
The default pool is the Top 100. Use list_type=all for the all-prospect table,
or pass team_id from mlb_teams to get one team's prospect table. The
upstream's overall list is labeled “All 900 Prospects”; the currently returned
row count can be lower as players graduate or data changes.
list_type: optional top100 or all; defaults to top100. Ignored when
team_id is supplied.team_id: optional positive MLB team id from /api/v1/mlb/teams.date_range: optional MLB Pipeline date period. Accepted values are
today, 1day, 10day, 30day, springTraining, Year2019, Year2020,
Year2021, Year2022, Year2023, Year2024, Year2025, and Year2026.
Defaults to the current season. mlb_discovery returns the current period
choices; the year list grows as new seasons are published.player_type: optional batters or pitchers; defaults to batters.min_pa: optional minimum threshold: 1, 5, 10, 25, 50, 100,
150, 200, or 250. Defaults to 1.position: optional 1b, 2b, ss, 3b, c, of, rhp, or lhp.
mlb_discovery returns the current accepted values. Combined fielding
positions match either listed position; pitcher filters use handedness.q: optional case-insensitive player-name substring.limit: optional page size from 1 to 100; defaults to 100.offset: optional zero-based result offset from 0 to 10000; defaults to
0.Rows include player id, name, age, position, rank, team id/code, minor-league
level, and the selected batter or pitcher statistics. Filtered totals and page
counts are returned separately. team is MLB Pipeline's team code; use
team_id to join against the full team directory.
GET /api/v1/mlb/prospect-stats?list_type=top100&date_range=Year2026&player_type=batters&min_pa=1&limit=2
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| name | 40 | “Jesús Made” and 39 other values |
| player_id | 40 | |
| age | 40 | 17 to 23, median 20 |
| position | 40 | SS (19), OF (6), C (5) and 5 more |
| rank | 40 | 1 to 54, median 23 |
| team | 40 | “mil” and 22 other values |
| team_id | 40 | |
| team_level | 40 | ALL (2) (22), ALL (3) (8), A (4) and 4 more |
| slug | 40 | |
| batting_stats | 40 | |
| average | 40 | “.271” and 36 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| list_type | string | No | Prospect pool Allowed values: top100, all. | ||
| team_id | string | No | Optional MLB team id; selects that team's prospect list and overrides list_type | ||
| date_range | string | No | Prospect table period Allowed values: today, 1day, 10day, 30day, springTraining, Year2019, Year2020, Year2021, Year2022, Year2023, Year2024, Year2025, Year2026. | ||
| player_type | string | No | Player table Allowed values: batters, pitchers. | ||
| min_pa | integer | No | Minimum PA threshold Allowed values: 1, 5, 10, 25, 50, 100, 150, 200, 250. | ||
| position | string | No | Position filter Allowed values: 1b, 2b, ss, 3b, c, of, rhp, lhp. | ||
| q | string | No | Case-insensitive player-name substring | ||
| limit | integer | No | Rows to return (1-100) Minimum: 1. Maximum: 100. | ||
| 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/prospect-stats?list_type=top100&date_range=today&player_type=batters&min_pa=1&position=1b&q=coffee&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"list_type": "top100",
"date_range": "Year2026",
"player_type": "batters",
"min_pa": 1,
"count": 2,
"total": 73,
"offset": 0,
"limit": 2,
"players": [
{
"name": "Example Prospect",
"player_id": 123456,
"rank": 1,
"position": "SS",
"team": "mil",
"team_id": 158,
"batting_stats": {
"hits": 133,
"avg": ".271"
}
},
{
"name": "Second Prospect",
"player_id": 123457,
"rank": 2,
"position": "SS/3B",
"team": "oak",
"team_id": 133,
"batting_stats": {
"hits": 120,
"avg": ".280"
}
}
]
}
}Request schema
No body schema
Response schema
#/definitions/mlb.prospectStatsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | mlb.ProspectStatsResponse | No | ||||
| data.count | integer | No | ||||
| data.date_range | string | No | ||||
| data.fetched_at | string | No | ||||
| data.limit | integer | No | ||||
| data.list_type | string | No | ||||
| data.min_pa | integer | No | ||||
| data.offset | integer | No | ||||
| data.player_type | string | No | ||||
| data.players | array | No | ||||
| data.players[].age | integer | No | ||||
| data.players[].average | string | No | ||||
| data.players[].batting_stats | object | No | ||||
| data.players[].blown_saves | integer | No | ||||
| data.players[].era | string | No | ||||
| data.players[].holds | integer | No | ||||
| data.players[].losses | integer | No | ||||
| data.players[].name | string | No | ||||
| data.players[].pitching_stats | object | No | ||||
| data.players[].player_id | integer | No | ||||
| data.players[].position | string | No | ||||
| data.players[].rank | integer | No | ||||
| data.players[].saves | integer | No | ||||
| data.players[].slug | string | No | ||||
| data.players[].team | string | No | ||||
| data.players[].team_id | integer | No | ||||
| data.players[].team_level | string | No | ||||
| data.players[].wins | integer | No | ||||
| data.position | string | No | ||||
| data.query | string | No | ||||
| data.source_url | string | No | ||||
| data.team_id | integer | No | ||||
| data.total | integer | No | ||||
| msg | string | No | OK |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/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/prospect-stats?list_type=top100&date_range=today&player_type=batters&min_pa=1&position=1b&q=coffee&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"