Buy requests with TF2 keys from your Key Bank. They never expire, and private, empty or failed reads cost nothing.
Read any public inventory, live, without Steam refusing your server. Up to 8,000 requests a TF2 key, 2,000 items a request, and private or failed reads cost nothing.
100 free requests to try it, for Steam accounts that have spent $5 on Steam.Looking for the free Listing API that keeps your listed bot’s rates up to date? That is a different API: see its guide.| What you get | |
|---|---|
| Items per request | Up to 2,000 |
| Private inventories, empty ones, failed reads | Free |
| Free reads of private and empty inventories | Up to 20 a minute, 120 an hour and 600 a day per account |
| Data | Always live from Steam, never cached |
| Your requests | Never expire, shared by all your keys |
| Speed limit | 120 requests a minute per account |
GET https://steamtradex.com/api/inventory/{steamid}/{appid}/{contextid}
X-API-KEY: inv_...
Optional:
count=2000 items per request, up to 2000
start_assetid= last_assetid from the previous page, to continue
l=english the language of item names
Examples: 753/6 Steam items (cards, gems, backgrounds), 440/2 TF2, 730/2 CS2The answer is Steam’s own inventory JSON: assets, descriptions, total_inventory_count, and on a bigger inventory more_items with a last_assetid to pass as start_assetid for the next page. Code written for Steam reads it unchanged. Every answer carries x-request-id, and once your key is accepted most also carry x-requests-charged, x-requests-remaining and x-ratelimit-remaining.
| Status | What it means |
|---|---|
| 200 | A page of the inventory, exactly as Steam sends it. One request used. Also 200, free, with an empty inventory when the person owns nothing in that game. |
| 400 | Not a SteamID64 (17 digits starting 7656119), or a parameter that is not a number. Free. |
| 401 | The key is missing, wrong or revoked. Free. |
| 402 | No requests left. Buy more in your dashboard. |
| 403 | The inventory is private. Free. |
| 429 | Over 120 requests in a minute on your account, or over the free reads of private and empty inventories (20 a minute, 120 an hour and 600 a day). Wait the seconds in retry-after. Free. |
| 502 / 503 | We could not get the page from Steam right now. Free; retry. |
For level-up and gem bots on the levelup-bot script, running under PM2 or Docker. Run this in the bot’s folder (the one with package.json), with your key. Your dashboard shows it with the key filled in.
curl -fsSL https://steamtradex.com/downloads/steam-bot/install.sh | sh -s -- inv_your_key
Run it again after a bot update, or to change the key. It changes these, and nothing else:
| What | Change |
|---|---|
| node_modules/@luc4sguilherme/steam-inventory | Adds steamtradex.js beside index.js and one line to load it. Your bot’s own code is not changed. |
| .env | Adds STEAMTRADEX_API_KEY="inv_...", or replaces the one already there. Your other settings are left alone. |
| Dockerfile | Docker setups only: one line after RUN npm ci, so every rebuild keeps the add-on. |
| The bot | Restarted: pm2 restart levelUP-bot, or docker compose build then up -d. Run any other way, restart it yourself. |
Once it is in, the bot behaves like this:
| Case | What happens |
|---|---|
| Customers’ inventories | Read through the Inventory API, 2,000 items a request. Retried twice on a 5xx or no answer, 3 then 6 seconds apart. |
| The bot’s own inventory | Still read with the bot’s own Steam login. Never charged. |
| STEAMTRADEX_API_KEY empty | Nothing changes: the bot reads inventories exactly as it did before. |
| 401 | Logged as “SteamTradeX: API key is not valid”. Check the key in .env. |
| 402 | Logged as “SteamTradeX: no requests left”. Buy more in your dashboard. |
| 403 | Reported to the bot as a private profile. Free. |
To switch back, run the same command with remove. Everything above comes out again and the bot is restarted:
curl -fsSL https://steamtradex.com/downloads/steam-bot/install.sh | sh -s -- remove
The same steps with pictures: Use the SteamTradeX Inventory API with your Steam bot.
One answered read: one page of an inventory, up to 2,000 items. A bigger inventory takes one request per 2,000 items, so 10,000 cards is 5 requests.
Private inventories, people who own nothing in that game, and anything we could not fetch from Steam. Only an answered page costs a request.
No. They stay on your account until you use them, shared by all your API keys.
With TF2 keys from your Key Bank. Deposit keys in one trade offer, then spend them on requests. The more keys at once, the more requests each key buys.
Yes: 100 free requests, once per Steam account, for Steam accounts that have spent at least $5 on Steam.
Level-up and gem bots on the levelup-bot script: create a key in your dashboard and paste the one command it shows into your bot's folder. It sets everything up and restarts the bot. Wrote your own bot? Send the request shown under How to use it, with your key.
No. Every request reads Steam live, so a trade offer is built on the inventory as it is now.
120 requests a minute per account, shared by all your keys (you can have up to 10). Private and empty inventories are free, up to 20 a minute, 120 an hour and 600 a day per account. Ask us if a bot needs more.
Need TF2 keys first? How to buy TF2 keys safely.