CS2.SPACE API DOCS

Counter-Strike 2 and Dota 2 player data from Steam, Faceit and Leetify, parsed inventories with live prices, and 790+ rank and badge images. Every endpoint, parameter and error below, with real responses.

OpenAPI spec ↗llms.txt ↗

Quick start

  1. Sign in on the dashboard and create an API key. The free plan needs no card.
  2. Send it in the x-api-key header with any request.
BASH
curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/profile/ChetCS"

Authentication

Every endpoint except /api/assets/* and /api/health needs an API key in the x-api-key header. Keep keys server-side: anyone with your key can use your quota. You can create up to 10 keys and delete them from the dashboard; limits are shared across all of them.

Player IDs can be a SteamID64 (17 digits) or the custom name from a profile URL (steamcommunity.com/id/ChetCS).

Endpoints

Player profile

GET/api/profile/{id}API key required

Everything about a player in one call: Steam profile, bans, level, owned games, CS2 lifetime stats, friends, friend code, Game Coordinator data (commendations, profile rank, badges), CS2 inventory summary, Faceit and Leetify.

ParameterInTypeRequiredDescription
idpathstringYesSteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS).
includequerystringNoExtra data to add. dota2 adds a dota2Inventory field: the player's Dota 2 inventory, most valuable items first, with totals for the whole inventory (same shape as the Dota 2 inventory endpoint). PRO and DEVELOPER plans. One of: dota2.
dota2LimitquerystringNoWith include=dota2: how many items to return, as a number or all. Large inventories with all can be several MB. Default: 200.
  • FREE keys get Steam profile data only: faceit, leetify and steam.inventory are null and a _notice field explains how to upgrade.
  • faceit is null when the player has no Faceit account; leetify is null when they have no Leetify profile.
  • leetify.avatar provides the player's Leetify profile picture URL, a Leetify-generated placeholder (a dicebear.com URL, or https://leetify.com/assets/images/anon.png for players not signed up to Leetify) if unset, or null when unavailable.
  • leetifyStatus indicates the freshness of the leetify field: 'fresh' | 'cached' | 'stale' | 'none' | 'unavailable' | 'deferred'.
  • steam.stats is a list of {name, value} pairs from Steam's CS2 stats (total_kills, total_wins, ...).
  • Badge imageUrl values are full links you can use directly in an <img>.
  • Profile data is cached for up to 3 hours; inventory prices are always current.
REQUEST
curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/profile/ChetCS"
RESPONSE · long arrays shortened to one entry
{
  "steamId": "76561197963540638",
  "steam": {
    "player": {
      "steamid": "76561197963540638",
      "personaname": "Chet",
      "profileurl": "https://steamcommunity.com/id/ChetCS/",
      "avatarfull": "https://avatars.steamstatic.com/7eff590c73206f7f0bb6bfbbf9fd3f3e46c95826_full.jpg",
      "timecreated": 1072291152,
      "communityvisibilitystate": 3
    },
    "bans": {
      "SteamId": "76561197963540638",
      "CommunityBanned": false,
      "VACBanned": false,
      "NumberOfVACBans": 0,
      "DaysSinceLastBan": 0,
      "NumberOfGameBans": 0,
      "EconomyBan": "none"
    },
    "level": 70,
    "games": [
      {
        "appid": 10,
        "playtime_forever": 45104
      }
    ],
    "stats": [
      {
        "name": "total_kills",
        "value": 99648
      },
      {
        "name": "total_deaths",
        "value": 81581
      },
      {
        "name": "total_time_played",
        "value": 5582556
      }
    ],
    "friends": [
      {
        "steamid": "76561190000000000",
        "relationship": "friend",
        "friend_since": 1550022592
      }
    ],
    "friendCode": "AYR6T-HGDA",
    "gc": {
      "commendations": {
        "friendly": 118,
        "teacher": 82,
        "leader": 80
      },
      "playerLevel": 18,
      "playerCurXp": 327683388,
      "badges": [
        {
          "name": "Premier Season Four Medal",
          "image": "/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png",
          "rarity": "Extraordinary",
          "imageUrl": "https://cs2.space/api/assets/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png"
        }
      ],
      "featuredBadge": {
        "name": "Premier Season Four Medal",
        "image": "/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png",
        "rarity": "Extraordinary",
        "imageUrl": "https://cs2.space/api/assets/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png"
      }
    },
    "coinsAndPins": [
      {
        "name": "Premier Season Four Medal",
        "image": "https://community.cloudflare.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGJWk3ka5VeTr0M-gJnSZ9hll5oL541z1fg70n4Xv8x0P0PGhYapSdKXdWzLGkOt15-QxHi_ql0ly5DmHnN-hJC2RPVJxWcB4QbZY4Riwk4HjNfSiuVKLPsh8JA"
      }
    ],
    "inventory": {
      "summary": {
        "totalCount": 505,
        "tradableCount": 473,
        "totalValue": 1530.62,
        "totalValueFormatted": "$1,530.62"
      },
      "pagination": {
        "total": 505,
        "limit": 200,
        "offset": 0,
        "hasMore": true
      }
    }
  },
  "faceit": {
    "player_id": "3699c7a1-7ee1-4c2d-bcca-49fdb2071a4e",
    "nickname": "aimbotthot1",
    "country": "us",
    "faceit_url": "https://www.faceit.com/{lang}/players/aimbotthot1",
    "games": {
      "cs2": {
        "region": "NA",
        "skill_level": 4,
        "faceit_elo": 1018,
        "game_player_id": "76561197963540638"
      }
    }
  },
  "leetify": {
    "name": "Chet",
    "steam64_id": "76561197963540638",
    "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/59/590cec88b7cb47417e19c19058cb4f95b364f59d_full.jpg",
    "first_match_date": "2020-08-01T22:09:58.000Z",
    "total_matches": 2265,
    "winrate": 0.3,
    "rating": {
      "aim": 48.4047,
      "positioning": 52.3922,
      "utility": 38.4005,
      "clutch": 0.0672,
      "opening": -0.0084,
      "ct_leetify": -0.0103,
      "t_leetify": -0.0054
    },
    "ranks": {
      "leetify": -0.77,
      "premier": 15960,
      "faceit": null,
      "faceit_elo": null,
      "wingman": 7,
      "renown": null,
      "competitive": [
        {
          "map_name": "de_dust2",
          "rank": 10
        }
      ]
    },
    "stats": {
      "accuracy_head": 26.7328,
      "reaction_time_ms": 595.9576,
      "preaim": 10.765,
      "spray_accuracy": 24.8483
    },
    "recent_matches": [
      {
        "id": "ba2a8847-0c8c-4be7-97e2-69d9dd67e733",
        "finished_at": "2026-09-30T21:10:47.000Z",
        "data_source": "matchmaking",
        "outcome": "win",
        "map_name": "de_cache",
        "score": [
          13,
          2
        ],
        "leetify_rating": 0.0279,
        "rank": 15960
      }
    ]
  },
  "leetifyStatus": "fresh"
}

Resolve a SteamID

GET/api/steamid/{id}API key required

Converts a custom profile URL name or SteamID64 into every SteamID format, plus name and avatar.

ParameterInTypeRequiredDescription
idpathstringYesSteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS).
REQUEST
curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/steamid/ChetCS"
RESPONSE · long arrays shortened to one entry
{
  "steam32": 3274910,
  "steam64": "76561197963540638",
  "steam2": "STEAM_0:0:1637455",
  "steam3": "[U:1:3274910]",
  "profile_url": "https://steamcommunity.com/id/ChetCS/",
  "avatar": "https://avatars.steamstatic.com/7eff590c73206f7f0bb6bfbbf9fd3f3e46c95826_full.jpg",
  "name": "Chet"
}

CS2 inventory

GET/api/inventory/{id}API key requiredPRO & DEVELOPER

A player's Counter-Strike 2 inventory, parsed: category, rarity, exterior, exact float and pattern seed, stickers, StatTrak/Souvenir, trade lock, working inspect link and USD price for every item.

ParameterInTypeRequiredDescription
idpathstringYesSteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS).
categoryquerystringNoOnly return one category. One of: knives, gloves, rifles, sniper_rifles, pistols, smgs, shotguns, machineguns, cases, stickers, agents, music_kits, pins_coins, patches, graffiti, other.
sortquerystringNoSort order. Default is Steam's inventory order. One of: price_desc, price_asc, name_asc.
limitqueryintegerNoItems per page, 1 to 1000. Default: 100.
offsetqueryintegerNoNumber of items to skip. Default: 0.
freshquerybooleanNoPRO and DEVELOPER keys only: skip the 30 minute cache and fetch from Steam. Default: false.
  • Prices are USD market prices, refreshed every 15 minutes. Items with no active market have price: null.
  • Doppler-style items whose phase isn't exposed are valued at the cheapest phase.
  • summary always describes the whole inventory; pagination.total counts items after the category filter.
  • Inventories are cached for 30 minutes (cached and cachedAt tell you when the data is from).
REQUEST
curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/inventory/76561198074762801?category=knives&sort=price_desc&limit=1"
RESPONSE · long arrays shortened to one entry
{
  "steamId": "76561198074762801",
  "steamInventoryUrl": "https://steamcommunity.com/profiles/76561198074762801/inventory/",
  "summary": {
    "totalCount": 474,
    "tradableCount": 433,
    "statTrakCount": 33,
    "souvenirCount": 12,
    "totalValue": 42995.38,
    "totalValueFormatted": "$42,995.38",
    "categoryCounts": {
      "smgs": 16,
      "gloves": 5,
      "cases": 5,
      "knives": 14,
      "rifles": 18,
      "pins_coins": 82,
      "pistols": 96,
      "other": 11,
      "stickers": 187,
      "sniper_rifles": 15,
      "shotguns": 7,
      "music_kits": 13,
      "agents": 5
    },
    "rarityCounts": {
      "Mil-Spec Grade": 88,
      "Extraordinary": 54,
      "Base Grade": 10,
      "Covert": 24,
      "Restricted": 24,
      "Classified": 18,
      "Industrial Grade": 10,
      "High Grade": 185,
      "Remarkable": 39,
      "Exotic": 10,
      "Consumer Grade": 3,
      "Master": 3,
      "Stock": 4,
      "Exceptional": 2
    }
  },
  "items": [
    {
      "assetId": "41918635414",
      "classId": "7993042582",
      "instanceId": "188530139",
      "amount": 1,
      "name": "★ Butterfly Knife | Fade",
      "marketName": "★ Butterfly Knife | Fade (Factory New)",
      "marketHashName": "★ Butterfly Knife | Fade (Factory New)",
      "type": "★ Covert Knife",
      "category": "knives",
      "rarity": {
        "name": "Covert",
        "color": "#eb4b4b"
      },
      "exterior": "Factory New",
      "weapon": "Butterfly Knife",
      "itemSet": "The Breakout Collection",
      "iconUrl": "https://community.cloudflare.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1w...",
      "iconUrlLarge": null,
      "isStatTrak": false,
      "isSouvenir": false,
      "tradable": true,
      "marketable": true,
      "tradableAfter": null,
      "inspectLink": "steam://run/730//+csgo_econ_action_preview%20A7B7311C09333BA6BF24A387818FA197A49F7E127145A4E732A2CF27A5D7AF184F3356",
      "floatValue": 0.013037406839430332,
      "paintSeed": 661,
      "steamInventoryUrl": "https://steamcommunity.com/profiles/76561198074762801/inventory/#730_2_41918635414",
      "nameTag": null,
      "stickers": [],
      "price": {
        "amount": 2566.68,
        "formatted": "$2566.68",
        "currency": "USD"
      }
    }
  ],
  "pagination": {
    "total": 14,
    "limit": 1,
    "offset": 0,
    "hasMore": true
  },
  "cached": true,
  "cachedAt": "2026-10-02T03:00:44.103Z",
  "stale": false
}

CS2 inventory summary

GET/api/inventory/{id}/summaryAPI key requiredPRO & DEVELOPER

Totals only: item count, tradable/StatTrak/Souvenir counts, total USD value, and counts per category and rarity.

ParameterInTypeRequiredDescription
idpathstringYesSteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS).
freshquerybooleanNoPRO and DEVELOPER keys only: skip the 30 minute cache and fetch from Steam. Default: false.
REQUEST
curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/inventory/76561198074762801/summary"
RESPONSE · long arrays shortened to one entry
{
  "steamId": "76561198074762801",
  "summary": {
    "totalCount": 474,
    "tradableCount": 433,
    "statTrakCount": 33,
    "souvenirCount": 12,
    "totalValue": 42995.38,
    "totalValueFormatted": "$42,995.38",
    "categoryCounts": {
      "smgs": 16,
      "gloves": 5,
      "cases": 5,
      "knives": 14,
      "rifles": 18,
      "pins_coins": 82,
      "pistols": 96,
      "other": 11,
      "stickers": 187,
      "sniper_rifles": 15,
      "shotguns": 7,
      "music_kits": 13,
      "agents": 5
    },
    "rarityCounts": {
      "Mil-Spec Grade": 88,
      "Extraordinary": 54,
      "Base Grade": 10,
      "Covert": 24,
      "Restricted": 24,
      "Classified": 18,
      "Industrial Grade": 10,
      "High Grade": 185,
      "Remarkable": 39,
      "Exotic": 10,
      "Consumer Grade": 3,
      "Master": 3,
      "Stock": 4,
      "Exceptional": 2
    }
  },
  "cached": true
}

CS2 inventory (raw Steam data)

GET/api/inventory/{id}/rawAPI key requiredPRO & DEVELOPER

The unparsed inventory payload (assets, descriptions, asset_properties) with every page combined, for when you want the original fields.

ParameterInTypeRequiredDescription
idpathstringYesSteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS).
  • Cached for 30 minutes.
REQUEST
curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/inventory/76561198074762801/raw"
RESPONSE · long arrays shortened to one entry
{
  "success": 1,
  "assets": [
    {
      "appid": 730,
      "contextid": "2",
      "assetid": "53419434826",
      "classid": "188530159",
      "instanceid": "188530139",
      "amount": "1"
    }
  ],
  "descriptions": [
    {
      "appid": 730,
      "classid": "188530159",
      "instanceid": "188530139",
      "name": "MP7 | Skulls",
      "market_name": "MP7 | Skulls (Minimal Wear)",
      "market_hash_name": "MP7 | Skulls (Minimal Wear)",
      "type": "Mil-Spec Grade SMG",
      "tradable": 1,
      "marketable": 1,
      "icon_url": "i0CoZ81Ui0m-9KwlBY1L_18myuGuq1wfhWSaZgMttyVfPaERSR0Wqmu7LAocGIGz3UqlXOLrxM-vMGmW8VNxu5Dx60...",
      "tags": [
        {
          "category": "Type",
          "internal_name": "CSGO_Type_SMG",
          "localized_category_name": "Type",
          "localized_tag_name": "SMG"
        },
        {
          "category": "Weapon",
          "internal_name": "weapon_mp7",
          "localized_category_name": "Weapon",
          "localized_tag_name": "MP7"
        }
      ]
    }
  ],
  "asset_properties": [
    {
      "appid": 730,
      "contextid": "2",
      "assetid": "53419434826",
      "asset_properties": [
        {
          "propertyid": 1,
          "int_value": "996",
          "name": "Pattern Template"
        },
        {
          "propertyid": 2,
          "float_value": "0.118721641600131989",
          "name": "Wear Rating"
        },
        {
          "propertyid": 6,
          "string_value": "2636ECE089A6E1273E07062D0E2516221EF3EEEAC92566C2214E63562E725EC76B",
          "name": "Item Certificate"
        }
      ]
    }
  ],
  "total_inventory_count": 474
}

Dota 2 inventory

GET/api/dota2/inventory/{id}API key requiredPRO & DEVELOPER

A player's Dota 2 inventory, parsed: hero, slot, type, rarity, quality, tradability and USD price for every item.

ParameterInTypeRequiredDescription
idpathstringYesSteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS).
heroquerystringNoOnly items for this hero, e.g. Juggernaut (case-insensitive).
categoryquerystringNoOnly items of this type, e.g. Wearable, Courier, Ward, Bundle, Treasure (case-insensitive).
sortquerystringNoSort order. Default is Steam's inventory order. One of: price_desc, price_asc, name_asc.
limitqueryintegerNoItems per page, 1 to 1000. Default: 100.
offsetqueryintegerNoNumber of items to skip. Default: 0.
freshquerybooleanNoPRO and DEVELOPER keys only: skip the 30 minute cache and fetch from Steam. Default: false.
  • Prices are USD market prices, refreshed every 15 minutes. Items with no active market have price: null.
  • Inventories are cached for 30 minutes.
REQUEST
curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/dota2/inventory/76561198001497299?sort=price_desc&limit=1"
RESPONSE · long arrays shortened to one entry
{
  "steamId": "76561198001497299",
  "game": "dota2",
  "steamInventoryUrl": "https://steamcommunity.com/profiles/76561198001497299/inventory/#570",
  "summary": {
    "totalCount": 2115,
    "tradableCount": 1406,
    "categoryCounts": {
      "Wearable": 1665,
      "Cursor Pack": 9,
      "Loading Screen": 162,
      "HUD Skin": 12,
      "Bundle": 47,
      "Taunt": 43,
      "Announcer": 15,
      "Courier": 28,
      "Tool": 47,
      "Pennant": 1,
      "Ward": 13,
      "Gem / Rune": 9,
      "League": 3,
      "Player Card": 9,
      "Misc": 14,
      "Music": 8,
      "Terrain": 2,
      "Treasure": 21,
      "Roshan": 1,
      "Sticker Capsule": 4,
      "Emoticon Tool": 1,
      "Versus Screen": 1
    },
    "rarityCounts": {
      "Mythical": 323,
      "Common": 636,
      "Uncommon": 462,
      "Rare": 522,
      "Immortal": 143,
      "Legendary": 28,
      "Arcana": 1
    },
    "heroCounts": {
      "Shadow Fiend": 4,
      "Medusa": 8,
      "Other": 361,
      "Rubick": 21,
      "Dragon Knight": 45,
      "Axe": 26,
      "Doom": 25,
      "Batrider": 18,
      "Necrophos": 16,
      "Spectre": 15,
      "Sven": 28,
      "Alchemist": 26,
      "Crystal Maiden": 18,
      "Night Stalker": 18,
      "Drow Ranger": 32,
      "Earthshaker": 23,
      "Juggernaut": 56,
      "Mirana": 24,
      "Morphling": 21,
      "Phantom Lancer": 16,
      "Puck": 17,
      "Pudge": 33,
      "Razor": 13,
      "Sand King": 11,
      "Storm Spirit": 15,
      "Windranger": 43,
      "Kunkka": 41,
      "Lina": 7,
      "Shadow Shaman": 7,
      "Tidehunter": 33,
      "Witch Doctor": 22,
      "Riki": 14,
      "Sniper": 17,
      "Warlock": 16,
      "Beastmaster": 19,
      "Queen of Pain": 12,
      "Faceless Void": 6,
      "Wraith King": 26,
      "Death Prophet": 31,
      "Phantom Assassin": 22,
      "Templar Assassin": 25,
      "Luna": 26,
      "Nature's Prophet": 61,
      "Clinkz": 17,
      "Omniknight": 27,
      "Enchantress": 10,
      "Broodmother": 19,
      "Bounty Hunter": 41,
      "Weaver": 14,
      "Ursa": 16,
      "Spirit Breaker": 30,
      "Invoker": 26,
      "Silencer": 19,
      "Outworld Destroyer": 11,
      "Lycan": 6,
      "Brewmaster": 14,
      "Lone Druid": 17,
      "Chaos Knight": 15,
      "Nyx Assassin": 22,
      "Naga Siren": 16,
      "Keeper of the Light": 15,
      "Slark": 14,
      "Centaur Warrunner": 22,
      "Magnus": 29,
      "Bristleback": 7,
      "Tusk": 16,
      "Skywrath Mage": 18,
      "Abaddon": 11,
      "Lich": 13,
      "Venomancer": 13,
      "Tiny": 2,
      "Tinker": 2,
      "Pugna": 8,
      "Legion Commander": 23,
      "Timbersaw": 25,
      "Vengeful Spirit": 14,
      "Gyrocopter": 15,
      "Ogre Magi": 7,
      "Leshrac": 9,
      "Ember Spirit": 31,
      "Earth Spirit": 10,
      "Clockwerk": 11,
      "Dark Seer": 10,
      "Elder Titan": 3,
      "Techies": 2,
      "Dazzle": 9,
      "Lion": 18,
      "Anti-Mage": 8,
      "Chen": 4,
      "Troll Warlord": 5,
      "Meepo": 3,
      "Disruptor": 14,
      "Bloodseeker": 16,
      "Monkey King": 3,
      "Slardar": 4,
      "Lifestealer": 9,
      "Huskar": 11,
      "Zeus": 5,
      "Shadow Demon": 1,
      "Pangolier": 4,
      "Enigma": 5,
      "Bane": 2,
      "Void Spirit": 1,
      "Ancient Apparition": 2,
      "Undying": 5,
      "Mars": 1,
      "Grimstroke": 1,
      "Underlord": 1,
      "Phoenix": 2,
      "Viper": 2,
      "Arc Warden": 4,
      "Jakiro": 5,
      "Winter Wyvern": 1,
      "Treant Protector": 1
    },
    "totalValue": 343.07,
    "totalValueFormatted": "$343.07"
  },
  "items": [
    {
      "assetId": "25929845931",
      "classId": "5047971957",
      "instanceId": "2781217946",
      "amount": 1,
      "name": "Feast of Abscession",
      "marketName": "Feast of Abscession",
      "marketHashName": "Feast of Abscession",
      "type": "Arcana Wearable",
      "category": "Wearable",
      "hero": "Pudge",
      "slot": "Hero Base",
      "rarity": {
        "name": "Arcana",
        "color": "#ADE55C"
      },
      "quality": {
        "name": "Standard",
        "color": "#D2D2D2"
      },
      "iconUrl": "https://community.cloudflare.steamstatic.com/economy/image/i0CoZ81Ui0m-9KwlBY1L_18myuGuq1w...",
      "iconUrlLarge": null,
      "tradable": false,
      "marketable": false,
      "steamInventoryUrl": "https://steamcommunity.com/profiles/76561198001497299/inventory/#570_2_25929845931",
      "price": {
        "amount": 19.15,
        "formatted": "$19.15",
        "currency": "USD"
      }
    }
  ],
  "pagination": {
    "total": 2115,
    "limit": 1,
    "offset": 0,
    "hasMore": true
  },
  "cached": false,
  "cachedAt": "2026-10-02T03:17:45.136Z",
  "stale": false
}

Dota 2 inventory summary

GET/api/dota2/inventory/{id}/summaryAPI key requiredPRO & DEVELOPER

Totals only: item count, tradable count, total USD value, and counts per type, rarity and hero.

ParameterInTypeRequiredDescription
idpathstringYesSteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS).
freshquerybooleanNoPRO and DEVELOPER keys only: skip the 30 minute cache and fetch from Steam. Default: false.
REQUEST
curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/dota2/inventory/76561198001497299/summary"
RESPONSE · long arrays shortened to one entry
{
  "steamId": "76561198001497299",
  "game": "dota2",
  "summary": {
    "totalCount": 2115,
    "tradableCount": 1406,
    "categoryCounts": {
      "Wearable": 1665,
      "Cursor Pack": 9,
      "Loading Screen": 162,
      "HUD Skin": 12,
      "Bundle": 47,
      "Taunt": 43,
      "Announcer": 15,
      "Courier": 28,
      "Tool": 47,
      "Pennant": 1,
      "Ward": 13,
      "Gem / Rune": 9,
      "League": 3,
      "Player Card": 9,
      "Misc": 14,
      "Music": 8,
      "Terrain": 2,
      "Treasure": 21,
      "Roshan": 1,
      "Sticker Capsule": 4,
      "Emoticon Tool": 1,
      "Versus Screen": 1
    },
    "rarityCounts": {
      "Mythical": 323,
      "Common": 636,
      "Uncommon": 462,
      "Rare": 522,
      "Immortal": 143,
      "Legendary": 28,
      "Arcana": 1
    },
    "heroCounts": {
      "Shadow Fiend": 4,
      "Medusa": 8,
      "Other": 361,
      "Rubick": 21,
      "Dragon Knight": 45,
      "Axe": 26,
      "Doom": 25,
      "Batrider": 18,
      "Necrophos": 16,
      "Spectre": 15,
      "Sven": 28,
      "Alchemist": 26,
      "Crystal Maiden": 18,
      "Night Stalker": 18,
      "Drow Ranger": 32,
      "Earthshaker": 23,
      "Juggernaut": 56,
      "Mirana": 24,
      "Morphling": 21,
      "Phantom Lancer": 16,
      "Puck": 17,
      "Pudge": 33,
      "Razor": 13,
      "Sand King": 11,
      "Storm Spirit": 15,
      "Windranger": 43,
      "Kunkka": 41,
      "Lina": 7,
      "Shadow Shaman": 7,
      "Tidehunter": 33,
      "Witch Doctor": 22,
      "Riki": 14,
      "Sniper": 17,
      "Warlock": 16,
      "Beastmaster": 19,
      "Queen of Pain": 12,
      "Faceless Void": 6,
      "Wraith King": 26,
      "Death Prophet": 31,
      "Phantom Assassin": 22,
      "Templar Assassin": 25,
      "Luna": 26,
      "Nature's Prophet": 61,
      "Clinkz": 17,
      "Omniknight": 27,
      "Enchantress": 10,
      "Broodmother": 19,
      "Bounty Hunter": 41,
      "Weaver": 14,
      "Ursa": 16,
      "Spirit Breaker": 30,
      "Invoker": 26,
      "Silencer": 19,
      "Outworld Destroyer": 11,
      "Lycan": 6,
      "Brewmaster": 14,
      "Lone Druid": 17,
      "Chaos Knight": 15,
      "Nyx Assassin": 22,
      "Naga Siren": 16,
      "Keeper of the Light": 15,
      "Slark": 14,
      "Centaur Warrunner": 22,
      "Magnus": 29,
      "Bristleback": 7,
      "Tusk": 16,
      "Skywrath Mage": 18,
      "Abaddon": 11,
      "Lich": 13,
      "Venomancer": 13,
      "Tiny": 2,
      "Tinker": 2,
      "Pugna": 8,
      "Legion Commander": 23,
      "Timbersaw": 25,
      "Vengeful Spirit": 14,
      "Gyrocopter": 15,
      "Ogre Magi": 7,
      "Leshrac": 9,
      "Ember Spirit": 31,
      "Earth Spirit": 10,
      "Clockwerk": 11,
      "Dark Seer": 10,
      "Elder Titan": 3,
      "Techies": 2,
      "Dazzle": 9,
      "Lion": 18,
      "Anti-Mage": 8,
      "Chen": 4,
      "Troll Warlord": 5,
      "Meepo": 3,
      "Disruptor": 14,
      "Bloodseeker": 16,
      "Monkey King": 3,
      "Slardar": 4,
      "Lifestealer": 9,
      "Huskar": 11,
      "Zeus": 5,
      "Shadow Demon": 1,
      "Pangolier": 4,
      "Enigma": 5,
      "Bane": 2,
      "Void Spirit": 1,
      "Ancient Apparition": 2,
      "Undying": 5,
      "Mars": 1,
      "Grimstroke": 1,
      "Underlord": 1,
      "Phoenix": 2,
      "Viper": 2,
      "Arc Warden": 4,
      "Jakiro": 5,
      "Winter Wyvern": 1,
      "Treant Protector": 1
    },
    "totalValue": 343.07,
    "totalValueFormatted": "$343.07"
  },
  "cached": true
}

Premier rating badge

GET/api/assets/premier/{rating}.svgNo API key

An SVG of the CS2 Premier rating badge for any rating, in the right colour tier. Free to use, no API key needed.

ParameterInTypeRequiredDescription
ratingpathintegerYesPremier rating, e.g. 15235.
  • Hundreds more static images (ranks, Faceit levels, maps, weapons, medals) are listed in the asset browser at the bottom of the docs.
REQUEST
curl "https://cs2.space/api/assets/premier/15235.svg"
Example Premier badge

API status

GET/api/healthNo API key

Whether the API and its dependencies are up. No API key needed.

REQUEST
curl "https://cs2.space/api/health"
RESPONSE · long arrays shortened to one entry
{
  "status": "ok",
  "services": {
    "cache": "up",
    "steamCoordinator": "up"
  }
}

Errors

Errors return JSON with an error message and, where useful, a machine-readable code.

StatusMeaning
400Invalid parameter, e.g. a non-numeric Premier rating.
401No API key was sent.
403Invalid API key, the player's inventory is private (code INVENTORY_PRIVATE), or the endpoint needs a PRO or DEVELOPER plan (code PLAN_UPGRADE_REQUIRED).
404The SteamID or profile name doesn't match a player.
429Rate limit or monthly quota exceeded, or Steam is rate limiting inventory requests (code STEAM_RATE_LIMIT). Retry later.
500Something went wrong on our side.
502Steam failed to return the inventory. Retry shortly.

Plans & limits

PlanMonthly requestsRate limitData
FREE500 requests60 per minuteSteam profile data, SteamID conversion and rank images
PRO10,000 requests600 per minuteEverything: adds Faceit, Leetify, and CS2 and Dota 2 inventories with prices
DEVELOPER100,000 requests3,060 per minuteEverything: adds Faceit, Leetify, and CS2 and Dota 2 inventories with prices
  • Limits count across all API keys on your account.
  • Monthly usage resets 30 days after it last reset.
  • Assets under /api/assets and /api/health don't need a key and don't count towards your quota.

For AI tools

Point your AI assistant or code generator at one of these instead of this page:

Asset browser

Rank icons, Premier badges, Faceit levels, medals, maps and weapon images under /api/assets/. Free to use, no API key needed. Click any file to see its URL.

FILE EXPLORER — CS2.SPACE API DISK (C:\api)
ComputerCS2.SPACE (C:)api
Directory Tree
Local Disk (C:\api)
Total: 798 GET Endpoints
Status: Online 200 OK
SUBDIRECTORIES IN C:\api (13 Folders) — CLICK ANY TO EXPLORE:
player-data
5 FILES
Unified player stats aggregation, SteamID vanity resolver & provider logos
inventory-services
3 FILES
CS2 Steam inventory parsing, skin wear classification, stickers, categories & summary distribution
dota2-inventory
3 FILES
Dota 2 inventory parsing: hero, slot, type, rarity, quality and USD market prices (PRO plan)
premier-ranks
9 FILES
Dynamic CS2 Premier rating badges vector SVGs (Calculates tier colors dynamically)
matchmaking-ranks
39 FILES
Official 5v5 Competitive Matchmaking rank icon vectors & legacy ranks (Silver I to Global Elite)
wingman-ranks
21 FILES
Official 2v2 Wingman mode competitive rank icon vectors (Rank 1 to 18)
faceit-badges
14 FILES
Official Faceit Skill Level 0-10 & Challenger tier vector SVG badges (as used on steamcommunity.love)
service-medals
567 FILES
All 566 CS2 Service Medals, Operation Coins, Pins & Pick'Em Trophies + Master JSON
map-assets
61 FILES
Active Duty & Reserve CS2 map preview icons and vector thumbnails (61 assets)
weapon-icons
70 FILES
Clean killfeed vector icons for all rifles, pistols, grenades, and knives (70 weapons)
commendations
3 FILES
CS2 in-game player commendation icons (Friendly, Leader, Teacher)
api-keys
2 FILES
Session-authenticated API Key generation and active key management
system-health
1 FILES
Public API health check
FEATURED GET EXAMPLES & ASSETS (CLICK ANY TO INSPECT & EXPLAIN):
GET.JSON
Unified Player Profile Intel
GET.SVG
Dynamic Premier Badge (Live Any Rating Number)
Dynamic Premier Badge (Live Any Rating Number)
GET.SVG
The Global Elite (Rank 18)
The Global Elite (Rank 18)
GET.PNG
5 Year Veteran Coin
5 Year Veteran Coin
GET.SVG
AK-47 Rifle
AK-47 Rifle
Unified Player Profile Intel
profile_ChetCS.json • /api/profile/:id
FOLDER: \player-dataGET200 OK
ITEM EXPLANATION & OBTAINABILITY INTEL:
Aggregates Steam (profile, bans, level, games, CS2 stats, friends, Game Coordinator badges & commendations, inventory), Faceit and Leetify in one payload. FREE keys receive Steam profile data only (faceit, leetify and inventory are null).
Parameter Usage: Pass SteamID64 or Custom Vanity URL (e.g. ChetCS)
REAL RESPONSE SCHEMA & SAMPLE:
{
  "steamId": "76561197963540638",
  "steam": {
    "player": {
      "steamid": "76561197963540638",
      "personaname": "Chet",
      "profileurl": "https://steamcommunity.com/id/ChetCS/",
      "avatarfull": "https://avatars.steamstatic.com/7eff590c73206f7f0bb6bfbbf9fd3f3e46c95826_full.jpg",
      "timecreated": 1072291152
    },
    "bans": {
      "SteamId": "76561197963540638",
      "CommunityBanned": false,
      "VACBanned": false,
      "NumberOfVACBans": 0,
      "DaysSinceLastBan": 0,
      "NumberOfGameBans": 0,
      "EconomyBan": "none"
    },
    "level": 70,
    "games": [
      {
        "appid": 10,
        "playtime_forever": 45104
      },
      ...
    ],
    "stats": [
      {
        "name": "total_kills",
        "value": 99648
      },
      {
        "name": "total_deaths",
        "value": 81581
      },
      {
        "name": "total_time_played",
        "value": 5582556
      },
      ...
    ],
    "friends": [
      {
        "steamid": "76561197960439174",
        "relationship": "friend",
        "friend_since": 1550022592
      },
      ...
    ],
    "friendCode": "AYR6T-HGDA",
    "gc": {
      "commendations": {
        "friendly": 118,
        "teacher": 82,
        "leader": 80
      },
      "playerLevel": 18,
      "playerCurXp": 327683388,
      "badges": [
        {
          "name": "Premier Season Four Medal",
          "image": "/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png",
          "rarity": "Extraordinary",
          "imageUrl": "https://cs2.space/api/assets/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png"
        },
        ...
      ],
      "featuredBadge": {
        "name": "Premier Season Four Medal",
        "image": "/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png",
        "rarity": "Extraordinary",
        "imageUrl": "https://cs2.space/api/assets/badges/badge_premier_season_four_medal_125_wins_15_000_19_999_cs_rating_.png"
      }
    },
    "inventory": {
      "summary": {
        "totalCount": 505,
        "totalValue": 1530.62,
        "totalValueFormatted": "$1,530.62"
      },
      "items": [
        ...
      ]
    }
  },
  "faceit": {
    "player_id": "3699c7a1-7ee1-4c2d-bcca-49fdb2071a4e",
    "nickname": "aimbotthot1",
    "country": "us",
    "faceit_url": "https://www.faceit.com/{lang}/players/aimbotthot1",
    "games": {
      "cs2": {
        "region": "NA",
        "skill_level": 4,
        "faceit_elo": 1018,
        "game_player_id": "76561197963540638"
      }
    }
  },
  "leetify": {
    "name": "Chet",
    "avatar": "https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/59/590cec88b7cb47417e19c19058cb4f95b364f59d_full.jpg",
    "ranks": {
      "leetify": -0.77,
      "premier": 15960,
      "faceit": null,
      "faceit_elo": null,
      "wingman": 7,
      "renown": null,
      "competitive": [
        {
          "map_name": "de_dust2",
          "rank": 10
        },
        ...
      ]
    },
    "rating": {
      "aim": 48.4047,
      "positioning": 52.3922,
      "utility": 38.4005,
      "clutch": 0.0672,
      "opening": -0.0084,
      "ct_leetify": -0.0103,
      "t_leetify": -0.0054
    },
    "stats": {
      "accuracy_head": 26.7328,
      "reaction_time_ms": 595.9576,
      "preaim": 10.765,
      ...
    },
    "total_matches": 2265,
    "winrate": 0.3,
    "recent_matches": [
      {
        "id": "ba2a8847-0c8c-4be7-97e2-69d9dd67e733",
        "finished_at": "2026-09-30T21:10:47.000Z",
        "data_source": "matchmaking",
        "outcome": "win",
        "map_name": "de_cache",
        "score": [
          13,
          2
        ],
        "leetify_rating": 0.0279,
        "rank": 15960
      },
      ...
    ]
  },
  "leetifyStatus": "fresh"
}

Ready to build?