Quick start
Fetch your first records with st.
Once st is on your PATH, fetch a store app. The argument is an appid, a store
URL, or anything st ref id can classify:
st app 620
By default you get an aligned table. Ask for JSON when you want to pipe it:
$ st app 620 -o json
[
{
"id": "620",
"name": "Portal 2",
"type": "game",
"developers": ["Valve"],
"publishers": ["Valve"],
"url": "https://store.steampowered.com/app/620",
...
}
]
st app fetches the store JSON, then folds in the two structured islands the
store page carries that the JSON omits: the schema.org rating and the user tag
list.
Shape the output
The same flags work on every command:
st app 620 --fields id,name,url # keep only these columns
st app 620 --template '{{.name}}' # just the name
st search portal -o jsonl | jq .id # one object per line, into jq
-o takes table, markdown, json, jsonl, csv, tsv, url, or raw.
Left to auto, it prints a table to a terminal and JSONL into a pipe, so the same
command reads well by hand and parses cleanly downstream. See
output formats for the full contract.
Search the store
search takes a free-text query and returns matching apps, each addressable by
its appid:
st search portal # matching apps
st search portal -n 5 -o url # the first five, as URLs
st search portal -o url | head -3 | sed 's#.*/app/##' | xargs -n1 st app
Browse and crawl the catalog
search answers a query; browse enumerates the whole catalog. It pages the
same list the store scrolls (around 260,000 apps), so it is the seed for a bulk
walk or export. crawl then follows the typed edges a record carries: an app to
its DLC, demos, base game, and packages, a package to the apps it bundles, a
profile to its most-played apps.
st browse --sort Released_DESC -n 20 # the 20 newest apps
st browse --maxprice free -n 50 # the first 50 free apps
st crawl 620 --depth 2 # the graph two hops out from Portal 2
st crawl gabelogannewell --depth 1 # a profile's most-played apps
Walk one app's graph
Everything below addresses the same appid, so an app and its data line up:
st reviews 620 -n 50 # user reviews (cursor-paged)
st news 620 # news and announcements
st players 620 # the live concurrent player count
st achievements 620 # global achievement unlock rates
st package 7877 # a package (sub) with the apps it bundles
st featured # the featured store categories' apps
st top-sellers # the current top-selling apps
st specials # the apps currently on sale
featured flattens every promoted category; top-sellers, new-releases,
specials, and coming-soon are the named slices of the same endpoint.
Profiles and the market
st profile gabelogannewell # a public community profile
st resolve gabelogannewell # a vanity name to every SteamID form
st market "AK-47 | Redline" # search the community market
st price 730 "AK-47 | Redline (Field-Tested)" # one item's lowest, median, volume
Resolve references offline
The ref commands touch no network. They classify any Steam reference, build the
URL for a kind and id, and convert a SteamID between its forms:
st ref id https://store.steampowered.com/app/620/Portal_2/ # -> (app, 620)
st ref url app 620 # -> the store URL
st ref steamid STEAM_1:0:11101 # all SteamID forms
Serve it instead
The same operations are available over HTTP and to agents over MCP:
st serve --addr :7777 &
curl -s 'localhost:7777/v1/app/620' # NDJSON, one record per line
st mcp # MCP over stdio
From here, the guides cover the common jobs and the CLI reference lists every command and flag.