{"id":18482819,"url":"https://github.com/almic/steam-js-api","last_synced_at":"2026-03-03T16:36:01.952Z","repository":{"id":42020252,"uuid":"163048784","full_name":"almic/steam-js-api","owner":"almic","description":"A simple and clean API wrapper for the Steamworks Web API, specializing in providing great documentation and straight-forward results.","archived":false,"fork":false,"pushed_at":"2024-03-18T08:40:05.000Z","size":961,"stargazers_count":25,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-10-17T08:05:17.482Z","etag":null,"topics":["api","api-wrapper","nodejs","steam","web"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/almic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-12-25T05:26:55.000Z","updated_at":"2025-09-11T15:42:11.000Z","dependencies_parsed_at":"2024-11-06T12:37:19.768Z","dependency_job_id":"b6e03185-3027-4972-bcf7-c1f6450192ce","html_url":"https://github.com/almic/steam-js-api","commit_stats":{"total_commits":51,"total_committers":2,"mean_commits":25.5,"dds":"0.039215686274509776","last_synced_commit":"eec897be20351a923b86d0e9a97f8d56fa79f93c"},"previous_names":[],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/almic/steam-js-api","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almic%2Fsteam-js-api","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almic%2Fsteam-js-api/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almic%2Fsteam-js-api/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almic%2Fsteam-js-api/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/almic","download_url":"https://codeload.github.com/almic/steam-js-api/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/almic%2Fsteam-js-api/sbom","scorecard":{"id":186109,"data":{"date":"2025-08-11","repo":{"name":"github.com/almic/steam-js-api","commit":"dd0c8317ef9ebb2168e8abff4ef66536ff8cbdd4"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.6,"checks":[{"name":"Dangerous-Workflow","score":10,"reason":"no dangerous workflow patterns detected","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Token-Permissions","score":0,"reason":"detected GitHub workflow tokens with excessive permissions","details":["Warn: no topLevel permission defined: .github/workflows/node.js.yml:1","Info: no jobLevel write permissions found"],"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":3,"reason":"dependency not pinned by hash detected -- score normalized to 3","details":["Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node.js.yml:23: update your workflow using https://app.stepsecurity.io/secureworkflow/almic/steam-js-api/node.js.yml/master?enable=pin","Warn: GitHub-owned GitHubAction not pinned by hash: .github/workflows/node.js.yml:25: update your workflow using https://app.stepsecurity.io/secureworkflow/almic/steam-js-api/node.js.yml/master?enable=pin","Info:   0 out of   2 GitHub-owned GitHubAction dependencies pinned","Info:   1 out of   1 npmCommand dependencies pinned"],"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: MIT License: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}}]},"last_synced_at":"2025-08-16T19:49:49.504Z","repository_id":42020252,"created_at":"2025-08-16T19:49:49.505Z","updated_at":"2025-08-16T19:49:49.505Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30051969,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-03T15:26:47.567Z","status":"ssl_error","status_checked_at":"2026-03-03T15:26:17.132Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api","api-wrapper","nodejs","steam","web"],"created_at":"2024-11-06T12:30:26.434Z","updated_at":"2026-03-03T16:36:01.934Z","avatar_url":"https://github.com/almic.png","language":"JavaScript","readme":"# steam-js-api\n[![Version](https://img.shields.io/github/release/almic/steam-js-api.svg?label=version)](https://github.com/almic/steam-js-api/releases)\n[![Node.js CI](https://github.com/almic/steam-js-api/actions/workflows/node.js.yml/badge.svg?branch=master)](https://github.com/almic/steam-js-api/actions/workflows/node.js.yml)\n[![Build Status](https://travis-ci.org/almic/steam-js-api.svg?branch=master)](https://travis-ci.org/almic/steam-js-api)\n[![Downloads](https://img.shields.io/npm/dw/steam-js-api.svg)](https://npmjs.com/package/steam-js-api)\n\n```\nnpm install steam-js-api\n```\n\nA simple and clean API wrapper for the Steamworks Web API, specializing in providing great documentation and straight-forward results. The Steamworks Web API is very inconsistent, this wrapper fixes that by normalizing parameters and responses into predictable, more usable formats.\n\nThe project includes the most important parts from the Steamworks Web API, and is still growing. The full public Steamworks Web API will be added in future releases. Plans for implementing a full trading and inventory system are also on the horizon.\n\n### Table of Contents\n\n0. **[Getting Started](#getting-started)**\n    * **[Download/ Install](#download)**\n    * **[Documentation](#documentation-wiki)**\n    * **[Usage](#usage)**\n1. **[Testing](#testing)**\n2. **[Unsupported Interfaces](#unsupported-interfaces)**\n3. **[Supported Interfaces](#supported-interfaces)**\n    * **[IPlayerService](#iplayerservice)**\n    * **[ISteamUser](#isteamuser)**\n    * **[ISteamUserStats](#isteamuserstats)**\n    * **[IEconService](#ieconservice)**\n    * **[ISteamEconomy](#isteameconomy)**\n    * **[Special](#special)**\n    * **[CSGO](#csgo)**\n4. **[FAQ](#faq)**\n5. **[License](#license)**\n\n# Getting Started\n\n### Download\nThis is packaged with [NPM](https://www.npmjs.com/package/steam-js-api), so you can just do `npm install steam-js-api` and get going with it.\n\n```javascript\nconst api = require('steam-js-api')\n```\n\nYou can also just download one of the [releases](https://github.com/almic/steam-js-api/releases), and load the file in your javascript like this:\n\n```javascript\nconst api = require('./steam-js-api/app.js')\n```\n\n### Documentation (Wiki)\n\nThe official documentation can be found in the [Github Wiki](https://github.com/almic/steam-js-api/wiki). Everything is listed by the Web API interface that it uses, along with a short description of what information you can get from it. Everything is perfectly organized, as all things should be.\n\nCounter-Strike: Global Offensive (CSGO) has a special stat format, making use of a scheme defined in `json/stats.json`. For information about this, see the [Stats-CSGO](https://github.com/almic/steam-js-api/wiki/Stats-CSGO) wiki page.\n\n### Usage\n\nYou can use every function like a Promise or with a callback. If no callback is given, then the function returns a Promise. Anytime a Steam ID is used, the module internally verifies the ID **before** making the request, and **will return an error** if the Steam ID isn't valid.\n\nAlmost every function requires you to set the API key. You only have to set this once by calling `setKey()`. Because almost all functions need an API key, the ones that do *not* will explicitly say so in the [wiki](https://github.com/almic/steam-js-api/wiki). **An exception will be thrown** if you don't set an API key before calling a function that requires one.\n\n```javascript\n// Basic usage example, with API key\nconst api = require('steam-js-api')\n\n// I recommend using environment variables for security. This is what I do.\n// More info here: https://www.twilio.com/blog/working-with-environment-variables-in-node-js-html\napi.setKey('{YOUR_KEY_HERE}')\n\nsteamID = '76561198099490962' // My Steam ID, feel free to use it for testing :)\nappID = 730 // We only want to check for one game\nmoreInfo = true // Provide more info (name, links)\n\n\n// Synchronous result\nlet result\ntry {\n    result = await api.getOwnedGames(steamID, appID, moreInfo)\n    console.log(result.data.games[0])\n} catch (e) {\n    console.error(e)\n}\n\n\n// With a callback\napi.getOwnedGames(steamID, appID, moreInfo, (result) =\u003e {\n    if (result.error)\n        console.error(result)\n    else\n        console.log(result.data.games[0])\n})\n\n\n// Alternatively, use a Promise\napi.getOwnedGames(steamID, appID, moreInfo).then(result =\u003e {\n    console.log(result.data.games[0])\n}).catch(console.error)\n\n```\n\nThis will print out an object that looks like this one:\n```json\n{\n    \"name\": \"Counter-Strike: Global Offensive\",\n    \"appid\": 730,\n    \"playtime\": 61041,\n    \"playtime_recent\": 1,\n    \"url_store\": \"https://store.steampowered.com/app/730\",\n    \"url_store_header\": \"https://steamcdn-a.akamaihd.net/steam/apps/730/header.jpg\",\n    \"url_app_logo\": \"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/730/d0595ff02f5c79fd19b06f4d6165c3fda2372820.jpg\",\n    \"url_app_icon\": \"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/apps/730/69f7ebe2735c366c65c0b33dae00e12dc40edbe4.jpg\"\n}\n```\n\n# Testing\n\nTo keep the library small, I wrote my own testing code that works very well and is pretty simple. Every function is tested in this file: [`tests/main.js`](https://github.com/almic/steam-js-api/blob/master/tests/main.js). The format is pretty straight-forward, and nicely demonstrates every function in real use. However, the [wiki](https://github.com/almic/steam-js-api/wiki) is still the best place to actually learn how to use the functions!\n\n# Unsupported Interfaces\n\nThe next section is the full list of all interfaces this wrapper supports. If you can't find one that you want, please follow this example to get the plain JSON object until the interface is officially supported.\n\n```javascript\n\napi.request('ISteamNews/GetNewsForApp/v2', {appid: '730'}, res =\u003e {\n    if (res.error) {\n        console.error(res.error)\n        console.error(`Data: ${res.data}`)\n        return\n    }\n\n    items = res.data.newsitems\n})\n\n```\n\n# Supported Interfaces\n\nAll supported interfaces are listed here. If you can't find one that you want, please use the above example to get the basic JSON response until the interface is officially supported. Almost all supported interfaces have unique object structures to allow easier access to data. You can find out the exact structure by copying the examples and running them, or by checking the [wiki](https://github.com/almic/steam-js-api/wiki).\n\n## IEconService\nTrading specific interface.\n* [GetTradeHistory](https://github.com/almic/steam-js-api/wiki/IEconService#GetTradeHistory)\n* [GetTradeStatus](https://github.com/almic/steam-js-api/wiki/IEconService#GetTradeStatus)\n\n## IPlayerService\nSpecifically playtime, owned games, badges, and Steam level.\n* [GetBadges](https://github.com/almic/steam-js-api/wiki/IPlayerServices#GetBadges)\n* [GetCommunityBadgeProgress](https://github.com/almic/steam-js-api/wiki/IPlayerServices#GetCommunityBadgeProgress)\n* [GetOwnedGames](https://github.com/almic/steam-js-api/wiki/IPlayerServices#GetOwnedGames)\n* [GetRecentlyPlayedGames](https://github.com/almic/steam-js-api/wiki/IPlayerServices#GetRecentlyPlayedGames)\n* [GetSteamLevel](https://github.com/almic/steam-js-api/wiki/IPlayerServices#GetSteamLevel)\n\n## ISteamEconomy\nSteam economy item related stuff.\n* [GetAssetClassInfo](https://github.com/almic/steam-js-api/wiki/ISteamEconomy#GetAssetClassInfo)\n* [GetAssetPrices](https://github.com/almic/steam-js-api/wiki/ISteamEconomy#GetAssetPrices)\n\n## ISteamUser\nReturns more detailed information about user profiles; summaries, bans, friends.\n* [GetFriendList](https://github.com/almic/steam-js-api/wiki/ISteamUser#GetFriendList)\n* [GetPlayerBans](https://github.com/almic/steam-js-api/wiki/ISteamUser#GetPlayerBans)\n* [GetPlayerSummaries](https://github.com/almic/steam-js-api/wiki/ISteamUser#GetPlayerSummaries)\n* [GetUserGroupList](https://github.com/almic/steam-js-api/wiki/ISteamUser#GetUserGroupList)\n* [ResolveVanityURL](https://github.com/almic/steam-js-api/wiki/ISteamUser#ResolveVanityURL)\n\n## ISteamUserStats\nGame statistics related APIs; achievements, scores, stats, etc.\n* [GetGlobalAchievementPercentagesForApp](https://github.com/almic/steam-js-api/wiki/ISteamUserStats#GetGlobalAchievementPercentagesForApp)\n* [GetNumberOfCurrentPlayers](https://github.com/almic/steam-js-api/wiki/ISteamUserStats#GetNumberOfCurrentPlayers)\n* [GetPlayerAchievements](https://github.com/almic/steam-js-api/wiki/ISteamUserStats#GetPlayerAchievements)\n* [GetSchemaForGame](https://github.com/almic/steam-js-api/wiki/ISteamUserStats#GetSchemaForGame)\n* [GetUserStatsForGame](https://github.com/almic/steam-js-api/wiki/ISteamUserStats#GetUserStatsForGame)\n\n## Special\nThese are custom functions that don't use the traditional Steam Web API stuff. As such, they might change in functionality at some point in the future. But I doubt it, Volvo has barely touched the Web API for a number of years now, so this stuff should work as long as everything else in this list does.\n* [GetGroupInfo](https://github.com/almic/steam-js-api/wiki/Special#GetGroupInfo)\n\n## CSGO\nCounter-Strike: Global Offensive specific functions, all in a `CSGO` object as part of the module. This also includes wrappers for functions from [ISteamUserStats](#isteamuserstats) and [ISteamEconomy](#isteameconomy) to allow for more readable code. See the [CSGO](https://github.com/almic/steam-js-api/wiki/CSGO) wiki page for more information about this submodule.\n* [GetGameMapsPlaytime](https://github.com/almic/steam-js-api/wiki/CSGO#GetGameMapsPlaytime)\n* [GetGameServersStatus](https://github.com/almic/steam-js-api/wiki/CSGO#GetGameServersStatus)\n\n# FAQ\n\n### Unsupported Interfaces?\n\u003e If there's something you can't find, then it likely isn't officially supported yet. But I have the solution! Just follow this simple example and you can still quickly access the interface.\n\u003e\n\u003e ```javascript\n\u003e api.request('ISteamNews/GetNewsForApp/v2', {appid: '730'}, res =\u003e {\n\u003e     if (res.error) {\n\u003e         console.error(res.error)\n\u003e         console.error(`Data: ${res.data}`)\n\u003e         return\n\u003e     }\n\u003e\n\u003e     items = res.data.newsitems\n\u003e })\n\u003e ```\n\n### What is the goal?\n\u003e The main goal of the project is to improve the existing Steamworks Web API, essentially by reformatting it and making it easier to work with. The existing documentation is lacking in many areas, and this project aims to fix it.\n\u003e\n\u003e Another big goal is to keep everything simple and focused into one library; avoiding dependencies. In sacrificing some initial development time, the library is much smaller and easier to build upon.\n\n### Extra Files/ Scripts?\n\u003e For the real attentive people, this repository has some scripts I wrote myself to streamline some development tasks. Obviously, these aren't included in the installed NPM package. Feel free to use them if you want, they come under the exact same license as everything else.\n\n### Can you add X interface?\n\u003e Please do not request interfaces to be added. I'm going through the entire list of interfaces and adding them one-by-one. While you wait, check out the above example code for accessing unsupported interfaces.\n\n# License\n\n\u003e MIT License\n\u003e\n\u003e Copyright (c) 2018 Mick A.\n\u003e\n\u003e Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\u003e\n\u003e The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\u003e\n\u003e THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n**tl;dr:** Use this library however you want, just include the `LICENSE` file that comes with the repository when you clone/ download/ install the package.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falmic%2Fsteam-js-api","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falmic%2Fsteam-js-api","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falmic%2Fsteam-js-api/lists"}