Players

List players for a game

Every player in the game, alphabetically by nickname, cursor-paginated. Filter by `team`, `slug` or `role`, or fetch a specific batch with `?ids=` (1–500 comma-separated ids) — which is the efficient way to resolve the player ids you got back from a match's stats in a single request instead of one call per player.

GET
/v1/{game}/players

Every player in the game, alphabetically by nickname, cursor-paginated. Filter by team, slug or role, or fetch a specific batch with ?ids= (1–500 comma-separated ids) — which is the efficient way to resolve the player ids you got back from a match's stats in a single request instead of one call per player.

Authorization

AuthorizationBearer <token>

Primary auth (live). Authorization: Bearer <api-key> — the header takes precedence over the query fallback. The raw key is hashed (SHA-256, hex) and looked up in api.keys.key_hash; the raw value is never stored.

In: header

Path Parameters

game*string

Game slug. cs2 is the only populated title today; an un-onboarded game 404s cleanly.

Query Parameters

slug?string

Exact-match filter on the resource's URL slug (e.g. slug=natus-vincere), scoped to {game}. Returns the single matching row — or an empty page when nothing matches — in the standard list envelope, so it is a direct by-slug lookup that never depends on page size or the cursor position. Composes with the endpoint's other filters (AND).

team?string

Filter to one team's roster (UUID).

Formatuuid
role?string

Filter to one in-game role: AWP, IGL, Lurker, Rifler or Support. Exact match and case-sensitive. Only about 14% of players have a role on file, so this filter is far narrower than it looks — it excludes every player whose role is unknown rather than treating them as unmatched.

ids?string

Batch lookup by player id: a comma-separated list of 1–500 UUIDs, composed with the other filters (a malformed or out-of-range value returns 400). Resolves many players in one call.

sort?string

Ordering. nickname (default) or slug, each reversible with a - prefix (sort=-nickname). Performance metrics are not sortable here — they live on match stats, not the player row; use the rankings endpoint for a performance-ordered board. An unrecognised key returns 400. A cursor is bound to its sort.

limit?integer

Page size. The default and maximum vary per endpoint — this shared definition documents the common case (default 100, max 500); each operation that differs states its own numbers. cursor carries the page position, not limit.

A value above the endpoint's maximum is silently clamped, not rejected. A missing, zero, negative or non-numeric value silently falls back to the default — so ?limit=abc and ?limit=0 both return the default page size rather than a 400. Read meta.count if you need to know how many rows you actually got.

Range1 <= value
Default100
cursor?string

Opaque forward pagination cursor — pass the previous page's meta.next_cursor verbatim. Omit for the first page. Never construct one by hand.

Response Body

application/json

application/json

application/json

application/json

curl -X GET "https://example.com/v1/cs2/players"
{  "data": [    {      "id": "019f2e16-d5d3-736f-85a2-c85e2f71d8ae",      "game_id": "019f23d1-fb5b-7d24-935d-e4d68f6f565a",      "slug": "levi_3r",      "nickname": " Levi 3R",      "real_name": "Elvis Deaconu",      "nationality": "RO",      "role": null,      "team_id": "019f2e16-d5d3-7968-8b00-a1e6bf2a057f",      "created_at": "2026-07-04T17:04:36.313963Z",      "updated_at": "2026-07-25T23:06:56.921667Z"    },    {      "id": "019f50d7-cb2c-790e-a268-03a188248018",      "game_id": "019f23d1-fb5b-7d24-935d-e4d68f6f565a",      "slug": "nara999",      "nickname": " nara999",      "real_name": "",      "nationality": "RU",      "role": null,      "team_id": "019f2858-e255-76de-b662-e1cdae4a9429",      "created_at": "2026-07-11T11:02:42.37862Z",      "updated_at": "2026-07-13T12:49:49.766649Z"    }  ],  "meta": {    "count": 2,    "next_cursor": "eyJ2IjoiIG5hcmE5OTkiLCJpZCI6IjAxOWY1MGQ3LWNiMmMtNzkwZS1hMjY4LTAzYTE4ODI0ODAxOCJ9"  }}
{  "error": {    "code": "not_found",    "message": "not found",    "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578"  }}
{  "error": {    "code": "not_found",    "message": "not found",    "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578"  }}
{  "error": {    "code": "not_found",    "message": "not found",    "request_id": "019f3d18-c15f-7319-81a7-343e8a80a578"  }}