{"id":51641123,"url":"https://github.com/tamnd/steam-cli","last_synced_at":"2026-07-13T19:03:21.136Z","repository":{"id":365667857,"uuid":"1268628766","full_name":"tamnd/steam-cli","owner":"tamnd","description":"Browse the Steam game store for app details, prices, reviews, and game records","archived":false,"fork":false,"pushed_at":"2026-06-29T12:12:41.000Z","size":188,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-29T14:15:32.025Z","etag":null,"topics":["cli","gaming","golang","json","scraper","steam","web-scraping"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tamnd.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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-06-13T18:54:45.000Z","updated_at":"2026-06-29T12:12:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tamnd/steam-cli","commit_stats":null,"previous_names":["tamnd/steam-cli"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/tamnd/steam-cli","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tamnd%2Fsteam-cli","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tamnd%2Fsteam-cli/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tamnd%2Fsteam-cli/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tamnd%2Fsteam-cli/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tamnd","download_url":"https://codeload.github.com/tamnd/steam-cli/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tamnd%2Fsteam-cli/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35432833,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-13T02:00:06.543Z","response_time":119,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["cli","gaming","golang","json","scraper","steam","web-scraping"],"created_at":"2026-07-13T19:03:14.501Z","updated_at":"2026-07-13T19:03:21.104Z","avatar_url":"https://github.com/tamnd.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# st\n\nA command line for Steam.\n\n`st` is a single pure-Go binary. It reads public Steam data over plain HTTPS,\nshapes it into clean records, and prints output that pipes into the rest of your\ntools. There is no API key and no login: every surface it reads is public.\n\nIt reads one keyless plane across three hosts, all sharing the numeric appid as\nthe universal key:\n\n- The **store** (`store.steampowered.com`) answers app details, store search,\n  user reviews, package details, and the featured lists as JSON. `st app` also\n  folds in the two structured islands the store page carries that the JSON omits:\n  the schema.org rating and the user tag list.\n- The keyless subset of the **web API** (`api.steampowered.com`) answers a game's\n  news, its live concurrent player count, and its global achievement unlock\n  rates.\n- The **community site** (`steamcommunity.com`) serves public profiles as XML and\n  the community market as JSON.\n\nBecause the appid keys the store entry, its reviews, its news, its player count,\nand its achievements, every record links into one graph: a search hit points at\nan app, an app points at its DLC, demos, packages, reviews, and news, a review\npoints at its author's profile, and a profile points at its most-played apps. No\nrecord is a dead leaf. `st browse` pages the whole catalog as the discovery seed,\nand `st crawl` walks those typed edges breadth-first from any app, package, or\nprofile.\n\nThe same package is also a [resource-URI driver](#use-it-as-a-resource-uri-driver),\nso a host program like [ant](https://github.com/tamnd/ant) can address Steam as\n`steam://` URIs.\n\n## Install\n\n```bash\ngo install github.com/tamnd/steam-cli/cmd/st@latest\n```\n\nOr grab a prebuilt binary from the [releases](https://github.com/tamnd/steam-cli/releases), or run\nthe container image:\n\n```bash\ndocker run --rm ghcr.io/tamnd/st:latest --help\n```\n\n## Usage\n\n```bash\nst app 620                           # one store app in full (by appid or store URL)\nst app 620 -o json                   # as JSON, ready for jq\nst search portal                     # search the store for apps\nst browse --sort Released_DESC       # page through the whole catalog (the discovery seed)\nst crawl 620 --depth 2               # walk the graph breadth-first from a seed\nst reviews 620 -n 50                 # an app's user reviews (cursor-paged)\nst package 7877                      # a package (sub) with the apps it bundles\nst featured                          # the featured store categories' apps\nst top-sellers                       # the current top-selling apps\nst new-releases                      # the new-release apps\nst specials                          # the apps currently on sale\nst coming-soon                       # the upcoming apps\nst news 620                          # an app's news and announcements\nst players 620                       # the live concurrent player count\nst achievements 620                  # global achievement unlock rates\nst profile gabelogannewell           # a public community profile\nst resolve gabelogannewell           # a vanity name to every SteamID form\nst market \"AK-47 | Redline\"          # search the community market\nst price 730 \"AK-47 | Redline (Field-Tested)\"   # one item's lowest, median, volume\nst ref id \u003curl\u003e                      # resolve any Steam URL to its (kind, id)\nst ref steamid STEAM_1:0:11101       # convert a SteamID between its forms\nst --help                            # the whole command tree\n```\n\nEvery command shares one output contract:\n`-o table|markdown|json|jsonl|csv|tsv|url|raw`, `--fields` to pick columns,\n`--template` for a custom line, and `-n` to limit. The default adapts to where\noutput goes (a color-aware table on a terminal, JSONL in a pipe), so the same\ncommand reads well by hand and parses cleanly downstream.\n\nThe storefront locale is set with `--cc`, `--lang`, and `--currency`; the review\nfilters with `--review-filter`, `--review-language`, and `--purchase-type`. The\n`ref` commands are offline and resolve URLs, ids, and SteamID forms with no\nnetwork at all.\n\n## Serve it\n\nThe same operations are available over HTTP and as an MCP tool set for agents,\nwith no extra code:\n\n```bash\nst serve --addr :7777    # GET /v1/app/620  returns NDJSON\nst mcp                   # speak MCP over stdio\n```\n\n## Use it as a resource-URI driver\n\n`st` registers a `steam` domain the way a program registers a database driver\nwith `database/sql`. A host enables it with one blank import:\n\n```go\nimport _ \"github.com/tamnd/steam-cli/steam\"\n```\n\nThen [ant](https://github.com/tamnd/ant) (or any program that links the package)\ndereferences `steam://` URIs without knowing anything about Steam:\n\n```bash\nant get steam://app/620    # fetch the record\nant cat steam://app/620    # just the detailed description\nant ls  steam://app/620    # the edges (dlc, packages, reviews, news)\nant url steam://app/620    # the addressable URL\n```\n\n## Attribution\n\n`st` reads public, read-only data only. It does not log in, store credentials, or\nsolve anti-bot challenges, and it is honest about a walled surface rather than\nworking around it. Every record keeps its `url`, so a downstream view can link\nback to the source on Steam.\n\n## Development\n\n```\ncmd/st/        thin main: hands cli.NewApp to kit.Run\ncli/           assembles the kit App from the steam domain\nsteam/         the library: HTTP client, keyless readers, data models, and domain.go (the driver)\npkg/steamid/   offline SteamID conversion (64-bit, [U:1:N], STEAM_X:Y:Z)\ndocs/          tago documentation site\n```\n\n```bash\nmake build      # ./bin/st\nmake test       # go test ./...\nmake vet        # go vet ./...\n```\n\n## Releasing\n\nPush a version tag and GitHub Actions runs GoReleaser, which builds the archives,\nLinux packages, the multi-arch GHCR image, checksums, SBOMs, and a cosign\nsignature:\n\n```bash\ngit tag v0.1.0\ngit push --tags\n```\n\nThe Homebrew and Scoop steps self-disable until their tokens exist, so the first\nrelease works with no extra secrets.\n\n## License\n\n`st` is an independent tool and is not affiliated with Valve or Steam. Apache-2.0.\nSee [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftamnd%2Fsteam-cli","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftamnd%2Fsteam-cli","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftamnd%2Fsteam-cli/lists"}