-
Notifications
You must be signed in to change notification settings - Fork 7
CSGO
A collection of Counter-Strike: Global Offensive related interfaces and functions. These functions all lie in the CSGO
object of the module, so double-check the examples before trying to use these! Some functions that have an appID
parameter have shortcuts in the CSGO
object. For example:
// instead of:
api.getStats('76561198099490962', 730)
// you can just do:
api.CSGO.getStats('76561198099490962')
And to make things even simpler, you may be able to do const api = require('steam-js-api').CSGO
if you only need these CSGO functions.
Keep in mind that stats for CSGO have a custom result structure, defined by the json/stats.json
file. To see this exact structure, refer to the Stats-CSGO wiki page. Currently this is the only game with such a custom result structure, but adding your own is fairly simple and only requires adding your custom scheme to the json/stats.json
file, then compressing it using some json minifier and saving it to json/stats-min.json
.
Use these like you normally would, but don't pass the appID
parameter.
- getGlobalAchievements(callback)
- getCurrentPlayers(callback)
- getAchievements(steamID, callback)
- getGameSchema(callback)
- getStats(steamID, callback)
Method | Description |
---|---|
GetGameMapsPlaytime | Grab relative playtime percentages for maps. |
GetGameServersStatus | Current status of various CSGO systems and servers. |
Grab relative playtime percentages for maps. Right now this only shows the last bit of data from the most recent operation, but I suspect Valve will soon add all maps to this API. By soon, I mean Valve-time soon.
I suggest you pay careful attention to the result of this call, and plan for the object structure to change without notice. The raw data is added only as a fallback should Valve make big changes to this API, and you should build any implementation to support the raw fallback data should the custom object fail to build. As a precaution, this function will log a message to the console if it ever fails due to this, however the raw data should always be returned regardless.
CSGO.getMapPlaytime([interval[, gameMode[, mapGroup]]])
interval
Type:
String
Default:day
The interval to return data for, can be
day
,week
, ormonth
gameMode
Type:
String
Default:competitive
Which specific game mode should the data be from, can be
competitive
orcasual
mapGroup
Type:
String
Default:operation
The specific map group to return. At the moment this can only be
operation
. If you plan on using this function to track data, I suggest you plan around this default changing or no longer working, as Valve will likely be adding more options to this in the future.
Integer
start
The time the data started aggregating, in seconds since the epochObject
maps
All maps by internal map name, i.e.de_dust2
, with the values being their relative playtime percentage. NOTE: This may stop working without notice, and you should fallback to the belowraw
data in case this object fails to populate.Array
raw
Raw data from the API. The format is a defined list of "key headers" and a list of "rows", which this object mimics.
const api = require('steam-js-api')
api.setKey('{{YOUR KEY}}')
api.CSGO.getMapPlaytime('week', 'casual', 'operation').then(result => {
console.log(result.data)
}).catch(console.error)
This would display an object that looks like this one:
{
"start": 1509926400,
"maps": {
"cs_agency": 0.38292873923257637,
"cs_insertion": 0.19107282693813626,
"de_blackgold": 0.04463586530931871,
"de_austria": 0.20438527799530148,
"de_lite": 0.028191072826938134,
"de_shipped": 0.10415035238841033,
"de_thrill": 0.04463586530931871
},
"raw": [
{
"IntervalStartTimeStamp": 1509926400,
"MapName": "cs_agency",
"RelativePercentage": 38.29287392325764
},
{
"IntervalStartTimeStamp": 1509926400,
"MapName": "cs_insertion",
"RelativePercentage": 19.107282693813627
},
{
"IntervalStartTimeStamp": 1509926400,
"MapName": "de_blackgold",
"RelativePercentage": 4.463586530931871
},
{
"IntervalStartTimeStamp": 1509926400,
"MapName": "de_austria",
"RelativePercentage": 20.43852779953015
},
{
"IntervalStartTimeStamp": 1509926400,
"MapName": "de_lite",
"RelativePercentage": 2.8191072826938135
},
{
"IntervalStartTimeStamp": 1509926400,
"MapName": "de_shipped",
"RelativePercentage": 10.415035238841034
},
{
"IntervalStartTimeStamp": 1509926400,
"MapName": "de_thrill",
"RelativePercentage": 4.463586530931871
}
]
}
Current status of various CSGO systems and servers. This is cached internally, so this only updates every minute or so. You should wait at least one minute between calls, and check every couple seconds until the timestamp
changes.
CSGO.getServerStatus()
Integer
version
Internal game version number, looks more like a build numberInteger
timestamp
Time the data was updated, in seconds since the epochString
time
String representation of thetimestamp
String
logon
Status of the logon service. Could potentially beonline
,delayed
oroffline
.String
inventory
Status of the community inventory service. Could potentially beonline
,delayed
oroffline
.Object
perfectWorld
Perfect World service informationString
logon
Status of the logon service. Could potentially beonline
,delayed
oroffline
.String
logonLatency
Speed of the logon service. The only known value isnormal
.String
purchase
Likely the status of in-game purchases, but that is just a theory... A GAME THEORY- I'm sorry.String
purchaseLatency
Speed of in-game purchases. The only known value isnormal
.Object
matchmaking
Matchmaking informationString
status
Status of matchmaking. The only known value isnormal
.Integer
players
Number of currently online players with CSGO openInteger
servers
Number of online servers, I believe this includes community hosted servers, correct me if I'm wrong though!Integer
searching
Players currently searching for a game, I believe this only includes competitive lobbies, correct me if I'm wrong though!Integer
searchTime
Average wait-time to find a game. I do not know how this is actually calculated, tell me if you know!Object
servers
Server/ Datacenter information, listed by region nameString
capacity
Server type, can befull
orhigh
String
load
Current server load, can beidle
,low
,medium
orhigh
const api = require('steam-js-api')
api.setKey('{{YOUR KEY}}')
api.CSGO.getServerStatus().then(result => {
console.log(result.data)
}).catch(console.error)
This would display an object that looks like this one:
{
"version": 13674,
"timestamp": 1548562114,
"time": "Sat Jan 26 20:08:34 2019",
"logon": "normal",
"inventory": "delayed",
"perfectWorld": {
"logon": "online",
"logonLatency": "normal",
"purchase": "online",
"purchaseLatency": "normal"
},
"matchmaking": {
"status": "normal",
"players": 246247,
"servers": 163438,
"searching": 7801,
"searchTime": 130
},
"servers": {
"Peru": {
"capacity": "high",
"load": "low"
},
"EU West": {
"capacity": "full",
"load": "idle"
},
"EU East": {
"capacity": "full",
"load": "idle"
},
"Poland": {
"capacity": "full",
"load": "idle"
},
"India East": {
"capacity": "full",
"load": "low"
},
"Hong Kong": {
"capacity": "full",
"load": "low"
},
"Spain": {
"capacity": "high",
"load": "idle"
},
"Chile": {
"capacity": "full",
"load": "high"
},
"US Southwest": {
"capacity": "high",
"load": "low"
},
"US Southeast": {
"capacity": "full",
"load": "low"
},
"India": {
"capacity": "full",
"load": "low"
},
"EU North": {
"capacity": "full",
"load": "low"
},
"Emirates": {
"capacity": "high",
"load": "idle"
},
"US Northwest": {
"capacity": "full",
"load": "low"
},
"South Africa": {
"capacity": "full",
"load": "idle"
},
"Brazil": {
"capacity": "full",
"load": "medium"
},
"US Northeast": {
"capacity": "full",
"load": "low"
},
"US Northcentral": {
"capacity": "full",
"load": "low"
},
"Japan": {
"capacity": "full",
"load": "low"
},
"Singapore": {
"capacity": "full",
"load": "low"
},
"Australia": {
"capacity": "full",
"load": "low"
},
"China Shanghai": {
"capacity": "high",
"load": "low"
},
"China Tianjin": {
"capacity": "high",
"load": "low"
},
"China Guangzhou": {
"capacity": "high",
"load": "low"
}
}
}
> GetTradeHistory
> GetTradeStatus
> GetBadges
> GetCommunityBadgeProgress
> GetOwnedGames
> GetRecentlyPlayedGames
> GetSteamLevel
> GetAssetClassInfo
> GetAssetPrices
> GetFriendList
> GetPlayerBans
> GetPlayerSummaries
> GetUserGroupList
> ResolveVanityURL
> GetGlobalAchievement...
> GetNumberOfCurrentPlayers
> GetPlayerAchievements
> GetSchemaForGame
> GetUserStatsForGame