Agent tip: fetch the .md version of this page - same data, fewer tokens. Checking many players? Batch up to 100 ids: /batch/{id1,...,id100}.md
SteamGPT Data Methodology
SteamGPT is a serializer of public records, not an analytics engine: it reports what Steam and FACEIT return, and never guesses.
No inference
SteamGPT does not infer Steam bans, skill or reputation from player behavior. Ban information is returned exactly as provided by Steam GetPlayerBans; FACEIT information is returned exactly as provided by the FACEIT API. Field names are never renamed or reinterpreted.
Absence is not evidence
A missing response is never interpreted as a negative result. When a source does not answer, JSON responses carry sources: "unavailable" and partial: true, and human-readable formats say "unknown", never "none". empty means the source answered and the player simply has no such data - a real fact.
Known caveats
DaysSinceLastBanis 0 both for "banned today" and "never banned" - read it together with the ban counters, exactly as Steam returns it- The friend graph is a platform snapshot of the public Steam graph, not a live query: it can be partial, so an empty intersection between two players is not proof they are unrelated
- Private profiles return HTTP 200 with the public subset of fields, not 404
- Cache-only endpoints (
/batch,/friends) may miss brand-new accounts - re-fetch those via/profile, which goes to Steam
Trust the data programmatically
Every JSON response carries per-source provenance (source, retrieved_at, age_seconds, fresh, cache_ttl). Branch on partial / sources, not on nulls. Details: docs.md, sources list: /sources.