Get steamID by user nickname
Solution 1
You can use
GET http://api.steampowered.com/ISteamUser/ResolveVanityURL/v0001/
to get the SteamID from the custom URL of a Steam Profile. See http://wiki.teamfortress.com/wiki/WebAPI/ResolveVanityURL
You can't get the steamID from someone's current nickname because nicknames can change and are not unique.
Solution 2
Using PHP and the Steam Condenser project, you can accomplish this.
require_once('steam/steam-condenser.php');
$playername = 'NAMEOFPLAYER';
try
{
$id = SteamId::create($playername);
}
catch (SteamCondenserException $s)
{
// Error occurred
}
echo $id->getSteamId;
There are usage examples in the wiki for the project if you need more information.
Solution 3
This is JS answer, not PHP, but anyway
You can use this url address to get list of users from steamcommunity.com/search/
page
https://steamcommunity.com/search/SearchCommunityAjax?text=aaa&filter=users&sessionid=session&steamid_user=false&page=1
text means username, sessionid means sessionid from cookie files, which you can obtain by going to the site itself
Here is my crappy code for demo:
let axios = require('axios').default;
//create axios instance from which we will get to the search list
let instance = axios.create({ baseURL: 'https://steamcommunity.com' });
async function getSessionId() {
let res = await axios.get('https://steamcommunity.com/');
let [cookie] = res.headers['set-cookie'];
instance.defaults.headers.Cookie = cookie;
return cookie;
}
getSessionId().then(cookie => {
let session = cookie.split(' ')[0].slice(10, -1);
instance.get(`https://steamcommunity.com/search/SearchCommunityAjax?text=aaa&filter=users&sessionid=${session}&steamid_user=false&page=1`).then(res => {
//i have regex
let regex = /('<div>')/|/('<img>')/|/('<span>')/g
//html also
let arr = res.data.html.split(regex).join('').split('\t').join('').split('\n').join('').split('\r');
arr = arr.filter(a => a !== '');
arr = arr.filter(a => a.includes("searchPersonaName"));
let result = [];
arr.forEach(a => {
let [link, name] = a.replace('<a class="searchPersonaName" href="','').replace('</a><br />','').split('">');
let obj = {
link,
name
};
result.push(obj);
});
console.log(result); //logs out array of objects with links and usernames
})
})
Dmitriy Zhura
Updated on August 22, 2022Comments
-
Dmitriy Zhura almost 2 years
Is it possible to get user's steamID by his nickname? I didn't find solution in steam API documentation. The only one thing that I found is an old post on http://dev.dota2.com :
You can use this to search the Dota2 API directly using the player_name option of GetMatchHistory You can then find their 32-bit ID in the list and then convert it to a 64-bit ID.
But now
GetMatchHistory
function does not haveplayer_name
parameter. Now it requiresaccount_id
.So how the websites like http://dotabuff.com/search?q=Dendi get this info?
-
Dmitriy Zhura over 10 yearsYes. This function requires
steamids
param. Which is set of steam IDs. Not nicknames. -
Tom-Oliver Heidel about 8 yearsI guess this is not possible anymore :D
-
Rudey almost 8 yearsSmall addendum: just like nicknames, custom URLs can change too. But since custom URLs are unique, you'll have to handle cases like "what if two players swapped their URLs?".