Fantasy rankings
On each planFree keySampleMatch WeekSampleArchiveSampleProSampleAnalyst ProIn fullMCP toolfantasy_rankings
Active players (10 matches or more, the newest within a year) ranked by fantasy rating in one format family and gender: the points they are expected to score next against an average side, from every match since 2001 weighted by the strength of the opposition and by age, and pulled towards their role's average so a few big games do not rank a newcomer over a regular.
GET
https://api.cricketdatabase.com/v1/fantasy/rankingsTry it
Kept in this browser and filled in on every docs page.
Parameters
| Name | Type | Required | Description | Values |
|---|---|---|---|---|
family | string | no | t20, oneday or long (default t20) | t20onedaylong |
gender | string | no | male or female (default male) | malefemale |
role | string | no | keeper, batter, allrounder or bowler | keeperbatterallrounderbowler |
team | string | no | A team address, such as england: the players who played for it in the last year | |
competition | string | no | A competition address: the players who played in it in the last year | |
min_opposition | integer | no | The least average team rating of the sides a player faced in their last 20 matches, 0 to 3000 (default 1500, the average side, without team or competition; 0 with them) |
Returns
| Field | Type | What it holds |
|---|---|---|
data[] | array | position, rank, role_rank, player, name, role, rating, form10, last_365_days, floor, ceiling, opposition, matches, average, first_match, last_match |
data[].last_365_days.matches | integer | |
data[].last_365_days.average | number | |
meta | object | |
meta.plan | string | The plan the key is on |
meta.count | integer | Items in this page |
meta.next_cursor | string | Where the next page starts, null at the end |
meta.page | integer | This page's number |
meta.per_page | integer | Items a page |
meta.total | integer | Items in all, with these filters |
meta.total_pages | integer | Pages in all |
meta.next_page | integer | The next page, null at the end |
meta.prev_page | string or null | The page before, null at the start |
meta.scope | object | |
meta.scope.family | string | |
meta.scope.gender | string | male or female |
meta.scope.role | string | |
meta.scope.min_opposition | integer | |
meta.family_is | string | |
meta.note | string |
Example answer
A real answer for /v1/fantasy/rankings?family=t20&gender=male&role=allrounder, lists cut to their first two items.
{
"data": [
{
"position": 1,
"rank": 6,
"role_rank": 6,
"player": "d-visser",
"name": "D Visser",
"role": "allrounder",
"rating": 79.2,
"form10": 84.5,
"last_365_days": {
"matches": 17,
"average": 82.1
},
"floor": 37.8,
"ceiling": 126.2,
"opposition": 1514,
"matches": 23,
"average": 97.7,
"first_match": "2024-08-17",
"last_match": "2026-05-18"
},
{
"position": 2,
"rank": 30,
"role_rank": 24,
"player": "shadab-khan",
"name": "Shadab Khan",
"role": "allrounder",
"rating": 70.7,
"form10": 78.5,
"last_365_days": {
"matches": 43,
"average": 78.1
},
"floor": 37.6,
"ceiling": 124.6,
"opposition": 1525,
"matches": 325,
"average": 62.3,
"first_match": "2017-02-11",
"last_match": "2026-10-11"
},
"... 48 more"
],
"meta": {
"plan": "plus",
"count": 50,
"next_cursor": "Y2RiOnAy",
"page": 1,
"per_page": 50,
"total": 96,
"total_pages": 2,
"next_page": 2,
"prev_page": null,
"scope": {
"family": "t20",
"gender": "male",
"role": "allrounder",
"min_opposition": 1500
},
"family_is": "T20 internationals and every T20",
"note": "rating: the points expected next against an average side, from every match weighted by the opposition's strength and by age, pulled towards the role's average; position: in this list; rank and role_rank: among every active player of the family and gender; opposition: the average team rating of the sides faced in the last 20 matches (1500 is average)"
}
}
Errors
| Status | Code | When |
|---|---|---|
| 400 | bad_request | A value is not one this parameter takes, or the key was sent in the address |
| 401 | unauthorized | No key, or one that is unknown or revoked |
| 403 | upgrade_required | The plan does not reach it; the answer names the plan that does |
| 422 | unknown_parameter | A parameter this endpoint does not take |
| 429 | rate_limited | Too fast: wait for Retry-After |
| 429 | quota_exceeded | The day's calls are used: they reset at midnight UTC |