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

steamgpt

v1.0.1

Published

Typed client for the free SteamGPT Steam data API: profiles, SteamID conversion, VAC and game bans, FACEIT stats, friends, batch and compare. No API key, no registration.

Readme

steamgpt

Typed client for steamgpt.net - a free Steam data API for humans, applications and AI agents. Steam profiles, SteamID conversion, VAC / game / community / trade bans, FACEIT stats, public friend graph, batch lookups and player comparison. No API key, no registration, no tracking. Zero dependencies, Node.js >= 18 (uses global fetch).

npm install steamgpt

Quick start

import { profile, bans, identity, batch } from 'steamgpt'

// any id form works: steamid64, STEAM_1:0:x, [U:1:x], steamcommunity link or vanity name
const player = await profile('76561197960287930')
console.log(player.steam?.personaname, player.ids.steamid) // Rabscuttle STEAM_1:0:11101

const b = await bans('76561197960287930')
console.log(b.bans.VACBanned, b.bans.NumberOfGameBans) // false 0

const who = await identity('STEAM_1:0:11101')
console.log(who.steamid64) // 76561197960287930

// checking many players? ALWAYS batch - up to 100 ids in ONE request
const roster = await batch(['76561197960287930', '76561197960265731'], { include: ['bans'] })
console.log(roster.count, roster.players[0].steam_bans)

CommonJS works too: const { profile } = require('steamgpt').

API

| Function | Endpoint | Returns | | --- | --- | --- | | summary(id, opts?) | /summary | everything: Steam + bans + FACEIT + friends; trim with opts.include or opts.preset (identity / competitive) | | profile(id) | /profile | raw Steam summary only (cheapest) | | bans(id) | /bans | VAC, game, community, economy bans exactly as Steam returns them | | faceit(id) | /faceit | FACEIT player object + FACEIT bans | | friends(id, opts?) | /friends | public friend graph; opts.detail: 'short' = bare steamid64 array | | identity(id) | /identity | all SteamID forms + vanity, no profile data | | batch(ids, opts?) | POST /batch | up to 100 steamid64 strings per call | | compare(idA, idB) | /compare | two players side by side + shared friends |

Errors

Every function throws an Error with machine-readable fields - switch on slug, not on message text:

try {
    await profile('no-such-player-xyz')
} catch (e) {
    console.log(e.code, e.slug) // 404 player_not_found
}

Slugs: player_not_found, no_faceit_data, no_bans_data, batch_too_large, batch_no_valid_ids, bad_request, rate_limited (honor 60s), internal.

Trust the data

JSON responses carry provenance per source (retrieved_at, age_seconds, fresh) and /summary adds sources + partial: unavailable means the upstream did not answer - it is NOT evidence of absence. Full semantics: steamgpt.net/docs.md.

  • Full TypeScript schemas: steamgpt.net/types.d.ts (bundled index.d.ts covers the same shapes)
  • For AI agents (MCP server, .md/.ai formats, token prices): steamgpt.net/ai
  • Env override: STEAMGPT_API_URL (default https://steamgpt.net)
  • Fair use: soft limit 120 requests/min per IP; responses are cached

SteamGPT is an independent service and is not affiliated with Valve Corporation or Steam.

MIT (c) SteamGPT - steamgpt.net