BYTETOOLS

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.

No API key requiredCORS enabledHTTPSFree tier

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
curl 'https://steamgpt.net/profile/76561197960287930.json'
JavaScript (fetch)
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);
Python (requests)
import requests

res = requests.get("https://steamgpt.net/profile/76561197960287930.json", timeout=20)
res.raise_for_status()
print(res.json())
Response — HTTP 200
{
  "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

ParameterTypeRequiredDescription
endpointpath segmentRequired`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
steamidpath segmentRequiredSteamID64, vanity URL name or another id format. Send 17-digit ids as strings. 76561197960287930
formatpath extensionOptional`.json`, `.md` or `.ai` appended to the path. No extension returns HTML. .json
include / presetqueryOptionalTrim 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

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.