Endpoint Playground
Returns batter or pitcher percentile rankings. Type, season, and team are first-party table filters. Repeated pctl filters, table sorting, and pagination are applied locally to the embedded rows. Use mlb_discovery for exact type-specific fields, comparators, seasons, and team ids. CSV is a separate download.
14 Oct 2026: 40 rows; 29 fields had a value in every checked item and 6 varied between items; 5 fields were empty in this sample.
Sample value profiles: percent_rank_acceleration: 21 to 99, median 74; percent_rank_arm_max: 9 to 99, median 56; percent_rank_arm_overall: 1 to 100, median 57.
curl 'https://api.crawlora.net/api/v1/mlb/statcast-percentile?type=batter&year=2015&team=108&sort_dir=asc' \
-H "x-api-key: $CRAWLORA_API_KEY"| Parameter | Type | Required | Prefilled value | Description |
|---|---|---|---|---|
| type | string | No | batter | Table type |
| year | string | No | 2015 | Season |
| team | string | No | 108 | MLB team id; blank selects all teams |
| pctl | array | No | Repeated field-comparator-value filter from the type-specific field set in mlb_discovery; value range 0-100 | |
| sort | string | No | Local sort field from the type-specific set in mlb_discovery | |
| sort_dir | string | No | asc | Local sort direction |
| limit | integer | No | Rows per page (1-500) | |
| offset | integer | No | Zero-based row offset |
{
"code": 200,
"msg": "OK",
"data": {
"board": "percentile-rankings",
"type": "batter",
"year": "2026",
"filters": [
{
"field": "percent_rank_xwoba",
"comparator": "gte",
"value": 50
}
],
"sort": "percent_rank_xwoba",
"sort_dir": "desc",
"total": 28,
"offset": 0,
"limit": 5,
"rows": [
{
"player_id": "592450",
"player_name": "Example Player",
"percent_rank_xwoba": 86,
"player_url": "https://baseballsavant.mlb.com/savant-player/592450"
}
]
}
}The sample response, schema and code snippets below work without an account. Sending a live request needs an API key.