steamcommunityRetrieves Steam inventory data and manages trade offers on steamcommunity.com
Install via ClawdBot CLI:
clawdbot install bluesyparty-src/steamcommunityRequires:
Retrieve and browse a Steam user's inventory, and send/manage trade offers on steamcommunity.com.
https://steamcommunity.com/profiles/76561198012345678, your Steam ID is 76561198012345678https://steamcommunity.com/id/myname, visit steamid.io and paste your profile URL to get your SteamID64localhost)https://steamcommunity.comsteamLoginSecure cookiesessionid cookie
export STEAM_ID="your-steamid64"
export STEAM_API_KEY="your-api-key"
export STEAM_COOKIES="steamLoginSecure=your-cookie-value"
export STEAM_SESSION_ID="your-sessionid-cookie-value"
All commands use curl to hit the Steam Community inventory endpoint. The context ID is 2 for all standard game inventories.
| Game | App ID |
|------|--------|
| CS2 / CS:GO | 730 |
| Team Fortress 2 | 440 |
| Dota 2 | 570 |
| Rust | 252490 |
| PUBG | 578080 |
| Steam Community (trading cards, etc.) | 753 |
Replace $APP_ID with the game's App ID (see table above). Context ID is 2 for all standard game inventories.
curl -s "https://steamcommunity.com/inventory/$STEAM_ID/$APP_ID/2?l=english&count=2000" \
-H "Cookie: $STEAM_COOKIES" | jq '.'
curl -s "https://steamcommunity.com/inventory/$STEAM_ID/730/2?l=english&count=2000" \
-H "Cookie: $STEAM_COOKIES" | jq '.'
curl -s "https://steamcommunity.com/inventory/$STEAM_ID/730/2?l=english&count=2000" \
-H "Cookie: $STEAM_COOKIES" | jq '[.descriptions[] | {market_hash_name, type}]'
curl -s "https://steamcommunity.com/inventory/$STEAM_ID/730/2?l=english&count=2000" \
-H "Cookie: $STEAM_COOKIES" | jq '{assets: [.assets[] | {assetid, classid, instanceid, amount}], total: .total_inventory_count}'
The API returns a last_assetid field when there are more items. Pass it as start_assetid to get the next page:
curl -s "https://steamcommunity.com/inventory/$STEAM_ID/730/2?l=english&count=2000&start_assetid=$LAST_ASSET_ID" \
-H "Cookie: $STEAM_COOKIES" | jq '.'
Check for more pages by looking at the more_items field in the response (equals 1 if there are more).
The inventory endpoint returns JSON with these key fields:
| Field | Description |
|-------|-------------|
| assets | Array of items with appid, contextid, assetid, classid, instanceid, amount |
| descriptions | Array of item metadata: market_hash_name, name, type, icon_url, tradable, marketable, tags, etc. |
| total_inventory_count | Total number of items in the inventory |
| more_items | 1 if more pages available (absent otherwise) |
| last_assetid | Last asset ID returned; use as start_assetid for next page |
| success | 1 if the request succeeded |
Assets are linked to descriptions via classid + instanceid.
2 for all standard game inventories. Steam Community items (appid 753) also use context ID 6 for some item types.Trade offers require an authenticated session (cookies) and a Steam Web API key. The sessionid cookie is sent as both a cookie and a POST body parameter.
Trade partners can be identified two ways:
76561198012345678. Convert to a 32-bit account ID for the partner field: subtract 76561197960265728 from the SteamID64.https://steamcommunity.com/tradeoffer/new/?partner=52079950&token=YDAlR4bC. The partner value is the 32-bit account ID. The token is needed when the partner is not on your friends list.This sends items from your inventory to another user (and/or requests items from theirs). Each item requires its appid, contextid, and assetid (obtained from the inventory endpoint above).
The json_tradeoffer parameter is a JSON string describing what each side gives. The me object holds your items to give; the them object holds items you want to receive.
# Set trade parameters
PARTNER_ACCOUNT_ID="52079950" # 32-bit account ID (from trade URL or SteamID64 - 76561197960265728)
PARTNER_STEAM_ID="76561198012345678" # Full SteamID64 (= 76561197960265728 + PARTNER_ACCOUNT_ID)
TRADE_TOKEN="YDAlR4bC" # From partner's trade URL (omit if partner is on your friends list)
TRADE_MESSAGE="Here's the trade we discussed"
# Build the json_tradeoffer payload
# me.assets = items YOU are giving, them.assets = items you WANT from them
JSON_TRADEOFFER='{
"newversion": true,
"version": 4,
"me": {
"assets": [
{"appid": 730, "contextid": "2", "amount": 1, "assetid": "YOUR_ASSET_ID"}
],
"currency": [],
"ready": false
},
"them": {
"assets": [
{"appid": 730, "contextid": "2", "amount": 1, "assetid": "THEIR_ASSET_ID"}
],
"currency": [],
"ready": false
}
}'
# Send with trade token (non-friend)
curl -s "https://steamcommunity.com/tradeoffer/new/send" \
-X POST \
-H "Cookie: sessionid=$STEAM_SESSION_ID; $STEAM_COOKIES" \
-H "Referer: https://steamcommunity.com/tradeoffer/new/?partner=$PARTNER_ACCOUNT_ID&token=$TRADE_TOKEN" \
-H "Origin: https://steamcommunity.com" \
-d "sessionid=$STEAM_SESSION_ID" \
-d "serverid=1" \
-d "partner=$PARTNER_STEAM_ID" \
--data-urlencode "tradeoffermessage=$TRADE_MESSAGE" \
--data-urlencode "json_tradeoffer=$JSON_TRADEOFFER" \
-d "captcha=" \
--data-urlencode "trade_offer_create_params={\"trade_offer_access_token\":\"$TRADE_TOKEN\"}" \
| jq '.'
To send to a friend (no token needed), omit the token from the Referer and set trade_offer_create_params to {}:
curl -s "https://steamcommunity.com/tradeoffer/new/send" \
-X POST \
-H "Cookie: sessionid=$STEAM_SESSION_ID; $STEAM_COOKIES" \
-H "Referer: https://steamcommunity.com/tradeoffer/new/?partner=$PARTNER_ACCOUNT_ID" \
-H "Origin: https://steamcommunity.com" \
-d "sessionid=$STEAM_SESSION_ID" \
-d "serverid=1" \
-d "partner=$PARTNER_STEAM_ID" \
--data-urlencode "tradeoffermessage=$TRADE_MESSAGE" \
--data-urlencode "json_tradeoffer=$JSON_TRADEOFFER" \
-d "captcha=" \
-d "trade_offer_create_params={}" \
| jq '.'
The response returns a tradeofferid on success:
{"tradeofferid": "1234567890", "needs_mobile_confirmation": true, "needs_email_confirmation": false}
Set them.assets to an empty array []:
JSON_TRADEOFFER='{
"newversion": true,
"version": 4,
"me": {
"assets": [
{"appid": 730, "contextid": "2", "amount": 1, "assetid": "YOUR_ASSET_ID"}
],
"currency": [],
"ready": false
},
"them": {
"assets": [],
"currency": [],
"ready": false
}
}'
Uses the official Steam Web API with your API key.
# Get all active trade offers (sent and received)
curl -s "https://api.steampowered.com/IEconService/GetTradeOffers/v1/?key=$STEAM_API_KEY&get_sent_offers=1&get_received_offers=1&active_only=1&get_descriptions=1&language=english" \
| jq '.'
# Get only received active offers
curl -s "https://api.steampowered.com/IEconService/GetTradeOffers/v1/?key=$STEAM_API_KEY&get_sent_offers=0&get_received_offers=1&active_only=1&get_descriptions=1&language=english" \
| jq '.response.trade_offers_received'
# Get only sent active offers
curl -s "https://api.steampowered.com/IEconService/GetTradeOffers/v1/?key=$STEAM_API_KEY&get_sent_offers=1&get_received_offers=0&active_only=1&get_descriptions=1&language=english" \
| jq '.response.trade_offers_sent'
curl -s "https://api.steampowered.com/IEconService/GetTradeOffer/v1/?key=$STEAM_API_KEY&tradeofferid=$TRADE_OFFER_ID&language=english&get_descriptions=1" \
| jq '.response.offer'
curl -s "https://api.steampowered.com/IEconService/GetTradeOffersSummary/v1/?key=$STEAM_API_KEY&time_last_visit=0" \
| jq '.response'
Accepting uses the Steam Community web endpoint (not the Web API). You need the tradeofferid and the partner's SteamID64.
TRADE_OFFER_ID="1234567890"
PARTNER_STEAM_ID="76561198012345678"
curl -s "https://steamcommunity.com/tradeoffer/$TRADE_OFFER_ID/accept" \
-X POST \
-H "Cookie: sessionid=$STEAM_SESSION_ID; $STEAM_COOKIES" \
-H "Referer: https://steamcommunity.com/tradeoffer/$TRADE_OFFER_ID/" \
-d "sessionid=$STEAM_SESSION_ID" \
-d "tradeofferid=$TRADE_OFFER_ID" \
-d "serverid=1" \
-d "partner=$PARTNER_STEAM_ID" \
-d "captcha=" \
| jq '.'
curl -s "https://api.steampowered.com/IEconService/CancelTradeOffer/v1/" \
-X POST \
-d "key=$STEAM_API_KEY" \
-d "tradeofferid=$TRADE_OFFER_ID"
curl -s "https://api.steampowered.com/IEconService/DeclineTradeOffer/v1/" \
-X POST \
-d "key=$STEAM_API_KEY" \
-d "tradeofferid=$TRADE_OFFER_ID"
curl -s "https://api.steampowered.com/IEconService/GetTradeHistory/v1/?key=$STEAM_API_KEY&max_trades=10&get_descriptions=1&language=english&include_failed=0" \
| jq '.response.trades'
| Value | State | Description |
|-------|-------|-------------|
| 1 | Invalid | Invalid or unknown state |
| 2 | Active | Sent, neither party has acted yet |
| 3 | Accepted | Items were exchanged |
| 4 | Countered | Recipient made a counter offer |
| 5 | Expired | Not accepted before the deadline |
| 6 | Canceled | Sender canceled the offer |
| 7 | Declined | Recipient declined the offer |
| 8 | InvalidItems | Items in the offer are no longer available |
| 9 | CreatedNeedsConfirmation | Awaiting mobile/email confirmation before sending |
| 10 | CanceledBySecondFactor | Canceled via email/mobile confirmation |
| 11 | InEscrow | On hold; items removed from both inventories, will deliver automatically |
needs_mobile_confirmation: true if so.$STEAM_ID). Their inventory must be public or you must be friends.partner field: The send endpoint expects the full SteamID64 in the partner POST parameter. The trade URL's partner query parameter is the 32-bit account ID.sessionid and steamLoginSecure cookies expire when your Steam session ends. Refresh them from your browser when they stop working.Generated Mar 1, 2026
Platforms like Skinport or DMarket can use this skill to fetch user inventories for listing items for sale. It enables automated inventory syncing, ensuring real-time availability and accurate pricing based on current Steam market data. This reduces manual entry errors and speeds up the listing process for users.
Gaming clans or trading communities can automate item exchanges among members, such as swapping CS2 skins or Dota 2 items. The skill handles trade offer creation and management, streamlining group transactions and reducing reliance on manual Steam interface interactions. This fosters trust and efficiency in community-driven economies.
Esports organizations can monitor player inventories to track asset values, such as skins or in-game items, for financial reporting or sponsorship deals. The skill provides detailed item summaries and asset mappings, helping teams manage digital assets and optimize trading strategies. This supports data-driven decisions in competitive gaming environments.
Streamers and content creators can showcase their Steam inventories live on streams or social media, using the skill to fetch and display item details dynamically. It enhances viewer engagement by allowing real-time inventory browsing and trade demonstrations during broadcasts. This adds interactive elements to gaming content.
Trading platforms can integrate this skill to verify item ownership and authenticity before processing trades, reducing scams. By cross-referencing inventory data with user claims, it helps detect fraudulent listings or duplicate items. This enhances security and user trust in peer-to-peer trading ecosystems.
Offer a subscription-based service where businesses pay monthly fees to access automated inventory fetching and trade offer APIs. Revenue comes from tiered plans based on request volume or features like advanced analytics. This model targets gaming marketplaces and esports teams needing scalable solutions.
Build a platform that facilitates item trades between users, charging a small commission on each successful transaction. The skill enables inventory verification and trade execution, reducing manual overhead. Revenue is generated from transaction fees, with potential upsells for premium features like faster processing.
Sell analytics services that provide insights into inventory trends, item valuations, and trading patterns for gaming companies or investors. Revenue comes from one-time reports or ongoing data subscriptions. This model leverages the skill's ability to fetch and structure inventory data for market analysis.
💬 Integration Tip
Ensure proper handling of Steam rate limits by implementing request delays and error retries in your code. Use environment variables securely to store API keys and cookies, avoiding hardcoded credentials in public repositories.
Browse, filter, and discover games in a Steam library. Filter by playtime, reviews, Steam Deck compatibility, genres, and tags. Use when user asks about their Steam games, what to play, game recommendations, or Steam Deck compatible games.
$1 USDC entry. 14 coin flips. Get all 14 right, take the entire jackpot. Live on Solana devnet — continuous game, enter anytime.
Track live NFL, NBA, NHL, or MLB games and automatically change Hue light colors based on which team is leading. Use when user wants to sync smart lights with live sports scores for visual game tracking. Supports NFL, NBA, NHL, and MLB games with customizable team colors.
Place MML blocks in Doppel worlds. Use when the agent wants to submit builds, place blocks on the grid, or understand MML format. Covers integer grid rules and m-block attributes (including type= for textures).
Queries csfloat.com for data on skins
Identifies playful social dynamics where humor and gentle misalignment ease pressure, expand perspective, and soften rigid seriousness without demanding outc...