npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

node-cs2

v2.3.1

Published

Modern CS2/CS:GO Game Coordinator integration with latest GameTracking-CS2 protobuf definitions. Includes support for highlight_reel, wrapped_sticker, variations, Promise-based API, crate opening, sticker/patch/keychain operations, and all modern CS2 fiel

Readme

node-cs2

npm version Node.js Version Downloads

Modern CS2/CS:GO Game Coordinator integration with the latest GameTracking-CS2 protobuf definitions. This package provides a simple API for interacting with the Counter-Strike 2 and CS:GO Game Coordinator, with full support for all modern CS2 features.

Note: Large portions of this library were generated with the assistance of AI. While core functionality has been verified, some features — particularly around volatile items — may not have been thoroughly tested and could behave unexpectedly. If you discover a bug or have a working fix for an open issue, I'd appreciate it if you could submit a Pull Request or leave a comment on the GitHub Issue with your solution. Community contributions help make this project better for everyone.

Features

  • Latest Protobuf Definitions - Always up-to-date with GameTracking-CS2
  • Complete Field Support - All modern CS2 fields including highlight_reel, wrapped_sticker, variations
  • Promise-Based API - Modern async/await support with backward-compatible callbacks
  • Volatile Items - Support for rental items and temporary items
  • XP Shop & Rewards - Redeem rewards and track XP progress
  • Recurring Missions - Request and track mission schedules
  • Premier Season - Access premier season data and leaderboards
  • Enhanced Error Handling - Comprehensive error detection and validation
  • 100% Backward Compatible - Drop-in replacement for globaloffensive

Installation

npm install node-cs2

Quick Start

const SteamUser = require('steam-user');
const NodeCS2 = require('node-cs2');

const user = new SteamUser();
const cs2 = new NodeCS2(user);

user.logOn({
	accountName: 'your_username',
	password: 'your_password'
});

user.on('loggedOn', () => {
	user.gamesPlayed([730]); // CS2/CS:GO app ID
});

user.on('appLaunched', (appid) => {
	if (appid == 730) {
		cs2.helloGC();
	}
});

cs2.on('connectedToGC', async () => {
	// Inspect an item
	const item = await cs2.inspectItem('76561198057249394', '2569415699', '7115007497');
	console.log('Item:', item);
});

Core Features

Item Inspection

// Promise style
const item = await cs2.inspectItem(owner, assetid, classid);

// Callback style
cs2.inspectItem(owner, assetid, classid, (item) => {
	console.log(item);
});

Volatile Items

// Load volatile item contents
const items = await cs2.loadVolatileItemContents(volatileItemId);

// Claim volatile item reward
await cs2.claimVolatileItemReward(defindex);

XP Shop & Rewards

// Redeem free reward
await cs2.redeemFreeReward(generationTime, redeemableBalance, items);

// Listen for XP shop updates
cs2.on('xpShopNotification', (data) => {
	console.log('XP:', data.current_xp, 'Level:', data.current_level);
});

Recurring Missions

// Request mission schedule
const schema = await cs2.requestRecurringMissionSchedule();

Premier Season

// Set leaderboard safe name
cs2.setLeaderboardSafeName('MySafeName');

// Listen for premier season data
cs2.on('premierSeasonSummary', (summary) => {
	console.log('Premier season:', summary);
});

Crate Opening & Item Customization

// Open a crate
await cs2.openCrate(toolItemId, subjectItemId);
await cs2.openCrate(toolItemId, subjectItemId, false, 100, 1);

// Extract/encapsulate stickers
await cs2.extractSticker(itemId, stickerSlot);
await cs2.encapsulateSticker(stickerId);

// Apply/remove patches
await cs2.applyPatch(itemId, patchId, patchSlot);
await cs2.removePatch(itemId, patchSlot);

// Apply/remove keychains
await cs2.applyKeychain(itemId, keychainId, keychainSlot);
cs2.removeKeychain(itemId);

// Commend a player
cs2.commendPlayer(accountId, { cmd_friendly: true, cmd_teaching: true, cmd_leader: true });

Commendation note: commendPlayer() is a low-level GC request. The protobuf payload is supported, but Valve may reject or silently ignore it unless the target is eligible. Use the target's 32-bit account ID, and expect a real recent/live match ID involving the sender and target to be required in practice. The tokens value may also depend on GC-side eligibility state, so it should not be treated as an arbitrary counter. Profile commendation totals may not update immediately.

Documentation

Migration from globaloffensive

This package is 100% API compatible with the original globaloffensive package:

// Old
const GlobalOffensive = require('globaloffensive');

// New - just change the require!
const NodeCS2 = require('node-cs2');

// All your existing code works unchanged!
const cs2 = new NodeCS2(steamUser);

What's Fixed

  • Missing Fields - highlight_reel and wrapped_sticker now properly extracted
  • Modern CS2 Support - All new CS2 fields and arrays supported
  • Error Handling - Comprehensive error detection and validation
  • Code Quality - Deduplication, better maintainability

Requirements

  • Node.js >= 14.0.0
  • steam-user >= 4.2.0

License

MIT License - see LICENSE file for details.

Credits

Support