MLB API endpoint
Returns MLB Pipeline's curated Top 100, Top 30 by Team, Top 10 by Position, Draft Top 200, or International Top 50 ranking. The anonymous first-party page embeds full ranked data. Search, sort, team filtering on Top 100, and pagination are applied to the extracted rows. Use mlb_discovery for the exact view, year, team, position, and sort values.
/mlb/prospect-rankingsReturns MLB Pipeline's curated prospect ranking lists. This is separate from /mlb/prospect-stats, which contains season stat tables. The response contains the full ranked rows.
view: optional ranking view: top100, team, position, draft, or
international. Defaults to top100.year: optional ranking year: 2026, 2025, 2024, 2023, 2022,
2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013,
2011, or 2012. Defaults to 2026. Source row counts vary by year.team_slug: required for view=team; one of dbacks, athletics,
braves, orioles, redsox, cubs, whitesox, reds, guardians,
rockies, tigers, astros, royals, angels, dodgers, marlins,
brewers, twins, mets, yankees, phillies, pirates, padres,
mariners, giants, cardinals, rays, rangers, bluejays, or
nationals.position: required for view=position; one of 1b, 2b, ss, 3b,
c, of, rhp, or lhp.team_filter: optional organization filter for view=top100. It accepts
the same 30 team slugs listed for team_slug.q: optional case-insensitive player-name substring.sort: optional local sort field: rank, level, eta, or age.
Defaults to rank.sort_dir: optional local sort direction: asc or desc. Defaults to
asc for rank and desc for other sort fields.limit: optional result page size from 1 to 250; defaults to 250.offset: optional zero-based result offset from 0 to 10000; defaults
to 0.mlb_discovery returns the exact ranking view, year, team slug, position,
sort-field, and sort-direction sets. Search, organization filtering, sorting,
and pagination are applied locally after extraction. Rank ties preserve name
order. Source lists may contain fewer than their nominal maximum; for example,
the 2020 and 2021 Top 100 pages returned 99 rows and the 2011 page returned
50 rows in the 2026-09-29 live audit.
Rows may include rank, MLB player id, name/profile slug, position, parent MLB
organization id/name, minor-league affiliate id/name, affiliate level, ETA,
age, birthplace/date, draft year/round/pick, school, college, height, weight,
bats, throws, and headshot URL. Fields absent from a particular source list
are omitted. total is the number of rows after local filters and before
pagination; count is the number in the returned page.
GET /api/v1/mlb/prospect-rankings?view=team&year=2026&team_slug=brewers&limit=2
| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| rank | 40 | 1 to 40, median 20 |
| player_id | 40 | |
| name | 40 | “Jesús Made” and 39 other values |
| slug | 40 | |
| position | 40 | “SS” and 9 other values |
| team_id | 40 | |
| team | 40 | “Milwaukee Brewers” and 23 other values |
| affiliate_id | 35 | |
| affiliate | 35 | “Biloxi Shuckers” and 28 other values |
| level | 40 | AA (19), A (6), A+ (6) and 2 more |
| eta | 40 | 2,026 to 2,030, median 2,028 |
| age | 40 | 17 to 23, median 20 |
| birth_city | 40 | “San Cristobal” and 38 other values |
| birth_country | 40 | USA (26), Dominican Republic (6), Venezuela (4) and 4 more |
| birth_date | 40 | 2002-12-29 to 2008-12-13 |
| height | 40 | |
| weight | 40 | 163 to 240, median 191 |
| bats | 40 | R (21), L (14), S (5) |
| throws | 40 | R (33), L (7) |
| headshot_url | 40 | img.mlbstatic.com |
| draft_year | 25 | 2,023 to 2,026, median 2,025 |
| draft_round | 25 | 1 to 20, median 1 |
| draft_pick | 25 | 1 to 611, median 8 |
| school | 23 | “St. Paul's” and 22 other values |
| college | 9 | “Louisiana State” and 7 other values |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| view | string | No | Ranking view Allowed values: top100, team, position, draft, international. | ||
| year | integer | No | Ranking year Allowed values: 2026, 2025, 2024, 2023, 2022, 2021, 2020, 2019, 2018, 2017, 2016, 2015, 2014, 2013, 2011, 2012. | ||
| team_slug | string | No | Required for view=team; one of the MLB Pipeline team ranking slugs. See mlb_discovery. | ||
| position | string | No | Required for view=position Allowed values: 1b, 2b, ss, 3b, c, of, rhp, lhp. | ||
| team_filter | string | No | Optional organization filter for view=top100; use a team slug from mlb_discovery. | ||
| q | string | No | Case-insensitive player-name substring | ||
| sort | string | No | Local sort field Allowed values: rank, level, eta, age. | ||
| sort_dir | string | No | Local sort direction Allowed values: asc, desc. | ||
| limit | integer | No | Rows per page (1-250) Minimum: 1. Maximum: 250. | ||
| 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-rankings?view=top100&year=2026&position=1b&q=coffee&sort=rank&sort_dir=asc&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"view": "team",
"year": 2026,
"team_slug": "brewers",
"count": 1,
"total": 30,
"offset": 0,
"limit": 1,
"sort": "rank",
"sort_dir": "asc",
"players": [
{
"rank": 1,
"player_id": 815908,
"name": "Jesús Made",
"position": "SS",
"team_id": 158,
"team": "Milwaukee Brewers",
"affiliate_id": 5015,
"affiliate": "Biloxi Shuckers",
"level": "AA",
"eta": "2027",
"age": 19,
"height": "6' 1\"",
"weight": 221,
"bats": "S",
"throws": "R"
}
]
}
}Request schema
No body schema
Response schema
#/definitions/mlb.prospectRankingsResponseDoc
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | 200 | |||
| data | mlb.ProspectRankingsResponse | No | ||||
| data.count | integer | No | ||||
| data.fetched_at | string | No | ||||
| data.limit | integer | No | ||||
| data.offset | integer | No | ||||
| data.players | array | No | ||||
| data.players[].affiliate | string | No | ||||
| data.players[].affiliate_id | integer | No | ||||
| data.players[].age | integer | No | ||||
| data.players[].bats | string | No | ||||
| data.players[].birth_city | string | No | ||||
| data.players[].birth_country | string | No | ||||
| data.players[].birth_date | string | No | ||||
| data.players[].college | string | No | ||||
| data.players[].draft_pick | integer | No | ||||
| data.players[].draft_round | string | No | ||||
| data.players[].draft_year | integer | No | ||||
| data.players[].eta | string | No | ||||
| data.players[].headshot_url | string | No | ||||
| data.players[].height | string | No | ||||
| data.players[].level | string | No | ||||
| data.players[].name | string | No | ||||
| data.players[].player_id | integer | No | ||||
| data.players[].position | string | No | ||||
| data.players[].rank | integer | No | ||||
| data.players[].school | string | No | ||||
| data.players[].slug | string | No | ||||
| data.players[].team | string | No | ||||
| data.players[].team_id | integer | No | ||||
| data.players[].throws | string | No | ||||
| data.players[].weight | integer | No | ||||
| data.position | string | No | ||||
| data.query | string | No | ||||
| data.sort | string | No | ||||
| data.sort_dir | string | No | ||||
| data.source_url | string | No | ||||
| data.team_slug | string | No | ||||
| data.total | integer | No | ||||
| data.view | string | No | ||||
| data.year | 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-rankings?view=top100&year=2026&position=1b&q=coffee&sort=rank&sort_dir=asc&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"