BO3 API endpoint
Returns the tournament most-valuable-player awards BO3.gg publishes, newest first, optionally for one game: the award type, tournament, player, team and the BO3 article about it. Every row seen has the type `mvp`.
/bo3/tournament-mvpsHeader: x-api-key required.
Parameters:
game: optional; allowed values: cs2, valorant, lol, dota2, r6siege, mlbb. Omit it for every game.offset: optional zero-based offset; defaults to 0.limit: optional page size, 1 to 100; defaults to 20.Notable response behavior:
type is the upstream award type; all 44 awards read on 2026-10-28 were mvp, so the field is passed through rather than listed as an enum. Each row has game, tournament (slug, name, tier, prize), player, team and article_url.tournament.tier is one of s, a, b, c, d (s is the top tier).| Field | Filled in, of 40 checked | Values in the sample |
|---|---|---|
| id | 40 | |
| type | 40 | mvp in all 40 |
| game | 40 | cs2 (13), valorant (11), lol (7) and 2 more |
| tournament | 40 | |
| player | 40 | |
| team | 40 | |
| article_url | 40 | bo3.gg |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| game | string | No | every game | Game; one of cs2, valorant, lol, dota2, r6siege, mlbb; defaults to every game Allowed values: cs2, valorant, lol, dota2, r6siege, mlbb. | |
| 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/tournament-mvps?game=cs2&limit=10" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://api.bo3.gg/api/v1/tournament-mvps",
"fetched_at": "2026-10-28T10:00:00Z",
"total": 44,
"offset": 0,
"limit": 20,
"count": 1,
"has_more": true,
"mvps": [
{
"id": 45,
"type": "mvp",
"game": "cs2",
"tournament": {
"id": 5111,
"slug": "thunderpick-world-championship-2026",
"name": "Thunderpick World Championship 2026",
"tier": "s",
"prize_usd": 1000000
},
"player": {
"id": 19667,
"slug": "kscerato",
"nickname": "KSCERATO"
},
"team": {
"id": 648,
"slug": "furia",
"name": "FURIA"
},
"article_url": "https://bo3.gg/articles/kscerato"
}
]
}
}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.TournamentMVPsResponse | No | ||||
| data.count | integer | No | 20 | |||
| data.fetched_at | string | No | 2026-10-28T10:00:00Z | |||
| data.game | string | No | cs2 | |||
| data.has_more | boolean | No | true | |||
| data.limit | integer | No | 20 | |||
| data.mvps | array | No | ||||
| data.mvps[].article_url | string | No | ||||
| data.mvps[].game | string | No | cs2 | |||
| data.mvps[].id | integer | No | 45 | |||
| data.mvps[].player | bo3.PersonRef | No | ||||
| data.mvps[].player.id | integer | No | 14 | |||
| data.mvps[].player.nickname | string | No | Pers1valle | |||
| data.mvps[].player.slug | string | No | pers1valle | |||
| data.mvps[].team | bo3.TransferTeam | No | ||||
| data.mvps[].team.id | integer | No | 667 | |||
| data.mvps[].team.name | string | No | Vitality | |||
| data.mvps[].team.slug | string | No | vitality | |||
| data.mvps[].tournament | bo3.TournamentRef | No | TournamentRef record, 5 fields: id, name, prize_usd, slug, tier. Described under BO3.gg match detail API. | |||
| data.mvps[].type | string | No | mvp | |||
| data.offset | integer | No | 0 | |||
| data.source_url | string | No | https://bo3.gg/matches/current | |||
| data.total | integer | No | 44 | |||
| 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 |
| 404 | Not Found | #/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/tournament-mvps?game=cs2&limit=10" \
-H "x-api-key: $CRAWLORA_API_KEY"