← Back to API docs

GET/api/v1/players/global

Global players (de-duplicated and merged, with extended profile)
EntitiesGlobalactivebetacoreAvailable (scoped)

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

ParameterTyperequiredExampleDescription
idintegeroptional6917Cursor: rows with uid (= gpid) >= this value; batches supported, id=1,2,3
timeintegeroptionalIncremental: updated at or after this Unix time (seconds)
limitintegeroptional2Default 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

Real response with an external key at 09/11/2026, 14:29 UTC: HTTP 200, 2 rows, 120 ms (data cut to 2 rows)

{
  "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 idExample: 1
heightnullnullableHeight (cm)
logostringLogo (image address on this platform; empty when there is none)
name_enstringEnglish nameExample: "Luis Ingolotti"
name_zhstringChinese nameExample: "英戈洛蒂"
name_zhtnullnullableTraditional Chinese name
nationalitynullnullableNationality
positionstringPositionExample: "G"
position_idintegerExample: 5
position_zhstringPosition (Chinese)Example: "守门员"
preferred_footnullnullablePreferred foot
shirt_numberstringShirt numberExample: "1"
short_name_ennullnullableEnglish short name
source_countintegerNumber of sourcesExample: 5
sourcesobjectSource codes of this merged record (comma separated)· 5
uidintegerUnique cursor id of the recordExample: 1
updated_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

HTTPmessageWhen
401missing API key / unauthorizedNo X-API-Key, or the key is invalid or disabled
400bad param …Malformed parameter (e.g. id is neither a number nor u<uid>)
301match 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
404not foundThe match / team / competition does not exist, or is outside what this key can see (external keys see only matches inside the open coverage)
429rate limit exceeded / daily quota exceededThe key's per-minute rate or daily quota is exceeded
429server busy, retry laterThe server's concurrency slots are full (only 2 heavy requests at a time); retry after Retry-After seconds
500query errorThe query failed on the server; you may retry