BO3 API endpoint
Returns one statistics view of a BO3.gg team over a day range (default: the last six months): `general` (match, game, round and kill totals), `advanced` (CT/T, pistol, eco, force and full-buy round records), `accuracy` (hits and damage by hit group), `economy` (win rate by own and enemy economy level) or `map-pool` (maps picked and banned). General views fill `stats`; the other views fill `rows`.
/bo3/team-statsHeader: x-api-key required.
Parameters:
slug: required team slug, for example vitality or spirit; the slug is in BO3.gg team URLs and in match results.kind: optional; allowed values: general, advanced, accuracy, economy, map-pool. Defaults to general.from, to: optional days as YYYY-MM-DD; the default window is the six months ending today (UTC), as the site shows.Notable response behavior:
general returns stats (games_count, games_won_count, matches_count, rounds_count, kills_sum, deaths_sum, damage_sum and more) with the team id and name; the other kinds return rows whose columns differ per view and are passed through as the site reports them.subject is team here (the shared response also uses player). An unknown slug or a team with no games in the window returns 404 or an empty rows list. The response is cached for up to one hour.| Field | In the sample | Value in the sample |
|---|---|---|
| subject | Has a value | “team” |
| slug | Has a value | |
| kind | Has a value | “general” |
| from | Has a value | 2026-04-29 |
| to | Has a value | 2026-10-29 |
| id | Has a value | |
| name | Has a value | “Vitality” |
| stats.assists_sum | Has a value | 2,468 |
| stats.damage_sum | Has a value | 796,411 |
| stats.deaths_sum | Has a value | 6,546 |
| stats.events_count | Has a value | 9 |
| stats.events_won_count | Has a value | 3 |
| stats.games_count | Has a value | 102 |
| stats.games_lost_count | Has a value | 32 |
| stats.games_won_count | Has a value | 70 |
| stats.kills_sum | Has a value | 7,320 |
| stats.matches_count | Has a value | 41 |
| stats.matches_lost_count | Has a value | 11 |
| stats.matches_won_count | Has a value | 30 |
| stats.rounds_count | Has a value | 2,122 |
| stats.rounds_won_count | Has a value | 1,200 |
| Parameter | Type | Required | Default | Description | Example |
|---|---|---|---|---|---|
| x-api-key (header) | string | Yes | API key required | ||
| slug | string | Yes | Team slug, for example vitality | vitality | |
| kind | string | No | general | Statistics view; one of general, advanced, accuracy, economy, map-pool; defaults to general Allowed values: general, advanced, accuracy, economy, map-pool. | |
| from | string | No | six months before to | First day, YYYY-MM-DD; defaults to six months before to | 2026-04-28 |
| to | string | No | today (UTC | Last day, YYYY-MM-DD; defaults to today (UTC) | 2026-10-28 |
curl -X GET "https://api.crawlora.net/api/v1/bo3/team-stats?slug=vitality&kind=general" \ -H "x-api-key: $CRAWLORA_API_KEY"
{
"code": 200,
"msg": "OK",
"data": {
"source_url": "https://api.bo3.gg/api/v1/team-stats",
"fetched_at": "2026-10-28T10:00:00Z",
"subject": "team",
"slug": "vitality",
"kind": "general",
"from": "2026-04-28",
"to": "2026-10-28",
"id": 667,
"name": "Vitality",
"stats": {
"games_count": 102,
"games_won_count": 70,
"matches_count": 41,
"rounds_count": 2122,
"kills_sum": 7320
}
}
}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.StatsResponse | No | ||||
| data.fetched_at | string | No | 2026-10-28T10:00:00Z | |||
| data.from | string | No | 2026-04-28 | |||
| data.id | integer | No | 667 | |||
| data.kind | string | No | general | |||
| data.name | string | No | Vitality | |||
| data.rows | array | No | ||||
| data.slug | string | No | vitality | |||
| data.source_url | string | No | https://bo3.gg/matches/current | |||
| data.stats | object | No | ||||
| data.subject | string | No | team, player | team | ||
| data.to | string | No | 2026-10-28 | |||
| 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/team-stats?slug=vitality&kind=general" \
-H "x-api-key: $CRAWLORA_API_KEY"