Media, Film & Knowledge

Steam API

The Steam Games API returns PC-game data from Steam as clean JSON.

18 actionsLive JSON1,000 free creditsMCP-ready
Get a free keyOpen in playground

🤖 Using an AI assistant? Copy this link into ChatGPT / Claude / Cursor — it reads every endpoint and parameter instantly and tells you if this API fits your use case.

The primary app_detail endpoint returns an app's id, name, type, genres, categories, developers, publishers and release date, and you can pull price, reviews, player_stats, search, top_sellers and news. It is built for game analytics, price tracking and gaming apps that need Steam data without a scraper. One ReefAPI key, one shared credit pool, the standard envelope.

Live example

Real request and response JSON

Captured from the indexed primary action, search, on .

Captured request
{
  "method": "POST",
  "url": "https://api.reefapi.com/steam-games/v1/search",
  "headers": {
    "x-api-key": "$REEF_KEY",
    "content-type": "application/json"
  },
  "body": {
    "term": "portal",
    "count": 10
  }
}
Captured response
{
  "ok": true,
  "meta": {
    "api": "steam-games",
    "endpoint": "search",
    "mode": "live",
    "latency_ms": 774.3,
    "record_count": 10,
    "bytes": 3484,
    "cache_hit": false,
    "completeness_pct": 100,
    "requests": 1
  },
  "data": {
    "items": [
      {
        "appid": 620,
        "name": "[redacted-name]",
        "type": "app",
        "price": {
          "currency": "USD",
          "final": 999,
          "initial": 999,
          "discount_percent": 0,
          "is_free": false
        },
        "metascore": 95,
        "platforms": {
          "windows": true,
          "mac": false,
          "linux": true
        },
        "controller_support": "full",
        "review_summary": null,
        "release_date": null,
        "tagids": null,
        "img": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/620/capsule_231x87.jpg?t=[redacted-phone]",
        "source": "storesearch"
      },
      {
        "appid": 400,
        "name": "Portal",
        "type": "app",
        "price": {
          "currency": "USD",
          "final": 999,
          "initial": 999,
          "discount_percent": 0,
          "is_free": false
        },
        "metascore": 90,
        "platforms": {
          "windows": true,
          "mac": false,
          "linux": true
        },
        "controller_support": "full",
        "review_summary": null,
        "release_date": null,
        "tagids": null,
        "img": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/400/capsule_231x87.jpg?t=[redacted-phone]",
        "source": "storesearch"
      },
      {
        "appid": 374040,
        "name": "[redacted-name]",
        "type": "app",
        "price": {
          "currency": "USD",
          "final": 1999,
          "initial": 1999,
          "discount_percent": 0,
          "is_free": false
        },
        "metascore": 72,
        "platforms": {
          "windows": true,
          "mac": false,
          "linux": false
        },
        "controller_support": null,
        "review_summary": null,
        "release_date": null,
        "tagids": null,
        "img": "https://shared.akamai.steamstatic.com/store_item_assets/steam/apps/374040/capsule_231x87.jpg?t=[redacted-phone]",
        "source": "storesearch"
      }
    ],
    "count": 10,
    "total_results": 10,
    "source": "storesearch",
    "term": "portal",
    "filter": "search",
    "facets": null,
    "completeness": 100
  }
}
Actions

What the Steam API does

ActionDescriptionConcrete use caseKey params
app_detailfull game metadata from store appdetails (+structured languages; include_tags adds community tags/franchise/links)Content platforms call app_detail to get full game metadata from store appdetails (+structured languages; include_tags adds community….appid, cc, country, lang, language, ...
priceregional price + discount (appdetails price_overview)Research tools call price to get regional price + discount (appdetails price_overview).appid, cc, country, lang, language
reviewsuser reviews + query_summary; review_type/day_range/trend (day|week|month|year)/sort=funny; redact_pii drops author identityCommunity analysts call reviews to get user reviews + query_summary; review_type/day_range/trend (day|week|month|year)/sort=funny; r….appid, language, lang, num_per_page, limit, ...
player_statssteamspy owners + optional current player countMedia monitors call player_stats to get steamspy owners + optional current player count.appid, include_current_players
searchstore search → appid+price (+metascore on keyword); faceting: tags/type/category1/supportedlang/maxprice/specials. term OR a facet required.Content platforms call search to get store search → appid+price (+metascore on keyword); faceting.term, query, q, count, limit, ...
top_sellersSteam top sellers chart slice (appid+price per item); same facets as searchResearch tools call top_sellers to get steam top sellers chart slice (appid+price per item); same facets as search.count, limit, start, cc, country, ...
newsofficial game news (ISteamNews/GetNewsForApp)Community analysts call news to get official game news (ISteamNews/GetNewsForApp).appid, count, limit, maxlength
tagscommunity tags (InitAppTagModal) + franchise + external links (store page)Media monitors call tags to get community tags (InitAppTagModal) + franchise + external links (store page).appid, cc, country, lang, language
similar_gamesrecommended similar games (appids) via /recommended/morelikeContent platforms call similar_games to get recommended similar games (appids) via /recommended/morelike.appid, count, limit
artworksofficial art-asset URLs (header/capsule/library/hero/logo/background)Research tools call artworks to get official art-asset URLs (header/capsule/library/hero/logo/background).appid, cc, country, lang, language
guidesCommunity guides for a game (Steam Workshop guides) — top-rated, trending or most-recent. Each guide: title, author, star rating, preview image and URL.Community analysts call guides to get community guides for a game (Steam Workshop guides).appid, sort, page, limit
dlcList a game's DLC with names + regional prices. The base game's DLC appids are resolved to titles/prices (bounded by `resolve` to keep latency sane).Media monitors call dlc to list a game's DLC with names + regional prices.appid, cc, country, lang, language, ...
packageSteam package / bundle (a.k.a. 'sub') details — the apps it contains, the bundled price, platforms and release date. Use the package ids from app_detail.package_groups.Content platforms call package to get steam package / bundle (a.k.a.packageid, package_id, subid, id, cc, ...
featuredStore-front discovery lists: specials (current deals), new_releases, coming_soon and top_sellers — each with appid + price. Pick one with `category`, or get all four.Research tools call featured to get store-front discovery lists.category, type, count, limit, cc, ...
most_playedOfficial Steam most-played chart — live concurrent player count + 24h peak per game (the only keyless source of all-time/period peak). Optionally enrich rows with names.Community analysts call most_played to get official Steam most-played chart.count, limit, resolve, cc, country, ...
review_histogramRecommendations up/down over the game's lifetime (Steam's own review histogram) — the data behind the store review-trend graph.Media monitors call review_histogram to get recommendations up/down over the game's lifetime (Steam's own review histogram).appid, lang, language
player_profilePublic Steam profile summary by 64-bit steamid OR vanity name (keyless). Returns persona, avatar, online state, ban flags and the privacy state. Note: owned-games / friends are NOT available on Steam's keyless surface — this is the profile summary.Content platforms call player_profile to get public Steam profile summary by 64-bit steamid OR vanity name (keyless).steamid, steamid64, steam_id, vanity, vanity_url, ...
resolveTurn a human name into ids so callers never hand-find a URL: a game name → matching appids (chains to app_detail), or a vanity name (kind=profile) → steamid64.Research tools call resolve to turn a human name into ids so callers never hand-find a URL.term, query, q, name, kind, ...
Code samples

Call search from your stack

curl -X POST https://api.reefapi.com/steam-games/v1/search \
  -H "x-api-key: $REEF_KEY" \
  -H "content-type: application/json" \
  -d '{"term":"portal","count":10}'
MCP one-liner
Ask your MCP-connected assistant: call reefapi.steam-games.search with {"term":"portal","count":10}.
Use cases

Who uses this API and why

  • Price trackers call price and app_detail to alert on Steam discounts.
  • Game analytics use reviews and player_stats to gauge reception and engagement.
  • Discovery apps use search and top_sellers to surface popular titles.
FAQ

Questions developers ask before integrating

What is the Steam API?

Steam API is a ReefAPI endpoint group for game details, prices, reviews and player counts. It returns live JSON through POST requests under /steam-games/v1.

Is the Steam API free to try?

Yes. ReefAPI starts with 1,000 free credits, no card required. Steam calls use the same shared credit balance as every other ReefAPI engine.

Do I need a Steam login or account?

No login to Steam is needed for the API response. You call ReefAPI with your x-api-key header, and the playground can run live examples before you create a production key.

How fresh is the Steam data?

The page example is captured from a live app_detail call, and production requests fetch live data through ReefAPI rather than a static sample.

How many credits does the Steam API use?

Steam actions currently cost 1-2 credits per successful call. Failed or blocked calls are free, and all APIs draw from one credit pool.

Can I call Steam from an AI assistant or MCP client?

Yes. Connect ReefAPI once through MCP and your assistant can call steam-games actions with the same key, credit pool and JSON envelope used by normal REST requests.

Is the Steam API a Steam scraper?

It is the managed alternative to a DIY Steam scraper. Instead of building and maintaining your own scraper — proxies, headless browsers, captcha and constant breakage — you call one ReefAPI endpoint and get the same game details, prices, reviews and player counts back as clean JSON.

Why does my Steam scraper keep getting blocked?

Most Steam scrapers break on anti-bot defenses, rate limits and IP bans that need rotating residential proxies and browser fingerprinting to clear. ReefAPI handles all of that for you — no proxies, no captchas, no maintenance — and returns live JSON. Blocked or failed calls are free.

docs / steam-games

Steam

Game details, prices, reviews and player counts.

base /steam-games/v118 endpoints
post/steam-games/v1/app_detail2 credits

full game metadata from store appdetails (+structured languages; include_tags adds community tags/franchise/links)

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
cc = usoptionalStore region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.
lang = englishoptionalSteam language name (e.g. english, french, schinese) for localized store text.
include_tags = falseoptionalAlso fetch community tags + franchise + external links (one extra store-page request).
include_raw = falseoptionalAttach the raw Steam appdetails payload under _raw.
Try in playground →
post/steam-games/v1/price1 credit

regional price + discount (appdetails price_overview)

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
cc = usoptionalStore region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.
lang = englishoptionalSteam language name (e.g. english, french, schinese) for localized store text.
Try in playground →
post/steam-games/v1/reviews1 credit

user reviews + query_summary; review_type/day_range/trend (day|week|month|year)/sort=funny; redact_pii drops author identity

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
language = alloptionalReview language (Steam name, or 'all'). Default all.
num_per_page = 20optional1–100How many reviews to return (1-100). Clamped to range.
filter = recentoptionalrecent · updated · all · toprated · helpfulOrdering. recent/updated/all are Steam-native; toprated/top/helpful/best are remapped to 'all'.
review_type = alloptionalall · positive · negativeRecommendation polarity filter.
day_rangeoptionalTrending window in days (used with filter=all). Set directly, or via the `trend` shortcut.
trendoptionalday · week · month · yearShortcut that sets day_range + filter=all for a trending window.
sortoptionalfunny · funniestOptional client-side re-sort. Only funny/funniest reorder; otherwise Steam's native order is kept.
purchase_type = alloptionalall · steam · non_steam_purchaseRestrict to reviewers by purchase source.
cursor = *optionalPagination cursor — pass the previous response's `cursor` for the next page.
redact_pii = falseoptionalDrop author identity (steamid/profile/name/avatar/playtime) from each review.
Try in playground →
post/steam-games/v1/player_stats1 credit

steamspy owners + optional current player count

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
include_current_players = trueoptionalAlso fetch the live concurrent player count.
Try in playground →
post/steam-games/v1/top_sellers1 credit

Steam top sellers chart slice (appid+price per item); same facets as search

ParameterAllowed / rangeDescription
count = 25optional1–100How many items to return (1-100). Clamped to range.
start = 0optional0–Result offset for paging (skip N).
cc = usoptionalStore region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.
lang = englishoptionalSteam language name (e.g. english, french, schinese) for localized store text.
tagsoptionalFilter by Steam tag id(s) (e.g. 19=Action) — discover ids via the tags action. Comma-list or array.
typeoptionalgame · dlc · software · demo · soundtrack · mod · hardware · video · bundleContent type → Steam category1 facet. Common values shown; plurals (games/demos/…) also accepted.
category1optionalAdvanced: raw Steam category1 facet id (998=Games, 21=DLC). Overrides `type`.
supportedlangoptionalFilter to titles supporting this Steam language facet.
maxpriceoptionalSteam maxprice facet (region price cap; Steam's own bucketing).
Try in playground →
post/steam-games/v1/news1 credit

official game news (ISteamNews/GetNewsForApp)

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
count = 10optional1–100How many items to return (1-100). Clamped to range.
maxlength = 300optional0–Truncate each news body to this many characters (0 = no cap from this param).
Try in playground →
post/steam-games/v1/tags1 credit

community tags (InitAppTagModal) + franchise + external links (store page)

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
cc = usoptionalStore region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.
lang = englishoptionalSteam language name (e.g. english, french, schinese) for localized store text.
Try in playground →
post/steam-games/v1/similar_games1 credit

recommended similar games (appids) via /recommended/morelike

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
count = 20optional1–50How many items to return (1-50). Clamped to range.
Try in playground →
post/steam-games/v1/artworks1 credit

official art-asset URLs (header/capsule/library/hero/logo/background)

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
cc = usoptionalStore region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.
lang = englishoptionalSteam language name (e.g. english, french, schinese) for localized store text.
Try in playground →
post/steam-games/v1/guides1 credit

Community guides for a game (Steam Workshop guides) — top-rated, trending or most-recent. Each guide: title, author, star rating, preview image and URL.

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
sort = trendoptionaltrend · toprated · mostrecentHow to order the guides.
page = 1optional1–Result page.
limit = 30optional1–50Max guides to return (1–50).
Try in playground →
post/steam-games/v1/dlc1 credit

List a game's DLC with names + regional prices. The base game's DLC appids are resolved to titles/prices (bounded by `resolve` to keep latency sane).

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
cc = usoptionalStore region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.
lang = englishoptionalSteam language name (e.g. english, french, schinese) for localized store text.
resolve = 25optional0–60How many rows to enrich with names (extra per-id lookups; 0-60). Steam serves one app per detail call, so this bounds latency; un-enriched rows still return their appid.
Try in playground →
post/steam-games/v1/package1 credit

Steam package / bundle (a.k.a. 'sub') details — the apps it contains, the bundled price, platforms and release date. Use the package ids from app_detail.package_groups.

ParameterAllowed / rangeDescription
packageidrequiredSteam package/sub id (from app_detail.package_groups[].subs[].packageid).
cc = usoptionalStore region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.
lang = englishoptionalSteam language name (e.g. english, french, schinese) for localized store text.
Try in playground →
post/steam-games/v1/most_played1 credit

Official Steam most-played chart — live concurrent player count + 24h peak per game (the only keyless source of all-time/period peak). Optionally enrich rows with names.

ParameterAllowed / rangeDescription
count = 25optional1–100How many items to return (1-100). Clamped to range.
resolve = 0optional0–50How many rows to enrich with names (extra per-id lookups; 0-50). Steam serves one app per detail call, so this bounds latency; un-enriched rows still return their appid.
cc = usoptionalStore region — ISO-3166-1 alpha-2 (lower-cased). Drives currency & regional pricing.
lang = englishoptionalSteam language name (e.g. english, french, schinese) for localized store text.
Try in playground →
post/steam-games/v1/review_histogram1 credit

Recommendations up/down over the game's lifetime (Steam's own review histogram) — the data behind the store review-trend graph.

ParameterAllowed / rangeDescription
appidrequiredSteam application id (the number in a store URL, e.g. 730 = CS2).
lang = englishoptionalSteam language name (e.g. english, french, schinese) for localized store text.
Try in playground →
post/steam-games/v1/player_profile1 credit

Public Steam profile summary by 64-bit steamid OR vanity name (keyless). Returns persona, avatar, online state, ban flags and the privacy state. Note: owned-games / friends are NOT available on Steam's keyless surface — this is the profile summary.

ParameterAllowed / rangeDescription
steamidoptional64-bit SteamID. Provide this OR `vanity`.
vanityoptionalCustom URL name from steamcommunity.com/id/<name>. Resolved to a steamid. Provide this OR `steamid`.
Try in playground →
post/steam-games/v1/resolve1 credit

Turn a human name into ids so callers never hand-find a URL: a game name → matching appids (chains to app_detail), or a vanity name (kind=profile) → steamid64.

ParameterAllowed / rangeDescription
termrequiredGame title (kind=app) or vanity name (kind=profile) to resolve.
kind = appoptionalapp · profileWhat to resolve.
count = 10optional1–50How many items to return (1-50). Clamped to range.
Try in playground →