Hello All!
Over the past week, I have been working on putting around an app for iOS for Steam/Dota2 as it is not available as of now.
For that I have been searching the APIs that I can use and I have compiled a list of such APIs. For you all, I am going to share it!
Below is the list of APIs that I have registered as of now. I will keep updating the list.
There are some generic parameters and common parameters to these APIs – steam web api key and “format” for example.
I am going to show an example of calling one of the API. Lets take “GetNumberOfCurrentPlayers”.
Lets say I want the format default = JSON. I construct the URL and pass parameters like I do in HTTP GET method. The first parameter is your steam web api key – “key” and the appid is the second argument and I am specifying “Dota2” application Id. Don’t ask me now, how I know 570 is Dota2 AppId
So below is what the URL will look like.
Default output of the above URL would like like:
{
“response”: {
“result”: 1,
“player_count”: 363410
}
}
Lets apply “xml” format to this. Updated URL would be something like:
The output of the above would be:
<response>
<result>1</result>
<player_count>363410</player_count>
</response>
API Name | Description | Input |
ResolveVanityURL
http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/ |
Get SteamId from Vanity Name | key vanityurl |
GetFriendList | Gets the friend list | key steamid |
GetPlayerBans | Gets the players ban | key steamids |
GetPlayerSummaries
http://api.steampowered.com/ISteamUser/GetPlayerSummaries/v0002/ |
User profile data | key steamids |
GetAppList | Full list of every publicly facing program in the store/library | key |
GetUserGroupList | List of groups user subscribes to. | key steamid |
GetGlobalAchievementPercentagesForApp
http://api.steampowered.com/ISteamUserStats/ |
Statistics showing how much of the player base have unlocked various achievements | key gameid |
GetGlobalStatsForGame | [Coming Soon] | [Coming Soon] |
GetNumberOfCurrentPlayers
http://api.steampowered.com/ISteamUserStats/GetNumberOfCurrentPlayers/v1? |
Returns the current number of players for an app | key appid |
GetPlayerAchievements
http://api.steampowered.com/ISteamUserStats/GetPlayerAchievements/ |
Get the players achievements | [Coming Soon] |
GetSchemaForGame | Get schema for the game. | [Coming Soon] |
GetRecentlyPlayedGames
http://api.steampowered.com/IPlayerService/GetRecentlyPlayedGames/v1 |
Recently played games with the current steam user | key steamid count |
GetOwnedGames | List of currently owned games by the current steam user | key steamid include_appinfo include_played_free_games appids_filter |
GetSteamLevel | Get the steam level | key steamid |
GetBadges | Get the badges earned by the steam user | key steamid |
GetCommunityBadgeProgress
http://api.steampowered.com/IPlayerService/GetCommunityBadgeProgress/v1 |
Get the community Badge progress | key steamid badgeid(optional) |
GetServerInfo
http://api.steampowered.com/ISteamWebAPIUtil/GetServerInfo/v0001 |
Returns WebAPI server time & checks server status. | key |
GetSupportedAPIList
http://api.steampowered.com/ISteamWebAPIUtil/GetSupportedAPIList/v0001 |
Lists all available WebAPI interfaces. | key |
GetLeagueListing
http://api.steampowered.com/IDOTA2Match_570/GetLeagueListing/v1 |
Information about DotaTV-supported leagues | key |
GetLiveLeagueGames
http://api.steampowered.com/IDOTA2Match_570/GetLiveLeagueGames/v1/ |
A list of in-progress league matches, as well as details of that match as it unfolds | key |
GetMatchDetails
http://api.steampowered.com/IDOTA2Match_570/GetMatchDetails/v1 |
Information about a particular match | match_id |
GetMatchHistory
http://api.steampowered.com/IDOTA2Match_570/GetMatchHistory/v1 |
A list of matches, filterable by various parameters | player_name hero_id game_mode skill,date_min date_max min_players account_id league_id start_at_match_id matches_requested tournament_games_only |
GetMatchHistoryBySequenceNum
http://api.steampowered.com/IDOTA2Match_570/GetMatchHistoryBySequenceNum/v1 |
A list of matches ordered by their sequence num | start_at_match_seq_num matches_requested |
GetScheduledLeagueGames
http://api.steampowered.com/IDOTA2Match_570/GetScheduledLeagueGames/v1 |
A list of scheduled league games coming up | key |
GetTeamInfoByTeamID | A list of all the teams set up in-game | [Coming Soon] |
GetTournamentPlayerStats | Stats about a particular player within a tournament | [Coming Soon] |
GetRarities | Dota 2 item rarity list | key |
GetHeroes | A list of heroes within Dota 2 | key |
Watch this space for more. I will be publishing a e-book covering all the input and output in details for each APIs for your reference and will be available on Amazon.com.
Any questions are welcome!
Samuel Chávez says
Hi, thanks for this post. I’m wondering if you could actually retrieve player data like win rate, mos successful hero and so on. Do you have any idea if this is possible? I think that the guys at http://dotabuff.com/ have done it.
Abhishek says
They actually maintain the database. If you are running a website you can setup and job to retrieve all the data periodically and store it and then you can calculate the stats.
Imagine like doing it for 100. The same applies for all matches after you start gathering data.
Help says
Hello Abhishek My friend wants to open site like dota2lounge So from where he should start actually he asked me but i’m dunno about all this i found this topic on google coz it looks something similar.
What things Need to make site like dotalounge if possible please help i searched on web some ppl says Need Dota2api/tf2api something Please if u can explain.
Abhishek says
Hi there.
There are two ways. As you already ready as per my post that steam exposes some APIS for DOTA2 which can help you get the data. For the same you will need a developer key. Using APIs you can get matches, details, and all the information that dotalounge presents but it will be too much calls.
Rather, if you own a database, you can have it scheduled to get all registered users to be stored in your database using the same APIs of course but in background and based on your database, you can have whatever you want.
-Abhishek