CS2.SPACEDocumentationAPI
HomeDASHBOARD →
Base URL: https://cs2.space

Dota 2 inventory

GETx-api-key requiredPRO & DEVELOPER

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

OpenAPI 3.1 llms.txt
HTTP ENDPOINT

Endpoint URI

GET/api/dota2/inventory/{id}

Full example URL: https://cs2.space/api/dota2/inventory/76561198001497299?sort=price_desc&limit=1

idSTRINGREQUIRED

SteamID64 (17 digits, e.g. 76561197963540638) or custom profile URL name (e.g. ChetCS).

heroSTRING

Only items for this hero, e.g. Juggernaut (case-insensitive).

categorySTRING

Only items of this type, e.g. Wearable, Courier, Ward, Bundle, Treasure (case-insensitive).

sortSTRING

Sort order. Default is Steam's inventory order.Values:price_descprice_ascname_asc

limitINTEGER

Items per page, 1 to 1000.Default: 100

offsetINTEGER

Number of items to skip.Default: 0

freshBOOLEAN

PRO 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.
curl -H "x-api-key: YOUR_KEY" "https://cs2.space/api/dota2/inventory/76561198001497299?sort=price_desc&limit=1"
RESPONSE · 200 OK · 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}
TROUBLESHOOTING

Status codes

401 UnauthorizedNo API key was sent.
{
  "error": "API key required"
}
403 ForbiddenInvalid API key, the player's inventory is private (code INVENTORY_PRIVATE), or the endpoint needs a PRO or DEVELOPER plan (code PLAN_UPGRADE_REQUIRED).
{
  "error": "Inventory data requires a PRO or DEVELOPER plan.",
  "code": "PLAN_UPGRADE_REQUIRED",
  "upgradeUrl": "https://cs2.space/#pricing"
}
404 Not FoundThe SteamID or profile name doesn't match a player.
{
  "error": "Player not found",
  "code": "PLAYER_NOT_FOUND"
}
429 Too Many RequestsRate limit or monthly quota exceeded, or Steam is rate limiting inventory requests (code STEAM_RATE_LIMIT). Retry later.
{
  "error": "Monthly API quota exceeded",
  "tier": "FREE",
  "limit": 500,
  "usage": 500,
  "message": "Please upgrade your plan or wait for next month's reset."
}
502 Bad GatewaySteam failed to return the inventory. Retry shortly.
{
  "error": "Failed to load inventory from Steam. Please retry shortly."
}

See all error responses on the Errors reference page.

Was this page helpful?

Ready to build?

GET YOUR FREE KEY NOW →