GET/api/v1/players/global
Global players (de-duplicated and merged, with extended profile)
Description
Global players, de-duplicated and merged, queried by global id (gpid). Carries names in several languages, position, shirt number, nationality, and the extended profile birthday / height / weight / preferred_foot. The cursor is id (uid); limit is at most 1000.
Access
- Request
GET https://api.sports.csap.ai/api/v1/players/global- Auth
- Header X-API-Key: <your key> (Authorization: Bearer <key> also works; ?key= is still accepted but discouraged, because the key ends up in URLs and logs)
- External keys
- Available (scoped)External keys can call it, but only data inside the open scope is returned.
- Rate limits
- 3000 per minute · 200000 per day · Set per key (rate_per_min and quota_daily returned by /api/v1/account are authoritative; the numbers above are a trial key's). Beyond them the answer is 429. In addition, heavy requests such as whole-table snapshots and statistics lists without a match id are processed 2 at a time for the whole platform; a request that cannot get a slot receives 429 with Retry-After. Responses do not carry X-RateLimit-* headers for now. See the general guide
Request parameters 3
| Parameter | Type | required | Example | Description |
|---|---|---|---|---|
| id | integer | optional | 6917 | Cursor: rows with uid (= gpid) >= this value; batches supported, id=1,2,3 |
| time | integer | optional | Incremental: updated at or after this Unix time (seconds) | |
| limit | integer | optional | 2 | Default 1000, maximum 1000 |
Example request
curl "https://api.sports.csap.ai/api/v1/players/global?limit=2" \ -H "X-API-Key: YOUR_API_KEY"
Try it
Example response
{
"code": 0,
"data": [
{
"birthday": null,
"contract_until": null,
"gpid": 1,
"height": null,
"logo": "http://43.99.60.51:8080/logos/eb96c508b9667372c09a7c65500ffdceda500e4951fcadafa2b71ba9a763a396.webp",
"name_zh": "英戈洛蒂",
"name_zht": null,
"nationality": null,
"position": "G",
"position_id": 5,
"position_zh": "守门员",
"preferred_foot": null,
"shirt_number": "1",
"source_count": 5,
"sources": {
"S2": "871745",
"S3": "90993",
"S4": "844389",
"S5": "jr7owi2pemteq0e",
"S8": "167458"
},
"uid": 1,
"updated_at": "2026-11-09T14:24:18.565174Z",
"weight": null,
"name": "Luis Ingolotti"
},
{
"birthday": null,
"contract_until": null,
"gpid": 2,
"height": null,
"logo": "http://43.99.60.51:8080/logos/39d90a87c7de8f5b4b13325971b80e5df5e6e5e60592b0f9731e33d291ef858f.webp",
"name_zh": "帕拉西奥多",
"name_zht": null,
"nationality": null,
"position": "D",
"position_id": 4,
"position_zh": "后卫",
"preferred_foot": null,
"shirt_number": "24",
"source_count": 5,
"sources": {
"S2": "546338",
"S3": "54378",
"S4": "426353",
"S5": "m2q15igj43tj76x",
"S8": "121061"
},
"uid": 2,
"updated_at": "2026-11-09T14:24:21.45685Z",
"weight": null,
"name": "Leonel Di Plácido"
}
],
"message": "success",
"success": true
}Response fields 20
birthdaynullnullableDate of birth
contract_untilnullnullableContract end date
gpidintegerPlatform player id
Example: 1heightnullnullableHeight (cm)
logostringLogo (image address on this platform; empty when there is none)
name_enstringEnglish name
Example: "Luis Ingolotti"name_zhstringChinese name
Example: "英戈洛蒂"name_zhtnullnullableTraditional Chinese name
nationalitynullnullableNationality
positionstringPosition
Example: "G"position_idinteger
Example: 5position_zhstringPosition (Chinese)
Example: "守门员"preferred_footnullnullablePreferred foot
shirt_numberstringShirt number
Example: "1"short_name_ennullnullableEnglish short name
source_countintegerNumber of sources
Example: 5sourcesobjectSource codes of this merged record (comma separated)· 5
uidintegerUnique cursor id of the record
Example: 1updated_atstringLast update time (UTC, ISO 8601; incremental sync with the time parameter goes by it)
Example: "2026-11-09T14:24:18.565174Z"weightnullnullableWeight in kg (mostly empty)
Errors
| HTTP | message | When |
|---|---|---|
| 401 | missing API key / unauthorized | No X-API-Key, or the key is invalid or disabled |
| 400 | bad param … | Malformed parameter (e.g. id is neither a number nor u<uid>) |
| 301 | match merged into <gmid> | Queried by an old match id that has been merged into a new gmid: Location points to the new address and the body carries moved_to |
| 404 | not found | The match / team / competition does not exist, or is outside what this key can see (external keys see only matches inside the open coverage) |
| 429 | rate limit exceeded / daily quota exceeded | The key's per-minute rate or daily quota is exceeded |
| 429 | server busy, retry later | The server's concurrency slots are full (only 2 heavy requests at a time); retry after Retry-After seconds |
| 500 | query error | The query failed on the server; you may retry |