Package Exports
- @witchpot/steamboard-cli
- @witchpot/steamboard-cli/build/index.js
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@witchpot/steamboard-cli) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@witchpot/steamboard-cli
Command-line tool for Steamboard API — Steam game data analytics, market research, and tag analysis.
Installation
npm install -g @witchpot/steamboard-cliAuthentication
Option 1: Browser Login (OAuth)
steamboard loginOpens your browser to authenticate via Steamboard. Tokens are stored locally in ~/.steamboard-cli/.
Option 2: API Key
# Via environment variable
export STEAMBOARD_API_KEY=your-api-key
# Or via flag
steamboard search --api-key=your-api-key --tags=roguelikeUsage
steamboard <command> [options]
steamboard --version # print CLI version
steamboard --help # global help
steamboard <command> --help # per-command help (also: -h, help <command>)
steamboard completion bash # bash completion script
steamboard completion zsh # zsh completion scriptAdd the completion script to your shell rc file:
# bash
eval "$(steamboard completion bash)" >> ~/.bashrc
# zsh
eval "$(steamboard completion zsh)" >> ~/.zshrcGame Discovery
steamboard search --tags=roguelike,action --sort=rating_desc --limit=10
steamboard get 553420
steamboard batch 553420,570,730
echo 553420,570,730 | steamboard batch - # read appids from stdin
cat appids.txt | steamboard batch - # one id per line, commas, or spaces
steamboard count --tags=indie --reviewsMin=1000
steamboard stats
steamboard tagsApp Analysis
steamboard snapshots 553420
steamboard benchmark 553420
steamboard details 553420
steamboard dev-links 553420
steamboard reviews 553420
steamboard playtime 730
steamboard playtime-history 730 --filter=recent --limit=90Market Analysis
steamboard analyze --groupBy=tag
steamboard analyze-benchmark --tags=roguelike,action --price=1999
steamboard analyze-related --tags=roguelike
steamboard analyze-pricing --tags=indie
steamboard analyze-niches --parentTags=RPG --sort=opportunity_scoreAnalytics
steamboard tags-common
steamboard tags-trends
steamboard languages
steamboard releases
steamboard upcoming
steamboard review-growth
steamboard playtime-distribution --tag=jrpg
steamboard playtime-distribution --developer=FromSoftware
steamboard playtime-distribution --tag=action --releaseFrom=2024-01-01System
steamboard snapshot-runs
steamboard deep-dive-check
steamboard dev-links-check
steamboard openapiOutput Options
--format=json|table|csv # Output format (default: json)
--output=json|table|csv # Alias for --format
--raw # Include full response envelope
--fields=name,appid # Filter output fieldsCSV output works for list endpoints (search, tags, etc.) and for single
records (get). For non-tabular payloads (e.g. analyze) the renderer falls
back to JSON and prints a notice on stderr.
Debug & Verbose
steamboard search --tags=indie --verbose
STEAMBOARD_DEBUG=1 steamboard search --tags=indie--verbose (or STEAMBOARD_DEBUG=1) prints HTTP request/response metadata to
stderr. Authorization headers are masked.
Search Filters
--keyword=<text> # Text search
--tags=<t1,t2> # Filter by tags (comma-separated slugs)
--tagMode=or|and # Tag matching mode (default: or)
--priceMin=<cents> # Minimum price in cents
--priceMax=<cents> # Maximum price in cents
--reviewsMin=<n> # Minimum review count
--reviewsMax=<n> # Maximum review count
--ratingMin=<n> # Minimum rating percentage
--releaseFrom=<date> # Release date from (YYYY-MM-DD)
--releaseTo=<date> # Release date to (YYYY-MM-DD)
--developer=<name> # Filter by developer (partial match)
--publisher=<name> # Filter by publisher (partial match)
--sort=<option> # reviews_desc, rating_desc, price_asc, playtime_asc, etc.
--limit=<n> # Results per page (default: 20, max: 100)
--page=<n> # Page numberPlaytime Filters
Playtime statistics are sampled from Steam reviews and exposed as quantile
distributions (p25 / median / p75 / p90 / mean) in minutes. Use these flags
on search or count to find games matching a target playtime range.
--playtimeFilter=recent|all # Sample source (default: all)
--playtimeMetric=at_review|forever # Which playtime column (default: at_review)
--playtimeQuantile=p25|median|p75|p90|mean # Quantile to compare (default: median)
--playtimeMinMinutes=<n> # Lower bound (e.g. 600 = 10h)
--playtimeMaxMinutes=<n> # Upper bound (e.g. 1800 = 30h)
--playtimeMinSample=<n> # Minimum sample_size per gameExample: find popular games that take 10–30 hours to play through.
steamboard search --playtimeMinMinutes=600 --playtimeMaxMinutes=1800 \
--playtimeMinSample=100 --sort=reviews_descThe playtime, playtime-history, and playtime-distribution commands
expose the same statistics directly. See steamboard help for full options.
Configuration
Configuration is resolved in this priority order:
- CLI flags (
--api-key,--api-url) - Environment variables (
STEAMBOARD_API_KEY,STEAMBOARD_API_URL) - Config file (
~/.steamboard-cli/config.json) - Stored OAuth token (from
steamboard login)
The config file can be edited via the config subcommand:
steamboard config set apiUrl https://steamboard.witchpot.com
steamboard config set apiKey sk_live_xxx
steamboard config get apiUrl
steamboard config list # apiKey is masked in the output
steamboard config unset apiKey
steamboard config path # print the resolved file pathValid keys: apiKey, apiUrl. The file is created with 0600 permissions.
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Success |
| 1 | Generic error (unknown command, validation failure, network failure) |
| 2 | Authentication error (auth/*) — token missing, expired, or rejected |
| 3 | Resource error (resource/*) — game/tag not found, invalid appid |
| 4 | Rate limit error (rate_limit/*) — back off and retry |
| 5 | Server error (server/*) — upstream API failure |
The CLI prints a structured error block before exiting:
Error [auth/missing_token]: No API key provided
Hint: Run "steamboard login" or set STEAMBOARD_API_KEYRequirements
- Node.js >= 18.0.0
License
See LICENSE for details.