CS2 Trade-Protected Items: Detect Newly Traded Skins Instantly
How to detect newly received CS2 items from public Steam inventories while they are still inside Steam's trade protection period.
CS2 trade-protected items are skins a player has just received through a trade. During Steam's trade protection period the item already belongs to the new owner, but public inventory data about it can be incomplete — which is why inventory tools, portfolio trackers and marketplaces often appear to be missing a skin that is demonstrably there.
The Steamwebapi Inventory API can return these items from a public Steam inventory while the protection period is still running, together with the float value, paint seed, stickers, charms and marketplace prices needed to display and value them.
A trade-protected CS2 item is owned but not yet freely tradable. It should be visible in an inventory, not missing from it.
What are trade-protected CS2 items?
When a CS2 item changes hands through a trade, Steam applies a protection period to the receiving account. The item is in the inventory and belongs to the new owner, but it cannot be traded onward until that period ends.
This is a normal part of Steam's trading rules and applies to the item, not to the account. The practical consequence for developers is that the item can behave differently from a long-held one when it is read from a public inventory.
Why are CS2 items not showing in the inventory?
Applications that read public inventories frequently report the same symptoms right after a user receives a skin:
- a newly traded item does not appear at all;
- the inventory value is lower than the user expects;
- the item count does not match what the user sees in Steam;
- an expensive knife, glove or case-hardened skin is missing while cheap items are listed correctly;
- the item shows up days later, seemingly out of nowhere.
Users often describe these as hidden items or shadow items. For an inventory application the effect is worse than a cosmetic glitch: the tool reports a portfolio that does not match reality, and every calculation built on top of it — total value, ownership checks, change detection — inherits the error.
Detect trade-protected CS2 items with the Inventory API
Trade-protected item detection is enabled per request with a single query parameter. No extra endpoint, no separate integration.
Example request
curl "https://www.steamwebapi.com/steam/api/inventory?key=YOUR_API_KEY&steam_id=76561198000000000&game=cs2&try_first_seven_days_blocked_items=1"
Example response
Trade-protected items are returned alongside the rest of the inventory and are marked explicitly, so an application can separate them from normally tradable items:
{
"markethashname": "\u2605 Butterfly Knife | Marble Fade (Factory New)",
"float": 0.0187,
"paintseed": 412,
"tradeprotected": true,
"tradable": false,
"tradelocked": true
}
Which fields are returned
Trade-protected items carry the data needed to identify, display and value a skin. A small number of fields that Steam only publishes for unrestricted items stay empty, which is worth knowing before you build against them.
| Available | Empty or unavailable |
|---|---|
| Market hash name and market name | descriptions |
| Item image | tags |
| Float value and paint seed | tradeblockuntil |
| Pattern and phase information | |
| StatTrak and souvenir status | |
| Stickers and charms | |
| Name tag | |
| Marketplace prices | |
| Trade protection status |
Once the protection period ends, the item is returned through the regular inventory path with the full field set, without any change on your side.
Standard mode and strict mode
The parameter accepts two active values, and the difference matters for applications that must know whether the data they received is complete.
| Value | Behaviour | Use it when |
|---|---|---|
try_first_seven_days_blocked_items=1 | Attempts to return the inventory including trade-protected items and falls back to the regular inventory if that is not possible. | An inventory is better than no inventory. |
try_first_seven_days_blocked_items=2 | No fallback. If trade-protected items cannot be returned, the request fails with HTTP 451 and an error field instead of a possibly incomplete inventory. | Completeness matters more than a response. |
A silent fallback is convenient, but it can make an inventory look complete when it is not. Strict mode moves that decision into your application: you learn that complete data was unavailable and can retry, defer the valuation, or flag the result rather than storing a portfolio value that is quietly too low.
Handling trade-protected items in your application
Trade-protected items are returned with tradable: false and tradelocked: true, because during the protection period they genuinely cannot be traded onward. The field tradeprotected: true identifies why.
This has one practical consequence worth checking before you go live: if your code filters inventory items by tradable, it will discard exactly the items you enabled the feature for. Treat trade protection as a status to display, not as a reason to hide an item — the user owns it, and it counts towards their inventory value.
- Include trade-protected items in inventory value calculations.
- Exclude them from anything that requires an immediate trade, such as deposits or instant sell offers.
- Show the protection state in the interface instead of dropping the item silently.
Which applications benefit
Any product that reads public CS2 inventories and draws conclusions from them:
- Inventory value calculators: a portfolio reflects a new skin immediately rather than days later.
- Portfolio trackers: purchases and trades appear when they happen, so the value curve stays accurate.
- Marketplaces: items in a user's inventory are detectable, with their trade status clearly marked.
- Deposit and ownership monitoring: fewer blind spots between the moment an item arrives and the moment it becomes visible.
- Inventory history tools: changes are recorded from the point they occur instead of retroactively.
Requirements and limits
- The Steam inventory must be public. This feature does not bypass Steam privacy settings.
- The parameter applies to CS2 inventories.
- Each request using it costs one additional credit.
- Response times are higher than for a regular inventory request — plan for it in bulk scanners and set timeouts accordingly.
- Availability depends on Steam-side conditions; strict mode exists precisely so your application can detect when data is incomplete.
Steamwebapi is not Valve's official Steam Web API and is not affiliated with Valve or Steam.
Frequently asked questions
Why are my CS2 items not showing in the inventory?
Newly traded CS2 items can fall inside Steam's trade protection period, where public inventory data about them may be incomplete until the period ends.
Can trade-protected CS2 items be read from a public inventory?
Yes. The feature is designed for public Steam inventories and requires no action from the inventory owner, subject to inventory availability and Steam-side conditions.
How do I enable trade-protected item detection?
Add try_first_seven_days_blocked_items=1 to a request against /steam/api/inventory. Use 2 if you need strict handling without a fallback.
What does the tradeprotected field mean?
It indicates that a CS2 item is currently inside Steam's trade protection period. The item is owned by the user but cannot be traded onward yet.
Why is tradable false for these items?
Because they really are locked for the duration of the protection period. Include them in inventory values, but exclude them from workflows that require an immediate trade — and make sure your filters do not discard them.
Does the Steam user need to connect their account?
No. No login, API key, trade link or confirmation is required from the inventory owner. The inventory itself must be public.
What happens in strict mode when data is unavailable?
The request returns HTTP 451 with an error field instead of an inventory that silently omits trade-protected items.