1.2.1 • Published 4 years ago

valve-steam-web-api v1.2.1

Weekly downloads
5
License
ISC
Repository
github
Last release
4 years ago

valve-steam-web-api

JS Wrapper for the Steam Web Api for all Valve online multiplayer games (Dota2 TF2 CS:GO)

Official Documentation provided by Steam can be found here - https://wiki.teamfortress.com/wiki/WebAPI

The documentation for other endpoints not officially documented in the above link can be found here - https://steamapi.xpaw.me

For sample response JSON data: https://github.com/EthanWadsworth/valve-steam-web-api/tree/master/sample_responses

Installation and Setup

First, get a developer api key for access to the steam web api here - https://steamcommunity.com/dev/

To install the package, type the following into your terminal/shell:

npm install valve-steam-web-api

The module contains two usable classes, one for Dota 2 and one for TF2. The classes can be accessed in the following ways:

For Dota 2:

const valveSteamApi = require('valve-steam-web-api')
const dotaSteamApi = new valveSteamApi.dotaSteamApi('<yourSteamApiKey>')

or

let {dotaSteamApi} = require('valve-steam-web-api')
dotaSteamApi = new dotaSteamApi('<yourSteamApiKey>')

For TF2:

const valveSteamApi = require('valve-steam-web-api')
const tf2SteamApi = new valveSteamApi.tf2SteamApi('<yourSteamApiKey>')

or

let {tf2SteamApi} = require('valve-steam-web-api')
tf2SteamApi = new tf2SteamApi('<yourSteamApiKey>')

For CSGO:

const valveSteamApi = require('valve-steam-web-api')
const csgoSteamApi = new valveSteamApi.csgoSteamApi('<yourSteamApiKey>')

or

let {csgoSteamApi} = require('valve-steam-web-api')
csgoSteamApi = new csgoSteamApi('<yourSteamApiKey>')

Dota2 Response Methods

All methods except those that return img urls will return a Promise that can be handled

getMatchDetails

Gets in-depth details about the requested match

Parameters:

  • match_id - match id of desire Dota 2 match
const sampleMatchId = 5577982773
dotaSteamApi.getMatchDetails(sampleMatchId)
.then(data => console.log(data))

getLeagueListing - Deprecated

Returns a list of all leagues supported in-game via DotaTV

Parameters:

  • language - (optional) ISO_639-1 language code

ISO_639-1 codes can be found at the following link: https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes

The default language is English

dotaSteamApi.getLeagueListing()
.then(data => console.log(data))

getLiveLeagueGames

Gets live league matches and their current individual match details

Parameters: None

dotaSteamApi.getLiveLeagueGames()
.then(data => console.log(data))

getMatchHistory

Retrieves a list of matches that can be filtered by the following parameters.

Parameters:

  • hero_id - (optional) only return matches with requested hero_id (hero ids can be found using getHeroes())
  • game_mode - (optional) only return matches with the desired game_mode (ids can be found here: https://wiki.teamfortress.com/wiki/WebAPI/GetMatchHistory)
  • skill - (optional) only return matches of desired skill level 0 - 3 where 3 is the highest skill level and 0 is any
  • min_players - (optional) minimum number of players required to be in the match
  • account_id - (optional) only return matches where user with steam account_id was a player
  • league_id - (optional) only returns matches with the requested league_id
  • start_at_match_id - (optional) only grab matches that started at and after the requested match_id
  • matches_requested - (optional) limit the number of matches returned (default: 100)
  • tournament_games_only - (optional) limit results to only tournament matches (0 = false, 1 = true)
const heroId = 1 // Anti-Mage
const matchesRequested = 25
dotaSteamApi.getMatchHistory(heroId, null, null, null, null, null, null, matchesRequested)
.then(data => console.log(data))

getMatchHistoryBySequenceNum

Retrieves a list of matches starting at provided sequence value. Starts at a random value if no parameters are provided.

Parameters:

  • start_at_match_seq_num - (optional) match sequence number to begin requesting at
  • matches_requested - (optional) the number of desired matches
const startingMatchSeqNum = 4706807932
const numMatches = 15
dotaSteamApi.getMatchHistoryBySequenceNum(startingMatchSeqNum, numMatches)
.then(data => console.log(data))

getScheduledLeagueGames - Deprecated

Retrieves a list of upcoming Dota league games

Parameters:

  • date_min - (optional Unix timestamp) starting datetime
  • date_max - (optional Unix timestamp) ending datetime
dotaSteamApi.getScheduledLeagueGames()
.then(data => console.log(data))

getTeamInfoByTeamId

Retrieves list of Dota2 teams by filterable parameters

Parameters:

  • start_at_team_id - (optional) team id to start returning at
  • teams_requested - (optional) number of teams to return
// team id for Team Liquid
const teamIdrequested = 2163
const teamsRequested = 10
dotaSteamApi.getTeamInfoByTeamId(teamIdrequested, teamsRequested)
.then(data => console.log(data))

getMatchMVPVotes - Undocumented

Currently unstable and not working. Do not use until more documentation is available.

Parameters:

  • match_id - match id to return MVP votes for
const sampleMatchId = 5577982773
dotaSteaApi.getMatchMVPVotes(sampleMatchId)
.then(data => console.log(data))

getTopLiveEventGame

Retrieves current top live tournament game. Unsure what partner stands for currently.

Parameters:

  • partner - ?
const samplePartner = 0
dotaSteamApi.getTopLiveEventGame(samplePartner)
.then(data => console.log(data))

getTopLiveGame

Retrieves current top live public game. Unsure what partner stands for currently.

Parameters:

  • partner - ?
const samplePartner = 0
dotaSteamApi.getTopLiveGame(samplePartner)
.then(data => console.log(data))

getTournamentPlayerStats

Retrieves pro player stats from games played at the International Dota 2 Championships

Parameters:

  • account_id - steam account id
  • hero_id - (optional) return games where player played requested hero (hero ids can be found using getHeroes())
  • time_frame - (optional) requested time frame
  • match_id - (optional) filter results to look for specific match only
  • league_id (optional) DO NOT CHANGE OR USE: only supports the International (default is already league_id=65006)
const requestedPlayerId = 16769223
dotaSteamApi.getTournamentPlayerStats(requestedPlayerId)
.then(data => console.log(data))

getTopWeekendTourneyGames - Potentially Deprecated

Retrieves list of weekend tournament games.

Parameters:

  • partner - ?
  • home_division - (optional) filter matches to prefer matches from chosen division
dotaSteamApi.getTopWeekendTourneyGames(0)
.then(data => console.log(data))

getGameItems

Retrieves list of ingame items with their name and price

Parameters:

  • language - (optional) language to return item names in
dotaSteamApi.getGameItems()
.then(data => console.log(data))

getHeroes

Retrieves list of ingame items with their names and hero ids

Parameters:

  • language - (optional) language to return hero names in
dotaSteamApi.getHeroes()
.then(data => console.log(data))

getTournamentPrizePool

Retrieves community funded portion of a tournament's prize pool.

Parameters:

  • leagueid - (default=65006) Default is the Dota 2 International
dotaSteamApi.getTournamentPrizePool()
.then(data => console.log(data))

getRarities

Retrieves list of consmetic item rarities, and their corresponding name, id, and hex color

Parameters: None

dotaSteamApi.getRarities()
.then(data => console.log(data))

getHeroIcon

Returns desired hero icon url

Parameters:

  • heroName - Name of the desired hero in the form npc_dota_hero_heroName (hero data can be retrieved from getHeroes)
  • size - Size of the img linked to by the returned url
    • 0: sb.png - smallest horizontal icon size (59 x 33)
    • 1: lg.png - middle horizontal icon size (205 x 115)
    • 2: full.png - largest of the 3 horizontal icons (256 x 144)
    • 3: vert.jpg - ingame icon shown to left of hp and mana bars (235 x 272)
const requestedHeroName = 'npc_dota_hero_antimage'
const requestedSize = 0
const antiMageHeroIcon = dotaSteamApi.getHeroIcon(requestedHeroName, requestedSize)

getItemIcon

Returns item icon with given item name

Parameters:

  • itemName - Name of desired item icon in the form item_itemName (item data can be retrieved from getGameItems())
const requestedItem = "item_blink"
const blinkDaggerIcon = dotaSteamApi.getItemIcon(requestedItem)

getAbilityIcon

Returns url to ability requested ability icon. The Steam Api does not currently support the retrieval of ability ids and names

Parameters:

  • heroName - Name of the desired hero in the form npc_dota_hero_heroName (hero data can be retrieved from getHeroes)
  • abilityName - Name of ability to retrieve url of
const heroRequested = "npc_dota_hero_antimage"
const abilityRequested = "blink"
const abilityUrl = dotaSteamApi.getAbilityIcon(heroRequested, abilityRequested)

getHeroesWithIcons

Returns list of heroes, their names, and ids, as well as their image urls with the desired size

Parameters:

  • language - (optional) Language to return hero names in
  • size - Size of the img linked to by the returned url
    • 0: sb.png - smallest horizontal icon size (59 x 33)
    • 1: lg.png - middle horizontal icon size (205 x 115)
    • 2: full.png - largest of the 3 horizontal icons (256 x 144)
    • 3: vert.jpg - ingame icon shown to left of hp and mana bars (235 x 272)
dotaSteamApi.getHeroesWithIcons(null, 0)
.then(data => console.log(data))

getItemsWithIcons

Returns list of items with their names and image urls

Parameters:

  • language - (optional) language to return item names in
dotaSteamApi.getItemsWithIcons()
.then(data => console.log(data))

getClientVersion

Returns current active version of the Dota 2 game client

Parameters: None

dotaSteamApi.getClientVersion()
.then(data => console.log(data))

getServerVersion

Returns current active version of the Dota 2 servers

Parameters: None

* dotaSteamApi.getServerVersion()

getStoreMetaData

Returns current steam market data for the dota 2 page, including featured items and filters for each hero and category

Parameters:

  • language - (optional) language to return results in
dotaSteamApi.getStoreMetaData()
.then(data => console.log(data))

getPlayerItems

Returns list of all dota 2 cosmetics owned by given steam user and each item's details

Parameters:

  • steamid - steam user id
dotaSteamApi.getPlayerItems('<uint64_steamid>')
.then(data => console.log(data))

getEquippedPlayerItems

Returns list of cosmetic items that steam user has equipped for given hero id

Parameters:

  • steamid - steam user id
  • class_id - hero class id (hero ids can be found using getHeroes())
const heroClassID = 1 // Anti-Mage
dotaSteamApi.getEquippedPlayerItems('<uint64_steamid', heroClassID)
.then(data => console.log(data))

getNewsForDotaApp

Get recent news for Dota 2 by filterable parameters

Parameters:

  • maxlength - (optional) Maximum length for the content to return, 0 for full content, if it's less then a blurb is generated to fit
  • enddate - (optional) Retrieve posts earlier than this date (unix epoch timestamp)
  • count - (optional) # of posts to retrieve (default 20)
  • feeds - (optional) Comma-separated list of feed names to return news for
const testCount = 10
dotaApi.getNewsForDotaApp(null, null, testCount, null)
.then(data => console.log(data))

getGlobalAchievementPercentagesForDota

Returns list of achievement and percentage of global playerbase that have earned each

Dota 2 currently does not contain any earnable player achievements

Parameters: None

dotaSteamApi.getGlobalAchievementPercentagesForDota()
.then(data => console.log(data))

getDotaPlayerAchievements

Returns list of steam user achievements. Dota 2 currently does not contain any earnable player achievements.

Profile of requested steam user must be public.

Parameters:

  • steamid - steam user id
  • language - (optional) language to return results in
dotaSteamApi.getDotaPlayerAchievements('<uint64_steamid>')
.then(data => console.log(data))

getSchemaForDota

Returns game name, version, and ingame stats tracked, Dota has none as of now

Parameters:

  • language - (optional) language to return results in
dotaSteamApi.getSchemaForDota()
.then(data => console.log(data))

getNumberOfCurrentPlayers

Returns number of current ingame players

Parameters: None

dotaSteamApi.getNumberOfCurrentPlayers()
.then(data => console.log(data))

getAssetPrices

Returns full list of purchasable items and their individual class ids and properties

Parameters:

  • currency - (optional) currency type to format price of return items in
  • language - (optional) language to return item results in
dotaSteamApi.getAssetPrices()
.then(data => console.log(data))

getAssetClassInfo

Returns individual item info by class id from the class_id_list array provided. To get class ids, use getAssetPrices()

Parameters:

  • language - (optional) language to return item results in
  • class_count - number of items requested
  • class_id_list - (Array object) array of item class ids to return details for
const requestedClasses = 2
const classesList = [57939591, 57939593] // 2 pieces of the Demon Blood item set for axe
dotaSteamApi.getAssetClassInfo(null, requestedClasses, classesList)
.then(data => console.log(data))

TF2 Response Methods

All methods return promises that can be handled

getGlobalAchievementPercentagesForTF2

Return list of ingame achievements and the percentage of the global playerbase that has earned each one

Parameters: None

tf2SteamApi.getGlobalAchievementPercentagesForTF2()
.then(data => console.log(data))

getTF2PlayerAchievements

Returns list of earned achievements for the given steam user

Parameters:

  • steamid - user steam id
  • language - (optional) language to provide results in
tf2SteamApi.getTF2PlayerAchievements('<uint64_steamid>')
.then(data => console.log(data))

getSchemaForTF2

Returns game name, version, and list of ingame stats tracked

Parameters:

  • language - (optional) language to return results in
tf2SteamApi.getSchemaForTF2()
.then(data => console.log(data))

getNumberOfCurrentPlayers

Returns current number of ingame players

Parameters: None

tf2SteamApi.getNumberOfCurrentPlayers()
.then(data => console.log(data))

getNewsForTF2App

Return recent news for TF2 using filterable parameters

Parameters:

  • maxlength - (optional) Maximum length for the content to return, 0 for full content, if it's less then a blurb is generated to fit
  • enddate - (optional) Retrieve posts earlier than this date (unix epoch timestamp)
  • count - (optional) # of posts to retrieve (default 20)
  • feeds - (optional) Comma-separated list of feed names to return news for
const testCount = 10
tf2SteamApi.getNewsForTF2App(null, null, testCount)
.then(data => console.log(data))

getGoldenWrenches

Return list of steam users who are currently in possession of golden wrenches

Parameters: None

tf2SteamApi.getGoldenWrenches()
.then(data => console.log(data))

getPlayerItems

Return list of tf2 items and item details owned by given steam user

Profile must be public for method to work

Parameters:

  • steamid - steam user id
tf2.getPlayerItems('<uint64_steamid>')
.then(data => console.log(data))

getItemSchemaURL

Returns link to online file of schema for ingame items (how items are classified)

Parameters: None

tf2SteamApi.getItemSchemaURL()
.then(data => console.log(data))

getItemSchemaOverview

Returns description of how ingame items are classified and the propertiers and id of each cosmetic item

Parameters:

  • language - (optional) language to return results in
tf2SteamApi.getItemSchemaOverview()
.then(data => console.log(data))

getSteamStoreMetaData

Returns current steam market data for the tf2 page, including featured items and filters for each class

Parameters:

  • language - (optional) language to return results in
tf2SteamApi.getSteamStoreMetaData()
.then(data => console.log(data))

getStoreStatus

Returns TF2 store status. Call is currently undocumented. Status response code meanings are unkwown.

Parameters: None

tf2SteamApi.getStoreStatus()
.then(data => console.log(data))

getAssetPrices

Returns full list of purchasable items and their individual class ids and properties

Parameters:

  • currency - (optional) currency type to format price of return items in
  • language - (optional) language to return item results in
tf2.getAssetPrices()
.then(data => console.log(data))

getAssetClassInfo

Returns individual item info by class id from the class_id_list array provided. To get class ids, use getAssetPrices()

Parameters:

  • language - (optional) language to return item results in
  • class_count - number of items requested
  • class_id_list - (Array object) array of item class ids to return details for
const requestedClasses = 2
const classesList = [195151, 211447708]
tf2SteamApi.getAssetClassInfo(null, requestedClasses, classesList)

CSGO Response Methods

All methods return promises that can be handled

getGameMapsPlaytime

Retrieves CSGO maps and their respective playtimes over the given interval

Parameters:

  • interval - What recent interval is requested, possible values: day, week, month
  • gamemode - What game mode is requested, possible values: competitive, casual
  • mapgroup - What maps are requested, possible values: operation
const testInterval = 'day'
const testGamemode = 'competitive'
const testGroup = 'operation'
csgoSteamApi.getGameMapsPlaytime(testInterval, testGamemode, testGroup)
.then(data => console.log(data))

getGameServersStatus

Return data on the current status of the CSGO servers

Parameters: None

csgoSteamApi.getGameServersStatus()
.then(data => console.log(data))

getSchema

Describes ingame weapon properties and details and how CS:GO classifies ingame activities and features

Parameters:

  • language - (optional) language to return results in
csgoSteamApi.getSchema()
.then(data => console.log(data))

getSchemaURL

Returns url to ingame item schema file

Parameters: None

csgoSteamApi.getSchemaURL()
.then(data => console.log(data))

getStoreMetaData

Retrieves metadata on how the steam market filters CS:GO ingame items such as cosmetics

Parameters:

  • language - (optional) language to return results in
csgoSteamApi.getStoreMetaData()
.then(data => console.log(data))

getServerVersion

Retrieves information about CSGO ingame servers

Parameters: None

csgoSteamApi.getServerVersion()
.then(data => console.log(data))

getNewsForCSGOApp

Get recent news for CSGO by the filterable parameters

Parameters:

  • maxlength - (optional) Maximum length for the content to return, 0 for full content, if it's less then a blurb is generated to fit
  • enddate - (optional) Retrieve posts earlier than this date (unix epoch timestamp)
  • count - (optional) # of posts to retrieve (default 20)
  • feeds - (optional) Comma-separated list of feed names to return news for
const testCount = 10
csgoSteamApi.getNewsForCSGOApp(null, null, testCount)
.then(data => console.log(data))

getGlobalAchievementPercentagesForCSGO

Return list of ingame achievements and the percentage of the global playerbase that has earned each one

Parameters: None

csgoSteamApi.getGlobalAchievementPercentagesForCSGO()
.then(data => console.log(data))

getCSGOPlayerAchievements

Returns list of earned achievements for the steam user passed in

Parameters:

  • steamid - uint64 steam id
  • language - (optional) language to return results in
csgoSteamApi.getCSGOPlayerAchievements('<uint64_steamid>')
.then(data => console.log(data))

getSchemaForCSGO

Returns game name, version, and list of ingame stats tracked

Parameters:

  • language - (optional) language to return results in
csgoSteamApi.getSchemaForCSGO()
.then(data => console.log(data))

getNumberOfCurrentPlayers

Returns number of current ingame players

Parameters: None

csgoSteamApi.getNumberOfCurrentPlayers()
.then(data => console.log(data))

getAssetPrices

Returns full list of purchasable items and their individual class ids and properties

Parameters:

  • currency - (optional) currency type to format price of return items in
  • language - (optional) language to return item results in
csgoSteamApi.getAssetPrices()
.then(data => console.log(data))

getAssetClassInfo

Returns individual item info by class id from the class_id_list array provided. To get class ids, use getAssetPrices()

Parameters:

  • language - (optional) language to return item results in
  • class_count - number of items requested
  • class_id_list - (Array object) array of item class ids to return details for
const requestedClasses = 2
const classesList = [3761545710, 3946324333]
csgoSteamApi.getAssetClassInfo(null, requestedClasses, classesList)
.then(data => console.log(data))