BO3 API endpoint
Returns BO3.gg's teams ranked by the prize money they won in tournaments that ended inside a day range (default: the last six months), for one game with paging up to 100 per page. Each team has its prize money in USD, tournament wins, country and region and its current roster with each player's career prize money and six-month rating. `total` and `has_more` page through all teams that earned money in the window.
/bo3/team-prize-moneyHeader: x-api-key required.
Parameters:
game: optional; allowed values: cs2, valorant, lol, dota2, r6siege, mlbb. Defaults to cs2.from, to: optional days as YYYY-MM-DD (UTC); a tournament counts when it ended inside the window. The default is the six months ending today; wide windows (for example from 2020-01-01) return all-time leaders.offset: optional zero-based offset; limit: optional page size, 1 to 100, default 20.Notable response behavior:
earnings_usd is the prize money the team won in the window and tournament_wins the events it won; position is the team's place in the list (offset plus index). Players carry total_prize_usd (career) and six_month_avg_rating.400. The response is cached for up to one hour.| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| position | 40 | 1 to 40, median 20 |
| team_id | 40 | |
| slug | 40 | |
| name | 40 | “Spirit” and 39 other values |
| country_code | 40 | |
| country | 40 | “Russian Federation” and 14 other values |
| region | 40 | Europe (14), CIS (9), South America (6) and 2 more |
| earnings_usd | 40 | 56,984 to 1,163,188, median 131,750 |
| tournament_wins | 40 | 0 to 7, median 1 |
| logo_url | 40 | files.bo3.gg |
| players | 39 | median 5 entries |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| game | string | No | cs2 | Game; one of cs2, valorant, lol, dota2, r6siege, mlbb; defaults to cs2 Allowed values: cs2, valorant, lol, dota2, r6siege, mlbb. | |
| from | string | No | six months before to | First day, YYYY-MM-DD (UTC); defaults to six months before to | 2026-04-28 |
| to | string | No | today | Last day, YYYY-MM-DD (UTC); defaults to today | 2026-10-28 |
| offset | integer | No | 0 | Zero-based offset; defaults to 0 Minimum: 0. | |
| limit | integer | No | 20 | Page size, 1 to 100; defaults to 20 Minimum: 1. Maximum: 100. |
curl -X GET "https://api.crawlora.net/api/v1/bo3/team-prize-money?game=cs2&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://api.bo3.gg/api/v1/team-prize-money",
"fetched_at": "2026-10-28T10:00:00Z",
"game": "cs2",
"from": "2026-04-28",
"to": "2026-10-28",
"total": 311,
"offset": 0,
"limit": 20,
"count": 1,
"has_more": true,
"teams": [
{
"position": 1,
"team_id": 654,
"slug": "spirit",
"name": "Spirit",
"country_code": "RU",
"country": "Russian Federation",
"region": "CIS",
"earnings_usd": 1163188,
"tournament_wins": 3,
"players": [
{
"id": 23237,
"slug": "sh1ro",
"nickname": "sh1ro",
"is_coach": false,
"total_prize_usd": 1276162,
"six_month_avg_rating": 6.57
}
]
}
]
}
}Request schema
No body schema
Response schema
Inline response schema
| Field | Type | Required | Enum | Bounds | Example | Description |
|---|---|---|---|---|---|---|
| code | integer | No | Code is the HTTP status code or a custom code used to indicate the result of the request @example 200 | |||
| data | bo3.TeamPrizeMoneyResponse | No | ||||
| data.count | integer | No | 20 | |||
| data.fetched_at | string | No | 2026-10-28T10:00:00Z | |||
| data.from | string | No | 2026-04-28 | |||
| data.game | string | No | cs2 | |||
| data.has_more | boolean | No | true | |||
| data.limit | integer | No | 20 | |||
| data.offset | integer | No | 0 | |||
| data.source_url | string | No | https://bo3.gg/matches/current | |||
| data.teams | array | No | ||||
| data.teams[].country | string | No | Russian Federation | |||
| data.teams[].country_code | string | No | RU | |||
| data.teams[].earnings_usd | integer | No | 1163188 | |||
| data.teams[].logo_url | string | No | ||||
| data.teams[].name | string | No | Spirit | |||
| data.teams[].players | array | No | ||||
| data.teams[].players[].id | integer | No | 23237 | |||
| data.teams[].players[].is_coach | boolean | No | false | |||
| data.teams[].players[].nickname | string | No | sh1ro | |||
| data.teams[].players[].six_month_avg_rating | number | No | 6.57 | |||
| data.teams[].players[].slug | string | No | sh1ro | |||
| data.teams[].players[].total_prize_usd | integer | No | 1276162 | |||
| data.teams[].position | integer | No | 1 | |||
| data.teams[].region | string | No | CIS | |||
| data.teams[].slug | string | No | spirit | |||
| data.teams[].team_id | integer | No | 654 | |||
| data.teams[].tournament_wins | integer | No | 3 | |||
| data.to | string | No | 2026-10-28 | |||
| data.total | integer | No | 311 | |||
| msg | unknown | No | Msg is the message that describes the result of the request @example "Request successful" |
| Status | Description | Schema |
|---|---|---|
| 400 | Bad Request | #/definitions/app.Response |
| 429 | Too Many Requests | #/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/bo3/team-prize-money?game=cs2&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"