{"openapi":"3.1.0","info":{"title":"CS2Collections.net API","version":"1.0.0","summary":"Read-only CS2 skin prices, Steam inventory appraisal, pro teams and players","description":"Public read-only API of cs2collections.net. Prices are the best buy-now offer aggregated across market feeds (Skinport, Market.CSGO, DMarket, CSFloat, Waxpeer, White.Market, CSBoard) and the Steam Community Market, in USD, refreshed roughly hourly. The site does not sell items. Item pages live at the url fields of every response.","termsOfService":"https://cs2collections.net/privacy","contact":{"name":"CS2Collections.net","url":"https://cs2collections.net/ru/about"},"license":{"name":"CC BY-SA 4.0 for the teams and players data, attribution with a link to cs2collections.net is required","url":"https://creativecommons.org/licenses/by-sa/4.0/"}},"servers":[{"url":"https://cs2collections.net"}],"components":{"securitySchemes":{"bearerKey":{"type":"http","scheme":"bearer","description":"API key in Authorization: Bearer <key>. Optional; without a key the request is anonymous and keeps the per-address limits. Create a key at https://cs2collections.net/en/profile after signing in through Steam (the account has to be a day old, up to 3 keys per account). A key has its own limits instead of the address ones: 600 requests per minute, 300 appraisals per hour, 30 lookups per minute of profiles never appraised before, 200 profiles per /api/v1/inventories call and no per-address cooldown. A malformed, unknown or revoked key is refused with 401, a key of a banned account with 403. Keyed responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds until the minute window resets)."},"headerKey":{"type":"apiKey","in":"header","name":"X-Api-Key","description":"API key in the X-Api-Key header. Optional; without a key the request is anonymous and keeps the per-address limits. Create a key at https://cs2collections.net/en/profile after signing in through Steam (the account has to be a day old, up to 3 keys per account). A key has its own limits instead of the address ones: 600 requests per minute, 300 appraisals per hour, 30 lookups per minute of profiles never appraised before, 200 profiles per /api/v1/inventories call and no per-address cooldown. A malformed, unknown or revoked key is refused with 401, a key of a banned account with 403. Keyed responses carry X-RateLimit-Limit, X-RateLimit-Remaining and X-RateLimit-Reset (seconds until the minute window resets)."}}},"security":[{},{"bearerKey":[]},{"headerKey":[]}],"paths":{"/api/v1/inventory":{"get":{"operationId":"appraiseInventory","summary":"Appraise a public CS2 Steam inventory","description":"Resolves a Steam profile and returns the total value of its CS2 inventory with the most expensive items. The inventory must be public in Steam privacy settings. A fresh appraisal can take a few seconds; on 503 retry after the Retry-After delay. Owners can hide their inventory on the site, then 403 hidden is returned.","parameters":[{"name":"steam","in":"query","required":true,"description":"Steam profile URL (steamcommunity.com/id/<name> or /profiles/<id>), a 17-digit SteamID64 or a custom URL name","example":"https://steamcommunity.com/id/gabelogannewell","schema":{"type":"string","maxLength":200}},{"name":"lang","in":"query","required":false,"description":"Language of the page links in url fields (the site locale prefix, e.g. /en/items/…). Defaults to the Accept-Language header, then English. Unknown values are ignored.","example":"en","schema":{"type":"string","enum":["ru","pl","en","de","nl","da","es","pt","fr","tr","mn","zh","ja","ko","vi","id","ms","tl","hi","ar","fa","he"]}}],"responses":{"200":{"description":"Appraisal","content":{"application/json":{"schema":{"type":"object","properties":{"steamId":{"type":"string"},"profileUrl":{"type":"string"},"name":{"type":"string"},"avatar":{"type":"string"},"level":{"type":["integer","null"]},"currency":{"type":"string","const":"USD"},"value":{"type":"number","description":"Total value of priced items, USD"},"items":{"type":"integer","description":"Items in the inventory"},"priced":{"type":"integer","description":"Items that have a market price"},"checkedAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean","description":"true when a cached appraisal is returned while a fresh one is computed"},"topItems":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"price":{"type":"number"},"count":{"type":"integer","description":"Copies in the inventory, absent on cached appraisals"},"image":{"type":"string"},"url":{"description":"Item page on the site","type":["string","null"]}},"required":["name","price","image","url"]}},"publicPage":{"description":"Public inventory page, only when the owner shared it","type":["string","null"]},"pricing":{"type":"string"},"source":{"type":"string"}},"required":["steamId","profileUrl","name","avatar","level","currency","value","items","priced","checkedAt","stale","topItems","publicPage","pricing","source"]}}}},"400":{"description":"Missing steam parameter","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"unauthorized: the Authorization or X-Api-Key header carries a malformed, unknown or revoked API key; send no key header to be served anonymously","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"403":{"description":"private (Steam inventory is private) or hidden (owner opted out)","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Profile not found","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"429":{"description":"Per-address cooldown or the hourly limit of 60 appraisals per address (600 and no cooldown for known AI assistants by User-Agent, 300 per API key and no cooldown with a key); busy with a key or an assistant User-Agent when the minute budget of lookups of never appraised profiles is spent (30 per key, 8 shared by all assistants). Retry-After is the number of seconds until the limit window resets. Responses served from the stored appraisal (stale: true) are not counted","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"503":{"description":"busy (appraisal in progress) or upstream (Steam is temporarily refusing requests from the server); retry after Retry-After seconds. Known AI assistants are held for up to 25 seconds and requests with an API key for up to 25 seconds while a queued fresh appraisal completes before busy is returned; there is no wait while Steam refuses the server","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/inventories":{"get":{"operationId":"batchInventories","summary":"Stored appraisals of up to 50 Steam inventories in one call (200 with an API key)","description":"Reads only the stored appraisals, never calls Steam, so it answers instantly. Accepts SteamID64s and /profiles/ URLs only. Each item carries a status; unknown profiles have never been appraised and need a call to /api/v1/inventory (the appraise field). Values are as of each checkedAt. One call counts once against the hourly appraisal limit of the address or of the API key.","parameters":[{"name":"steam","in":"query","required":true,"description":"Up to 50 (200 with an API key) comma-separated 17-digit SteamID64s or steamcommunity.com/profiles/<SteamID64> URLs. Custom URL names are not resolved here; use /api/v1/inventory for them","example":"76561198132414056,76561197960287930","schema":{"type":"string","minLength":1,"maxLength":12000}},{"name":"lang","in":"query","required":false,"description":"Language of the page links in url fields (the site locale prefix, e.g. /en/items/…). Defaults to the Accept-Language header, then English. Unknown values are ignored.","example":"en","schema":{"type":"string","enum":["ru","pl","en","de","nl","da","es","pt","fr","tr","mn","zh","ja","ko","vi","id","ms","tl","hi","ar","fa","he"]}}],"responses":{"200":{"description":"One item per requested profile, in request order, duplicates removed","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"integer"},"currency":{"type":"string","const":"USD"},"source":{"type":"string"},"items":{"type":"array","items":{"type":"object","properties":{"steamId":{"type":"string"},"status":{"type":"string","enum":["cached","unknown","hidden","private","notfound"],"description":"cached: stored appraisal in inventory; unknown: never appraised, call appraise; hidden: the owner opted out; private or notfound: the last background check found the inventory private or missing"},"checkedAt":{"description":"Time of the stored appraisal; values are as of this moment","type":["string","null"],"format":"date-time"},"appraise":{"description":"/api/v1/inventory URL for a live value, null for hidden profiles","type":["string","null"]},"inventory":{"description":"The stored appraisal in the /api/v1/inventory shape (stale: true), only for status cached","type":["object","null"],"properties":{"steamId":{"type":"string"},"profileUrl":{"type":"string"},"name":{"type":"string"},"avatar":{"type":"string"},"level":{"type":["integer","null"]},"currency":{"type":"string","const":"USD"},"value":{"type":"number","description":"Total value of priced items, USD"},"items":{"type":"integer","description":"Items in the inventory"},"priced":{"type":"integer","description":"Items that have a market price"},"checkedAt":{"type":"string","format":"date-time"},"stale":{"type":"boolean","description":"true when a cached appraisal is returned while a fresh one is computed"},"topItems":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"price":{"type":"number"},"count":{"type":"integer","description":"Copies in the inventory, absent on cached appraisals"},"image":{"type":"string"},"url":{"description":"Item page on the site","type":["string","null"]}},"required":["name","price","image","url"]}},"publicPage":{"description":"Public inventory page, only when the owner shared it","type":["string","null"]},"pricing":{"type":"string"},"source":{"type":"string"}},"required":["steamId","profileUrl","name","avatar","level","currency","value","items","priced","checkedAt","stale","topItems","publicPage","pricing","source"]}},"required":["steamId","status","checkedAt","appraise","inventory"]}}},"required":["count","currency","source","items"]}}}},"400":{"description":"input: empty list, more than 50 profiles (200 with an API key), or a value that is not a SteamID64 or /profiles/ URL","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"unauthorized: the Authorization or X-Api-Key header carries a malformed, unknown or revoked API key; send no key header to be served anonymously","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"429":{"description":"limit: the hourly appraisal limit of the address or of the API key is reached","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/price":{"get":{"operationId":"searchPrices","summary":"Find CS2 items by name and get their current prices","description":"Full-text search over skins, stickers, cases, agents, charms, collections and weapons. Skins return a price per wear plus StatTrak™ and Souvenir variants when they exist. Prices are USD best buy-now offers; null means no listing right now. pricedAt is the last refresh of the price feeds, stale turns true when they are older than 24 hours, and source names the market holding each best offer.","parameters":[{"name":"q","in":"query","required":true,"description":"Item name or part of it, e.g. \"AK-47 Redline\"","example":"AK-47 Redline","schema":{"type":"string","minLength":2,"maxLength":64}},{"name":"lang","in":"query","required":false,"description":"Language of the page links in url fields (the site locale prefix, e.g. /en/items/…). Defaults to the Accept-Language header, then English. Unknown values are ignored.","example":"en","schema":{"type":"string","enum":["ru","pl","en","de","nl","da","es","pt","fr","tr","mn","zh","ja","ko","vi","id","ms","tl","hi","ar","fa","he"]}}],"responses":{"200":{"description":"Matches with prices","content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"currency":{"type":"string","const":"USD"},"pricedAt":{"description":"When the freshest market price feed was last refreshed; null before the first load","type":["string","null"],"format":"date-time"},"stale":{"type":"boolean","description":"true when every market price feed is older than 24 hours or none has loaded; prices may be outdated"},"pricing":{"type":"string"},"results":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["skin","collection","sticker","agent","keychain","graffiti","music","key","case","weapon"]},"name":{"type":"string"},"url":{"type":"string","description":"Page on the site"},"image":{"type":"string"},"rarity":{"type":["string","null"]},"collection":{"type":["string","null"]},"currency":{"type":"string","const":"USD"},"price":{"description":"Cheapest wear, USD","type":["number","null"]},"source":{"description":"Market id that holds the best offer for price (skinport, csfloat, waxpeer, whitemarket, marketcsgo, csboard, dmarket, skinbaron, lisskins, csdeals, skinout, tradeit, cstrade or steam); null when unknown or without a price","type":["string","null"]},"wears":{"type":"array","items":{"type":"object","properties":{"wear":{"type":["string","null"]},"price":{"description":"USD, best buy-now offer","type":["number","null"]}},"required":["wear","price"]},"description":"Skins only"},"stattrak":{"type":"array","items":{"type":"object","properties":{"wear":{"type":["string","null"]},"price":{"description":"USD, best buy-now offer","type":["number","null"]}},"required":["wear","price"]},"description":"Skins with a StatTrak™ variant only"},"souvenir":{"type":"array","items":{"type":"object","properties":{"wear":{"type":["string","null"]},"price":{"description":"USD, best buy-now offer","type":["number","null"]}},"required":["wear","price"]},"description":"Skins with a Souvenir variant only"}},"required":["type","name","url","image","rarity","collection","currency","price","source"]}}},"required":["query","currency","pricedAt","stale","pricing","results"]}}}},"400":{"description":"Query too short","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"unauthorized: the Authorization or X-Api-Key header carries a malformed, unknown or revoked API key; send no key header to be served anonymously","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/price/history":{"get":{"operationId":"priceHistory","summary":"Daily price history of one CS2 item","description":"Resolves q like /api/v1/price and takes the first single item (skin, case, sticker, agent, charm, graffiti, music kit or key). Returns one point per UTC day with the Steam Community Market price (steam) and the median best buy-now offer across market feeds (best) from the data behind the item page chart. Cached for 10 minutes.","parameters":[{"name":"q","in":"query","required":true,"description":"Item name or part of it, resolved like /api/v1/price; the first matching single item is used (collections and weapons are skipped)","example":"AK-47 Redline","schema":{"type":"string","minLength":2,"maxLength":64}},{"name":"days","in":"query","required":false,"description":"Length of the window in days","example":90,"schema":{"default":90,"type":"number","enum":[30,90,365]}},{"name":"lang","in":"query","required":false,"description":"Language of the page links in url fields (the site locale prefix, e.g. /en/items/…). Defaults to the Accept-Language header, then English. Unknown values are ignored.","example":"en","schema":{"type":"string","enum":["ru","pl","en","de","nl","da","es","pt","fr","tr","mn","zh","ja","ko","vi","id","ms","tl","hi","ar","fa","he"]}}],"responses":{"200":{"description":"Daily points","content":{"application/json":{"schema":{"type":"object","properties":{"query":{"type":"string"},"type":{"type":"string","enum":["skin","case","sticker","agent","keychain","graffiti","music","key"]},"name":{"type":"string"},"url":{"type":"string","description":"Item page on the site"},"image":{"type":"string"},"reference":{"type":"string","description":"Market name of the best series: Factory New or the first wear for skins"},"steamWear":{"description":"Set when the steam series of a skin comes from this single wear","type":["string","null"]},"currency":{"type":"string","const":"USD"},"pricedAt":{"description":"When the freshest market price feed was last refreshed; null before the first load","type":["string","null"],"format":"date-time"},"stale":{"type":"boolean","description":"true when every market price feed is older than 24 hours or none has loaded; prices may be outdated"},"days":{"type":"number","enum":[30,90,365]},"pricing":{"type":"string"},"points":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"steam":{"description":"Steam Community Market, USD","type":["number","null"]},"best":{"description":"Best buy-now offer across market feeds, USD, daily median","type":["number","null"]}},"required":["date","steam","best"]},"description":"One point per UTC day with data, oldest first"}},"required":["query","type","name","url","image","reference","steamWear","currency","pricedAt","stale","days","pricing","points"]}}}},"400":{"description":"input: q shorter than two characters or days not 30, 90 or 365","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"unauthorized: the Authorization or X-Api-Key header carries a malformed, unknown or revoked API key; send no key header to be served anonymously","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"notfound: no single item matches q","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/teams":{"get":{"operationId":"listTeams","summary":"Top CS2 teams by the official Valve ranking","description":"Every team of the current Valve Regional Standings with rank, points, region, rank change since the previous standings, roster nicknames, coaches, links (Liquipedia, HLTV, FACEIT) and social profiles. Data is licensed CC BY-SA 4.0: when you reuse it, credit CS2Collections.net with a link. Every response carries license, attribution and sources fields plus a Link: rel=\"license\" header.","parameters":[{"name":"region","in":"query","required":false,"description":"Filter by Valve region","schema":{"type":"string","enum":["europe","americas","asia"]}}],"responses":{"200":{"description":"Team list","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"license":{"type":"string","const":"CC BY-SA 4.0"},"licenseUrl":{"type":"string"},"attribution":{"type":"string","description":"Credit line to show when reusing the data"},"attributionRequired":{"type":"boolean","const":true},"sources":{"type":"object","properties":{"ranking":{"type":"string"},"profiles":{"type":"string"},"hltvIds":{"type":"string"},"faceit":{"type":"string"},"matches":{"type":"string"}},"required":["ranking","profiles","hltvIds","faceit","matches"],"description":"Where each part of the data comes from"},"updatedAt":{"type":"string"}},"required":["license","licenseUrl","attribution","attributionRequired","sources","updatedAt"],"description":"License and attribution terms, present in every teams and players response"},{"type":"object","properties":{"standingsDate":{"type":["string","null"],"format":"date"},"count":{"type":"integer"},"teams":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","description":"Team page on the site"},"valveName":{"type":"string","description":"Name as written in the Valve standings"},"rank":{"type":["integer","null"]},"rankDelta":{"description":"Places gained (positive) or lost since the previous standings","type":["integer","null"]},"points":{"type":["integer","null"]},"region":{"type":["string","null"],"enum":["europe","americas","asia",null]},"regionRank":{"type":["integer","null"]},"standingsDate":{"type":"string","format":"date"},"country":{"description":"ISO 3166-1 alpha-2, lowercase","type":["string","null"]},"logo":{"type":["string","null"]},"roster":{"type":"array","items":{"type":"string"},"description":"Player nicknames"},"coaches":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"liquipedia":{"type":["string","null"]},"hltv":{"type":["string","null"]},"faceit":{"type":["string","null"]}},"required":["liquipedia","hltv","faceit"]},"socials":{"type":"object","properties":{"website":{"type":"string"},"twitter":{"type":"string"},"instagram":{"type":"string"},"youtube":{"type":"string"},"twitch":{"type":"string"},"tiktok":{"type":"string"},"facebook":{"type":"string"},"vk":{"type":"string"},"telegram":{"type":"string"},"discord":{"type":"string"}},"description":"Social profile links, only the known ones"}},"required":["slug","name","url","valveName","rank","rankDelta","points","region","regionRank","standingsDate","country","logo","roster","coaches","links","socials"]}}},"required":["standingsDate","count","teams"]}]}}}},"401":{"description":"unauthorized: the Authorization or X-Api-Key header carries a malformed, unknown or revoked API key; send no key header to be served anonymously","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/teams/{slug}":{"get":{"operationId":"getTeam","summary":"Team profile: roster, trophies, current events, recent matches, map stats and rank history","description":"Full profile of one team by its slug from /api/v1/teams. Includes the roster with player pages and links, Liquipedia summary and yearly timeline, trophies with tier and prize, tournaments being played now and the next scheduled match, the last finished matches with the win/loss form, per-map results over the last 30 games and the Valve rank history. CC BY-SA 4.0, attribution required.","parameters":[{"name":"slug","in":"path","required":true,"example":"vitality","schema":{"type":"string"}}],"responses":{"200":{"description":"Team profile","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"license":{"type":"string","const":"CC BY-SA 4.0"},"licenseUrl":{"type":"string"},"attribution":{"type":"string","description":"Credit line to show when reusing the data"},"attributionRequired":{"type":"boolean","const":true},"sources":{"type":"object","properties":{"ranking":{"type":"string"},"profiles":{"type":"string"},"hltvIds":{"type":"string"},"faceit":{"type":"string"},"matches":{"type":"string"}},"required":["ranking","profiles","hltvIds","faceit","matches"],"description":"Where each part of the data comes from"},"updatedAt":{"type":"string"}},"required":["license","licenseUrl","attribution","attributionRequired","sources","updatedAt"],"description":"License and attribution terms, present in every teams and players response"},{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string","description":"Team page on the site"},"valveName":{"type":"string","description":"Name as written in the Valve standings"},"rank":{"type":["integer","null"]},"rankDelta":{"description":"Places gained (positive) or lost since the previous standings","type":["integer","null"]},"points":{"type":["integer","null"]},"region":{"type":["string","null"],"enum":["europe","americas","asia",null]},"regionRank":{"type":["integer","null"]},"standingsDate":{"type":"string","format":"date"},"country":{"description":"ISO 3166-1 alpha-2, lowercase","type":["string","null"]},"logo":{"type":["string","null"]},"coaches":{"type":"array","items":{"type":"string"}},"links":{"type":"object","properties":{"liquipedia":{"type":["string","null"]},"hltv":{"type":["string","null"]},"faceit":{"type":["string","null"]}},"required":["liquipedia","hltv","faceit"]},"socials":{"type":"object","properties":{"website":{"type":"string"},"twitter":{"type":"string"},"instagram":{"type":"string"},"youtube":{"type":"string"},"twitch":{"type":"string"},"tiktok":{"type":"string"},"facebook":{"type":"string"},"vk":{"type":"string"},"telegram":{"type":"string"},"discord":{"type":"string"}},"description":"Social profile links, only the known ones"}},"required":["slug","name","url","valveName","rank","rankDelta","points","region","regionRank","standingsDate","country","logo","coaches","links","socials"]},{"type":"object","properties":{"aliases":{"type":"array","items":{"type":"string"}},"roster":{"type":"array","items":{"type":"object","properties":{"nick":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"url":{"type":"string","description":"Player page on the site"},"country":{"type":"string","description":"ISO 3166-1 alpha-2, lowercase"},"role":{"type":"string","description":"player, coach or a staff role"},"igl":{"type":"boolean"},"joined":{"type":["string","null"],"format":"date"},"photo":{"type":["string","null"]},"steamVerified":{"description":"Whether the current Steam profile name or real name matches the player nick, real name or team; false means the linked Steam account is unconfirmed, null means not checked yet or no Steam link","type":["boolean","null"]},"steamPersona":{"description":"Steam profile name of the linked account at the last check","type":["string","null"]},"links":{"type":"object","properties":{"liquipedia":{"type":["string","null"]},"hltv":{"type":["string","null"]},"faceit":{"type":["string","null"]},"steam":{"type":["string","null"]}},"required":["liquipedia","hltv","faceit","steam"]}},"required":["nick","name","slug","url","country","role","igl","joined","photo","steamVerified","steamPersona","links"]}},"about":{"type":["object","null"],"properties":{"text":{"type":"string"},"source":{"type":"string","description":"Liquipedia page"},"at":{"type":"string","format":"date-time"}},"required":["text","source","at"]},"trophies":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"name":{"type":"string"},"tier":{"description":"s, a, b, c or d","type":["string","null"]},"prize":{"description":"USD","type":["number","null"]},"liquipedia":{"type":["string","null"]}},"required":["date","name","tier","prize","liquipedia"]}},"timeline":{"type":"array","items":{"type":"object","properties":{"year":{"type":"string","example":"2024"},"items":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"text":{"type":"string"}},"required":["date","text"]}}},"required":["year","items"]},"description":"Team history from Liquipedia, oldest year first"},"events":{"type":["object","null"],"properties":{"tournaments":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"tier":{"description":"s, a, b, c or d","type":["string","null"]},"prize":{"description":"USD","type":["number","null"]},"start":{"type":"string","description":"YYYY-MM-DD, empty when unknown"},"end":{"type":"string","description":"YYYY-MM-DD, empty when unknown"},"liquipedia":{"type":["string","null"]}},"required":["name","tier","prize","start","end","liquipedia"]}},"next":{"type":["object","null"],"properties":{"opponent":{"type":"string"},"opponentSlug":{"type":["string","null"]},"start":{"type":"string","format":"date-time"},"bo":{"type":["integer","null"]}},"required":["opponent","opponentSlug","start","bo"]}},"required":["tournaments","next"]},"form":{"type":["object","null"],"properties":{"at":{"type":"string","format":"date-time"},"recent":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date-time"},"opponent":{"type":"string"},"opponentSlug":{"type":["string","null"]},"score":{"type":"array","items":{"type":"integer"},"description":"[ours, theirs]"},"win":{"type":"boolean"},"bo":{"type":["integer","null"]},"tournament":{"type":"string"},"tier":{"type":["string","null"]}},"required":["date","opponent","opponentSlug","score","win","bo","tournament","tier"]}},"maps":{"type":"array","items":{"type":"object","properties":{"map":{"type":"string","example":"de_mirage"},"played":{"type":"integer"},"won":{"type":"integer"}},"required":["map","played","won"]}}},"required":["at","recent","maps"]},"rankHistory":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","format":"date"},"rank":{"type":"integer"},"regionRank":{"type":["integer","null"]},"points":{"type":["integer","null"]}},"required":["date","rank","regionRank","points"]}}},"required":["aliases","roster","about","trophies","timeline","events","form","rankHistory"]}]}}}},"401":{"description":"unauthorized: the Authorization or X-Api-Key header carries a malformed, unknown or revoked API key; send no key header to be served anonymously","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Unknown slug","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/players":{"get":{"operationId":"listPlayers","summary":"Players of the ranked teams, optionally only those with a public Steam profile","description":"Players of every team in the current Valve ranking, best team first, in the shape of /api/v1/players/{slug} plus steamId, steamVerified and steamPersona. steam=public keeps players with a known Steam profile, steam=verified only those the site confirmed. CC BY-SA 4.0, attribution required.","parameters":[{"name":"steam","in":"query","required":false,"description":"public: only players with a linked Steam profile (steamId); verified: only players whose linked Steam profile name or real name matches the player (steamVerified: true). Without it every player of the ranked teams is listed","schema":{"type":"string","enum":["public","verified"]}},{"name":"limit","in":"query","required":false,"description":"Maximum number of players, 1 to 100","example":20,"schema":{"default":100,"type":"integer","minimum":1,"maximum":100}}],"responses":{"200":{"description":"Player list","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"license":{"type":"string","const":"CC BY-SA 4.0"},"licenseUrl":{"type":"string"},"attribution":{"type":"string","description":"Credit line to show when reusing the data"},"attributionRequired":{"type":"boolean","const":true},"sources":{"type":"object","properties":{"ranking":{"type":"string"},"profiles":{"type":"string"},"hltvIds":{"type":"string"},"faceit":{"type":"string"},"matches":{"type":"string"}},"required":["ranking","profiles","hltvIds","faceit","matches"],"description":"Where each part of the data comes from"},"updatedAt":{"type":"string"}},"required":["license","licenseUrl","attribution","attributionRequired","sources","updatedAt"],"description":"License and attribution terms, present in every teams and players response"},{"type":"object","properties":{"standingsDate":{"type":["string","null"],"format":"date"},"filter":{"type":"string","enum":["all","public","verified"]},"total":{"type":"integer","description":"Players matching the filter before limit"},"count":{"type":"integer"},"players":{"type":"array","items":{"type":"object","properties":{"nick":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"url":{"type":"string","description":"Player page on the site"},"country":{"type":"string","description":"ISO 3166-1 alpha-2, lowercase"},"role":{"type":"string","description":"player, coach or a staff role"},"igl":{"type":"boolean"},"joined":{"type":["string","null"],"format":"date"},"photo":{"type":["string","null"]},"steamVerified":{"description":"true when the linked Steam profile name or real name matches the player; false means unconfirmed, null means not checked yet or no Steam link","type":["boolean","null"]},"steamPersona":{"description":"Steam profile name of the linked account at the last check","type":["string","null"]},"links":{"type":"object","properties":{"liquipedia":{"type":["string","null"]},"hltv":{"type":["string","null"]},"faceit":{"type":["string","null"]},"steam":{"type":["string","null"]}},"required":["liquipedia","hltv","faceit","steam"]},"team":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"rank":{"type":["integer","null"]},"logo":{"type":["string","null"]}},"required":["slug","name","url","rank","logo"]},"steamId":{"description":"SteamID64 when the Steam profile is known","type":["string","null"]}},"required":["nick","name","slug","url","country","role","igl","joined","photo","steamVerified","steamPersona","links","team","steamId"]}}},"required":["standingsDate","filter","total","count","players"]}]}}}},"400":{"description":"input: unknown steam filter or limit outside 1 to 100","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"401":{"description":"unauthorized: the Authorization or X-Api-Key header carries a malformed, unknown or revoked API key; send no key header to be served anonymously","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}}}}},"/api/v1/players/{slug}":{"get":{"operationId":"getPlayer","summary":"Player of a ranked team","description":"One player by slug (lowercase nickname, non-alphanumerics replaced by dashes, see roster[].slug in a team profile): real name, country, role, in-game leader flag, join date, photo, links (Liquipedia, HLTV, FACEIT, Steam) and the current team. CC BY-SA 4.0, attribution required.","parameters":[{"name":"slug","in":"path","required":true,"example":"zywoo","schema":{"type":"string"}}],"responses":{"200":{"description":"Player","content":{"application/json":{"schema":{"allOf":[{"type":"object","properties":{"license":{"type":"string","const":"CC BY-SA 4.0"},"licenseUrl":{"type":"string"},"attribution":{"type":"string","description":"Credit line to show when reusing the data"},"attributionRequired":{"type":"boolean","const":true},"sources":{"type":"object","properties":{"ranking":{"type":"string"},"profiles":{"type":"string"},"hltvIds":{"type":"string"},"faceit":{"type":"string"},"matches":{"type":"string"}},"required":["ranking","profiles","hltvIds","faceit","matches"],"description":"Where each part of the data comes from"},"updatedAt":{"type":"string"}},"required":["license","licenseUrl","attribution","attributionRequired","sources","updatedAt"],"description":"License and attribution terms, present in every teams and players response"},{"type":"object","properties":{"nick":{"type":"string"},"name":{"type":"string"},"slug":{"type":"string"},"url":{"type":"string","description":"Player page on the site"},"country":{"type":"string","description":"ISO 3166-1 alpha-2, lowercase"},"role":{"type":"string","description":"player, coach or a staff role"},"igl":{"type":"boolean"},"joined":{"type":["string","null"],"format":"date"},"photo":{"type":["string","null"]},"steamVerified":{"description":"Whether the current Steam profile name or real name matches the player nick, real name or team; false means the linked Steam account is unconfirmed, null means not checked yet or no Steam link","type":["boolean","null"]},"steamPersona":{"description":"Steam profile name of the linked account at the last check","type":["string","null"]},"links":{"type":"object","properties":{"liquipedia":{"type":["string","null"]},"hltv":{"type":["string","null"]},"faceit":{"type":["string","null"]},"steam":{"type":["string","null"]}},"required":["liquipedia","hltv","faceit","steam"]}},"required":["nick","name","slug","url","country","role","igl","joined","photo","steamVerified","steamPersona","links"]},{"type":"object","properties":{"team":{"type":"object","properties":{"slug":{"type":"string"},"name":{"type":"string"},"url":{"type":"string"},"rank":{"type":["integer","null"]},"logo":{"type":["string","null"]}},"required":["slug","name","url","rank","logo"]}},"required":["team"]}]}}}},"401":{"description":"unauthorized: the Authorization or X-Api-Key header carries a malformed, unknown or revoked API key; send no key header to be served anonymously","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}},"404":{"description":"Unknown slug","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"}},"required":["error"]}}}}}}}}}