Online games marketplace Steam app data (with games genres) and player data for a community market potential analysis.

Published: 24 September 2024| Version 1 | DOI: 10.17632/89yxn7hmpt.1
Contributor:
Luiz Fernando

Description

Data retrieved from the Steam API and Steam Storefront, modeled to be a graph between steam apps (games and dlcs) and steam players (steamids which have been anonymized). There are four .json files in this dataset: steam_reviews.json - contains the steam reviews of each steam app (the primary key of the json) with a 'total_reviews' and 'total_positive' fields, the total number of reviews and the total number of positive reviews, a 'recommendations' field with a nested object value which contains the reviews, with primary key the recommendation id (which is anonymized) , which has another nested object value that has the steamid of the reviewerr (anonymized), the total amount of minutes played by the reviewer, the unix timestamp date of creation of the review, the unix timestamp date of when the review was last updated, if it was a steam purchase and if it was and up vote. The syntax of the json is as follows: { "53535": { "total_reviews": 33, "total_positive": 31, "recommendations": { "15664": { "steamid": 5564, "playtime_forever": 210, "timestamp_created": 1724691423, "timestamp_updated": 1724691472, "received_for_free": false, "steam_purchase": true, "voted_up": true } } } } appdetails.json - Taken from the Steam API. Has the appid as the key to a nested object which contains the release_date, the type of the app (game or dlc), if it has a demo and if it's in Early Access. { "2698870": { "release_date": "Q4 2024", "type": "game", "has_demo": false, "is_early_access": false } } app_tags.json - contains the webscraped data from a steam app page. The 'total_reviews' and 'total_positive' and 'release_date' fields were taken merely for comparison with the steam API. The webscraper checked if the game offered a demo and if the game was in Early Access and also webscraped the the app's community's most popular defined tags (here interpreted as the game's genre). { "950271": { "total_reviews": null, "total_positive": null, "release_date": "3 Oct, 2018", "has_demo": null, "is_early_access": null, "popular_tags": [ "Free to Play", "RPG", "Massively Multiplayer" ] } } player_details.json - For each steamid captured from player_details.json, has the steamid's 'friendlist' field with nested json value with keys 'friendid', also a steamid, and the Unix timestamp of the time when the relationship was created and a 'gamelist' another field with a nested json value with keys the appid and value the number of minutes played of that game. { "2505980": { "friendlist": { "5441285": 1726758665, "5276078": 1714141644 } "gamelist": { "4000": 982, "500": 318 } } }

Files

Steps to reproduce

1. Get a Steam API key following this tutorial: https://steamcommunity.com/dev . 2. Get the list of all Steam apps from the following API using your steam key: http://api.steampowered.com/ISteamApps/GetAppList/v0002/?key=XXXXXXXXXXXXXXXXXXXXXX&format=json . 3. Using the API https://store.steampowered.com/api/appdetails?appids={appid}, for each appid in the Steam apps list fetched at step 2, check if it's a game or a dlc by checking it's type field. If it isn't, discard the appid. If it is, then check if the 'demos' key is in response[str(appid)]['data'] (if it does then it has a demo). Then check if the the response has a 'genres' field and if it does, check if 'Early Access' is inside the value of the 'genres' field. Get its 'release_date' field. This way you can construct appdetails.json. 4. Webscrape an appid steam store page https://store.steampowered.com/app/{appid} and find the tags section with class 'glance_tags popular_tags' and extract all its children <a> tags to construct the popular tags list. Next, find the div with 'user_reviews_summary_row' class and attributes 'data-tooltip-html': True and 'itemprop': 'aggregateRating' to get the Total Reviews tag. Then get the 'data-tooltip-html' field of the tag and extract the percentage of upvotes and total number of reviews of the app. Find the <div> with 'release_date' class then from it get the <div> with 'date' class and strip its text to get the release_date. Next, find the <div> with class ='details_block' and check if any of its children equals 'Early Access'. If any do, then the app is on Early Access. Finally, check if the <div> with class ='game_area_purchase_game demo_above_purchase' exists. If it does, then it has a playable demo. Finaly, you can build app_tags.json. 5. Get the reviews of an appid by following this documentation (pay attention to the cursor URL parameters): Use the URL parameters json=1, language=all, filter=recent and num_per_page=100 like in the following template: https://partner.steamgames.com/doc/store/getreviews. json=1&filter=recent&language=all&num_per_page=100&cursor={cursor}. 6. Get a steamid's friend list from using your steamkey (template: http://api.steampowered.com/ISteamUser/GetFriendList/v0001/?key={steamkey}&steamid={steamid}&relationship=friend ) and the gamelist (template: https://api.steampowered.com/IPlayerService/GetOwnedGames/v0001/?key={steamkey}&steamid={steamid}&format=json).

Institutions

Universidade Estadual de Campinas

Categories

Graph Theory, Consumer Marketing, Market Analysis, Game Design, Computer Game

Licence