SteamGPT API
Free Steam data API with no key: profile lookups, SteamID64 to STEAM_ and [U:1:] conversion, VAC and game bans, FACEIT stats and the public friend graph. Live example.
Endpoint tested and returned HTTP 200 on 2026-08-21
What is the SteamGPT API?
SteamGPT is a free, key-free API for public Steam data. It converts between SteamID formats, returns profile summaries, VAC, game, community and trade ban status, FACEIT statistics and the public friend graph, with an explicit provenance block on every response.
The provenance block is what distinguishes this from a thin Steam proxy. Each data section arrives with `source`, `retrieved_at`, `age_seconds`, `fresh` and `cache_ttl`, so you know whether the online status you are about to display was fetched a minute ago or a day and a half ago. Branching on `provenance.fresh` rather than on whether a field happens to be populated is the difference between reporting 'currently offline' and reporting 'offline as of yesterday'.
Note that `steamid64` is a string throughout, deliberately. A 17-digit Steam id exceeds the range JSON numbers represent exactly, and parsing one numerically does not throw — it silently returns a different, valid-looking account. The API also picks its output format from the URL extension: append `.json` for code, `.md` for something a human might read, `.ai` for flat facts, or nothing at all for HTML. It is an independent service, not affiliated with Valve, and it serves only data already public on a profile.
Quick facts
- Base URL
https://steamgpt.net- Authentication
- Anonymous by default — no accounts, no keys, no cookies. An optional self-service bearer token, obtained without human involvement, raises the per-address soft limit from 120 to 600 requests a minute.
- Rate limit
- 120 requests per minute per address anonymously, rising to 600 with the optional self-service token.
- Pricing
- Free.
- CORS
- Enabled — callable directly from browser JavaScript
- Official docs
- Read the docs
How to use the SteamGPT API
Every request below was executed against the live API on 2026-08-21, and the response shown is the real body it returned — not an illustration.
1. Look up a Steam profile by SteamID64
GET https://steamgpt.net/profile/76561197960287930.json
curl 'https://steamgpt.net/profile/76561197960287930.json'const res = await fetch("https://steamgpt.net/profile/76561197960287930.json");
if (!res.ok) throw new Error(`Request failed: ${res.status}`);
const data = await res.json();
console.log(data);import requests
res = requests.get("https://steamgpt.net/profile/76561197960287930.json", timeout=20)
res.raise_for_status()
print(res.json()){
"result": "success",
"data": {
"steamid64": "76561197960287930",
"ids": {
"steamid64": "76561197960287930",
"steamid": "STEAM_1:0:11101",
"steamid3": "[U:1:22202]"
},
"steam": {
"steamid": "76561197960287930",
"communityvisibilitystate": 2,
"profilestate": 1,
"personaname": "Rabscuttle",
"profileurl": "https://steamcommunity.com/id/GabeLoganNewell/",
"avatar": "https://avatars.steamstatic.com/c5d56249ee5d28a07db4ac9f7f60af961fab5426.jpg",
"avatarmedium": "https://avatars.steamstatic.com/c5d56249ee5d28a07db4ac9f7f60af961fab5426_medium.jpg",
"avatarfull": "https://avatars.steamstatic.com/c5d56249ee5d28a07db4ac9f7f60af961fab5426_full.jpg",
"avatarhash": "c5d56249ee5d28a07db4ac9f7f60af961fab5426",
"personastate": 0,
"player_name": "Rabscuttle"
},
"canonical": {
"steamid64": "76561197960287930",
"url": "https://steamgpt.net/profile/76561197960287930"
},
"provenance": {
"steam": {
"source": "Steam Web API",
"retrieved_at": 1787148825,
"age_seconds": 149567,
"fresh": true,
"cache_ttl": 172800
}
}
}
}Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
endpoint | path segment | Required | `profile` for the Steam block, `identity` for id conversion only, `bans` for a ban check, `summary` for everything, `batch` for up to 100 ids at once. profile |
steamid | path segment | Required | SteamID64, vanity URL name or another id format. Send 17-digit ids as strings. 76561197960287930 |
format | path extension | Optional | `.json`, `.md` or `.ai` appended to the path. No extension returns HTML. .json |
include / preset | query | Optional | Trim a `summary` response to named sections instead of fetching everything. steam,bans |
Response fields
resultstring- `success` or `error`. Errors also carry a `code` and a `message` naming the problem.
data.steamid64string- The canonical id, as a string. Parsing it as a number silently points at a different account.
data.idsobject- All three id formats together — `steamid64`, the legacy `STEAM_1:0:11101` form and the `[U:1:22202]` form. This is the whole SteamID converter in one field.
data.steamobject- The public profile block: `personaname`, `profileurl`, three avatar sizes plus an `avatarhash`, `personastate` and `communityvisibilitystate`.
data.steam.communityvisibilitystateinteger- Valve's own enum, where 2 typically means public. A private profile limits everything else in the block.
data.canonicalobject- The canonical id and the SteamGPT URL for it, useful for deduplicating inputs that arrive in different formats.
data.provenanceobject- Per-section freshness: `source`, `retrieved_at`, `age_seconds`, `fresh` and `cache_ttl`. Branch on `fresh` before presenting anything as current.
What you can build with the SteamGPT API
- Convert between SteamID64, STEAM_ and [U:1:] formats
- Check VAC and game ban status before accepting a tournament entry
- Show a player's Steam avatar and persona name on a community site
- Look up FACEIT level alongside Steam identity in one call
- Batch-resolve up to 100 ids in a single request instead of looping
Common errors and how to fix them
404 with `unknown_endpoint`
The path is not one of the documented endpoints.
Fix: The error body names the documentation URL. Endpoints are `identity`, `profile`, `bans`, `summary` and `batch`.
An id that resolves to the wrong account
The 17-digit SteamID64 was parsed as a JSON number and lost precision.
Fix: Keep it a string end to end, including in any intermediate JSON you generate.
Empty profile fields on a real account
The profile is private — check `communityvisibilitystate`.
Fix: Distinguish private from unavailable using `provenance`: unavailable means the upstream did not answer, empty means the player genuinely has no such data.
429
Above 120 requests a minute anonymously.
Fix: Use the `batch` endpoint for up to 100 ids per call, or request the optional self-service token to lift the limit to 600.
SteamGPT API — frequently asked questions
Does SteamGPT require an API key?
No. Every endpoint works anonymously with no account, key or cookie. An optional self-service token — issued without human involvement — raises the rate limit from 120 to 600 requests a minute, but nothing requires it.
How do I convert a SteamID64 to the STEAM_ format?
Call the `identity` endpoint with any id format and read `data.ids`, which returns all three forms together: the 17-digit SteamID64, the legacy `STEAM_1:0:11101` and the modern `[U:1:22202]`.
Is SteamGPT affiliated with Valve?
No. It is an independent service that reads and reformats data already public on Steam profiles. It is not a Valve product and it exposes nothing private.
What is the provenance block for?
It tells you how fresh each section is — when it was retrieved, how old that is, and whether it is still considered current. Check `provenance.fresh` before stating online status, current game or ban status as up to date.
Tools that pair with this API
JSON Formatter
Format, beautify and minify JSON online with 2-space, 4-space or tab indentation. Sort keys alphabetically and catch syntax errors instantly — free and private.
JSON Flattener
Flatten nested JSON into single-level dot-notation keys online. Choose the separator, bracket or dotted array indexes, and copy or download the result.
Timestamp Converter
Convert timestamps to human-readable dates and dates back to timestamps. Auto-detects seconds vs milliseconds, shows local, UTC and ISO 8601 formats.
SteamGPT is an independent third-party service and is not affiliated with ByteTools or ByteVancer. Details on this page were verified on 2026-08-21; always check the official documentation before relying on this API in production, as terms and limits can change.