Steam Insights
Notes on Steam APIs & Community Site.
Goals & Methods
As Steam's data contains complex relations and is not always presented as expected I had to make notes because I tend to forget.
The main goal is to mirror stats presented on steamcommunity.com profile pages or try to do better.
Find a breakdown analysis of Steam's Achievements over time in this Google Spreadsheet.
User Apps
- Determine the state of a user's library.
- Strategies to find missing apps.
- Updating apps' global stats & details.
Achievements
- Find achievements and their unlock timestamps.
- Playing games offline (zero playtime)
- Game developers causing timestamp loss by updating achievements.
- Ship with unlocked achievements (see Appendix B).
- Achievements of not yet released apps.
APIs, Crawling & Recovery Methods
- Web API is the main source of data
- Community Data to fetch hidden achievements' description
- Storefront API for app details
- steamcommunity.com scraping for very special cases
- Anonymous Steam client logging changes
- Userscripts to help users extract lists of apps
- Steam Console to list all active licenses
- Integrating other trackers' APIs
Apps
Names
Web API's GetPlayerAchievements
and GetOwnedGames
match the name displayed in the Steam client and are therefore considered correct even though it might be different from what's displayed on the store page.
As example - App with the ID 656270
:
- "Its Village" in Web API's
GetOwnedGames
andGetPlayerAchievements
- "It`s Village" (note the backtick) in Storefront API's
appdetails
- "Girl in Red" in Web API's
GetSchemaForGame
andGetUserStats
Community Data XMLs match Steam client names ("Its Village")
Types of Licenses
Demos
Volatile. Stats can usually be fetched after license expired. Might be unavailable if profile is very old.
Free to Play
Volatile. Stats can usually be fetched after license expired. Might be unavailable if profile is very old.
Family Shared
Volatile. Stats can not be fetched after license expired because of family share being revoked. Usually expire after 2 weeks it was last launched or as soon as the sharing user turns off Family Sharing. App has to be bought or family shared to make stats accessible again if family share was revoked.
Free weekend
See family shared games.
Removed through Steam Support
Stats might be inaccessible immediately. License can be reactivated.
Removed from store
Stats are usually accessible. Retrievable through recent playtime.
Refunded
Stats might be inaccessible immediately. App has to be bought or family shared to make stats accessible again.
Alphas, Betas, Early Access
Inaccessible and cannot be reactivated if removed from store/account.
Steam counters
Numbers on Steam's showcases may be lower than trackers' in rare cases. E.g. all unlocked achievements miss their timestamp causing the game to not count on the showcase.
Zero playtime may affect Steam's showcase by perfects and achievements not counting.
Games that had all achievements removed by developer will not count as 0% towards average game completion (AGC). Locking all achievements will.
Refunding apps that had unlocked achievements (AGC suicide).
Started games count ("achievements in X different games") may be higher if there are alphas/betas whose achievements are gone.
Steam's own global unlock percentage reflects relation to total number of players (played/started up game). Therefor includes trading card idlers.
Appendix A: Custom Stats Pages
- Alien Swarm
- Company of Heroes 2
- Day of Defeat: Source
- E.Y.E: Divine Cybermancy
- PAYDAY: The Heist
- Puzzle Agent 2
- Team Fortress 2
- Texas Cheat'Em
- Tower Wars
- Warhammer 40,000: Dawn of War II - Retribution
Changed back to normal achievements page:
Appendix B: Ship with unlocked achievements
Unlock just through Steam Client (retroactively?) for some users - without even viewing the game in library or at install time:
- Pixel Puzzles Ultimate
- Kiosk Purchase 1
- Ultimate Piece User
- Puzzle Ball
- SAS Zombie assault f2p - unlocked on install
- Cleanup
- RPG MO
- Beginner Defense
...even though they were never installed nor played. Some unlock when game is started for the first time.
-
Battle of Sol: 1 achievement
- "Dagger Through the Heart"
-
bit Dungeon+: 1 achievement
- "Brown Warrior"
-
Cards and Castles: 1 achievement
- "Card Craftsmanship"
-
Captain Kaon: 1 achievement
- "Hoarder"
-
Destination Primus Vita: 1 achievement
- Game's Completed
-
Devade: 1 achievement
- "1"
-
FORM: 1 achievements
- "Mind Reader"
-
Dracula's Library: 2 achievements
- "You have succeeded!"
- Grav Blazer: 1 achievement
- Grav Blazer Squared: 1 achievement
-
Iron Soul: 25 achievements
- All achievements
-
Kicking Kittens: Putin Saves The World: 1 achievement
- "Kitten Kicker"
-
Kittypocalypse - Ungoggled: 1 achievement
- "Kittypocalypse!"
- meleng: 51 achievements
-
Nuts!: The Battle of the Bulge: 1 achievement
- "100 Allied Mech"
-
Poultry Panic: 1 achievement
- "Delicious"
- Professor Watts Word Search: Into The Ocean: 1 achievement
- Professor Watts Memory Match: Shapes And Colors: 1 achievement
-
Snowballed: 1 achievement
- "First Ball Thrown"
-
Steamburg: 1 achievement
- "9 Robots destroyed"
-
The Cosmos is MINE!: 1 achievement
- "Walked 55 miles"
-
The Tritan Initiative: 1 achievement
- "Defeat an enemy"
- Trivia Vault (Multiple Games): 1 achievement each
Reported as fixed; will not auto-unlock:
-
Clustertruck: 1 achievement
- Deck the trucks!
- Hard Reset Redux: 1 achievement
-
Samphi: 2 achievements
- "Baby Crafter"
- "Old Testament"
Appendix C: Inaccessible & not recoverable
- Battle for Graxia: removed free game, in some cases inaccessible, not installable/recoverable
- CrimeCraft GangWars: removed free game, in some cases inaccessible, not installable/recoverable
- Disney Infinity 3.0: Play Without Limits: removed, not installable, not listed in showcase but counting on showcase
- Might & Magic: Duel of Champions: labeled as free advertising, inaccessible, not installable/recoverable
- Rusty Hearts: removed free game, in some cases inaccessible, not installable/recoverable
- Snowballed: permanent beta state, inaccessible stats, installable/not recoverable
Recoverable through workaround:
- Watch Paint Dry: inaccessible but recoverable, see Steam Recovery
Resolved:
- Achievement removed on 2018-01-23: Seum: Speedrunners from Hell Demo: removed, not installable, inaccessible stats, not listed in showcase, counting on showcase
- The Vanishing of Ethan Carter VR: DLC with achievements, listed in showcase, counting on showcase
Appendix D: Quirkses
- Closed Alphas, Betas and (some) Early Access: Inaccessible and cannot be reactivated if removed from store/account.
- Boy Next Door: Has achievements with same ID when normalized: "BOY" and "Boy" resulting in count mismatches between Steam Client/steamcommunity/Web API; game cannot be completed
- Ionball 2: Ionstorm: Achievement "10/10 would wreck again" has a backlash in the API name "10\10 would wreck again" and therefore not global achievement unlock percentage on Steam
- Serious Sam HD: The Second Encounter: achievements are registered for the demo
- Through Abandoned 2. The Forest: Achievement "Secrets 4/4" unlock time cannot be fetched (scrambled on Steam's side)
- Train Simulator: Five "448184_class 150/1" achievements' unlock time cannot be fetched (scrambled on Steam's side) and are actually combined into one making the total count of achievements in the Steam Client/Web Api differ from anything displayed on steamcommunity.com (4 achievements off)
Resolved:
- GO AWAY, THERE'S KUMIS OVER THERE!: Achievement "\" (escape character) has no global achievement unlock percentage on Steam (Update: achievement was removed)
Appendix E: Relocking achievements
- Stanley Parable Demo relocks for the lulz when started again
- Drive!Drive!Drive! relocks when played on a different PC
Appendix F: Had achievements removed and received new ones
Likely to count as 0% in Steam's showcase, therefore showing up with 0 achievements in the dropdown:
- Subnautica
- Unturned