All Activity
- Past hour
-
Alexart reacted to a post in a topic:
New request limits? (429 error)
-
dvdx1995 joined the community
- Today
-
Devx09 reacted to a post in a topic:
New request limits? (429 error)
-
here is easy fix: const request = require('request'); const SteamCommunity = require('steamcommunity'); let community = new SteamCommunity({ request: request.defaults({ headers: { 'Accept-Encoding': 'gzip, deflate, br' } }) }); if you use proxy: request: request.defaults({ proxy: proxyUrl, headers: { 'Accept-Encoding': 'gzip, deflate, br' } }) This is not rate limiting. Steam's WAF now fingerprints the Accept-Encoding request header. The legacy request package (which node-steamcommunity uses internally with gzip: true) sends exactly Accept-Encoding: gzip, deflate — real browsers always include br as well. Steam now rejects the bot-like values outright: Accept-Encoding sent Response gzip, deflate (request lib default) 429 gzip 429 gzip, deflate, br 200 gzip, deflate, br, zstd 200 Same IP, same endpoint, seconds apart — only the header changes the outcome. api.steampowered.com is not affected.
-
I'm having the same issues with my bots. I can also see that a lot of sites are struggling with trading bots while some have already adapted, likely need an update to steamcommunity package.
-
zaj4ik joined the community
-
Leon joined the community
-
n1del started following New request limits? (429 error)
-
Is it just me or today something happend with rate limits again? Trade confirmation on all of my bots goes right into 429 error, even though they use different IPs and accounts and it's no more than 4 trade per hour Same with market confirmations. I saw on the forum that getTimeOffset was strict before, but I never experienced something like this, hope it's temporary.... And I also have troubles with inventory loading... On my PC if I load inventory from the browser everything seems ok, but on the same PC using a script I get 429 on the first request... It used to be the same. Something is not right... I use edited version of inventory loading. Were there any changes in requests?
- Yesterday
-
D.D joined the community
- Last week
-
kiemeo joined the community
-
kamay58638 joined the community
-
Babatu joined the community
-
error 429 on large inventories
That Guy From 199x replied to That Guy From 199x's topic in node-steam-tradeoffer-manager
any workaround regarding this? - Earlier
-
fix: Invalid time value by @ricardocefet2018 in #367 Full Changelog: v3.50.0...v3.50.1 View on GitHub
-
new_assetid from getExchangeDetails is undefined
Erikino replied to G35's topic in node-steam-tradeoffer-manager
@Lukasz Hi, have you received a response from them? -
tgs07707 joined the community
-
error 429 on large inventories
TheMaster replied to That Guy From 199x's topic in node-steam-tradeoffer-manager
Heads up Steam returned item data where a trade-lock date in owner_descriptions was garbage (e.g. text like “Tradable After …” that doesn’t parse to a real date). steamcommunity’s CEconItem tried new Date(badString).toISOString() → RangeError: Invalid time value. -
error 429 on large inventories
That Guy From 199x replied to That Guy From 199x's topic in node-steam-tradeoffer-manager
Oh this is steam inventories with 100Ks -
error 429 on large inventories
TheMaster replied to That Guy From 199x's topic in node-steam-tradeoffer-manager
can i ask which inventories are these with so many items CS inventories store 1k items Max per user -
passtheprt joined the community
-
error 429 on large inventories
That Guy From 199x replied to That Guy From 199x's topic in node-steam-tradeoffer-manager
yes, request inv < 20000 items ok after a few sec request inv > 20000 not ok after a few sec request inv < 2000 still ok -
rahimi0151 reacted to a post in a topic:
new_assetid from getExchangeDetails is undefined
-
Mrrodrigoalakante joined the community
-
new_assetid from getExchangeDetails is undefined
KillerX replied to G35's topic in node-steam-tradeoffer-manager
You can write an Email to: [email protected] -
error 429 on large inventories
TheMaster replied to That Guy From 199x's topic in node-steam-tradeoffer-manager
works fine on small inventories? when u get a 429 on a large inv try doing a small inv reqeust immidietly -
new_assetid from getExchangeDetails is undefined
rahimi0151 replied to G35's topic in node-steam-tradeoffer-manager
did they respond? how did you contact them? through normal steam support? -
new_assetid from getExchangeDetails is undefined
Lukasz replied to G35's topic in node-steam-tradeoffer-manager
Just asked steam about this - w8ing for thier respond -
I always get error 429 on getPartnerInventoryContents when I fetch large inventories
-
new_assetid from getExchangeDetails is undefined
KillerX replied to G35's topic in node-steam-tradeoffer-manager
In the official documentation, the existence of 'new_assetid' is clearly mentioned. I guess it’s a bug that it's missing. Has anyone asked Valve about this yet? It would probably help if we all reported it to them. Also, I’m wondering how sites like skinport.com even work with this bug. They can’t reliably determine who sent which item without that ID. They could try using instance and class IDs, but that definitely won’t work reliably because of different paint wear and other unique values. -
new_assetid from getExchangeDetails is undefined
Lukasz replied to G35's topic in node-steam-tradeoffer-manager
Hi any one of you figured out how to get new asset id? I have tried 3 diffrent methods but its removed from all of them -
new_assetid from getExchangeDetails is undefined
KillerX replied to G35's topic in node-steam-tradeoffer-manager
This can't be intentional, right? It makes absolutely no sense to provide endpoints like "getTradeOfferHistory" and include the wrong assetid. I could understand if they removed the previousassetid (the one it had in the previous owner's inventory). -
KillerX reacted to a post in a topic:
new_assetid from getExchangeDetails is undefined
-
Yes, auth problems. Only use "aud": ["web", "renew", "derive", "mobile"] with post_url = 'https://api.steampowered.com/IAuthenticationService/GenerateAccessTokenForApp/v1/' post_data = { 'steamid': steam_id, 'refresh_token': refresh_token, } response = session.post(post_url, data=post_data, allow_redirects=False, timeout=20) print(response.text) https://github.com/DoctorMcKay/node-steam-session#refreshaccesstoken
-
new_assetid from getExchangeDetails is undefined
TheMaster replied to G35's topic in node-steam-tradeoffer-manager
the inventoy is the most credible way now -
No, rollbacks are something you'll need to handle yourself. Trade offers don't get updated when a trade is rolled back.
-
Rollbacks and lib
bytes_intravenously replied to bytes_intravenously's topic in node-steam-tradeoffer-manager
Looks like its not. Didn't found even rollback word in code -
Thank you for your suggestion. I have now changed the naming source from `market_hash_name` to `market_bucket_group_name`.
-
The new Steam Community Market (SCM) uses queries to fetch EconItem data. For example, if I access the page for Sealed Dead Hand Terminal in CS2 (appid 730), I can see that the following queryData was used: [ { state: { data: { has_wallet: true, user_country_code: "DE", wallet_country_code: "DE", wallet_state: "", balance: "XX", delayed_balance: "0", currency_code: 3, time_most_recent_txn: 1771355122, most_recent_txnid: "95599083520", has_wallet_in_other_regions: false, other_regions: [], formatted_balance: "XXX€", formatted_delayed_balance: "0,00€", }, dataUpdateCount: 1, dataUpdatedAt: 1778690244631, error: null, errorUpdateCount: 0, errorUpdatedAt: 0, fetchFailureCount: 0, fetchFailureReason: null, fetchMeta: null, isInvalidated: false, status: "success", fetchStatus: "idle", }, queryKey: ["CurrentUserWalletDetails", 1792357676], queryHash: '["CurrentUserWalletDetails",1792357676]', }, { state: { data: { property_schemas: [ { id: 1, name: "#attr_set_item_texture_seed", type: 2, int_min: "0", int_max: "1000", localized_label: "Pattern Template", hide_from_description: false, }, { id: 2, name: "#attr_set_item_texture_wear", type: 1, float_min: 0, float_max: 1, localized_label: "Wear Rating", hide_from_description: false, }, { id: 3, name: "#attr_keychain_slot_seed", type: 2, int_min: "0", int_max: "100000", localized_label: "Charm Template", hide_from_description: false, }, { id: 4, name: "#attr_sticker_slot_wear", type: 1, float_min: 0, float_max: 1, localized_label: "Sticker Scrape Level", hide_from_description: false, }, { id: 5, name: "#attr_custom_name_attr", type: 3, localized_label: "Name Tag", hide_from_description: false, }, { id: 6, name: "#attr_econ_action_preview", type: 3, localized_label: "Item Certificate", hide_from_description: true, }, { id: 7, name: "#attr_set_item_texture_prefab", type: 2, int_min: "0", int_max: "1000", localized_label: "Finish Catalog", hide_from_description: false, }, ], }, dataUpdateCount: 2, dataUpdatedAt: 1778690244646, error: null, errorUpdateCount: 0, errorUpdatedAt: 0, fetchFailureCount: 0, fetchFailureReason: null, fetchMeta: null, isInvalidated: false, status: "success", fetchStatus: "idle", }, queryKey: ["AssetPropertySchema", 730, "english"], queryHash: '["AssetPropertySchema",730,"english"]', }, { state: { data: { item_type: 0, id: 730, success: 1, visible: true, name: "Counter-Strike 2", store_url_path: "app/730/CounterStrike_2", appid: 730, type: 0, included_types: [], included_appids: [], is_free: true, content_descriptorids: [2, 5], categories: { supported_player_categoryids: [1, 27], feature_categoryids: [29, 30, 35, 64, 66, 67, 68, 69, 70, 74, 8, 15, 41, 42, 43, 63], controller_categoryids: [], }, }, dataUpdateCount: 1, dataUpdatedAt: 1778690244650, error: null, errorUpdateCount: 0, errorUpdatedAt: 0, fetchFailureCount: 0, fetchFailureReason: null, fetchMeta: null, isInvalidated: false, status: "success", fetchStatus: "idle", }, queryKey: ["StoreItem", "app_730", "default_info"], queryHash: '["StoreItem","app_730","default_info"]', }, { state: { data: { asset_url_format: "steam/apps/730/?t=1749053861", main_capsule: "capsule_616x353.jpg", small_capsule: "capsule_231x87.jpg", header: "header.jpg", page_background: "page_bg_generated_v6b.jpg", hero_capsule: "hero_capsule.jpg", library_capsule: "library_600x900.jpg", library_capsule_2x: "library_600x900_2x.jpg", library_hero: "library_hero.jpg", library_hero_2x: "library_hero_2x.jpg", community_icon: "8dbc71957312bbd3baea65848b545be9eae2a355", page_background_path: "app/730?t=1749053861", raw_page_background: "page_bg_raw.jpg", }, dataUpdateCount: 1, dataUpdatedAt: 1778690244650, error: null, errorUpdateCount: 0, errorUpdatedAt: 0, fetchFailureCount: 0, fetchFailureReason: null, fetchMeta: null, isInvalidated: false, status: "success", fetchStatus: "idle", }, queryKey: ["StoreItem", "app_730", "include_assets"], queryHash: '["StoreItem","app_730","include_assets"]', }, { state: { data: { _t: 10, v: [ [ 1, { id: 1, name: "#attr_set_item_texture_seed", type: 2, int_min: "0", int_max: "1000", localized_label: "Pattern Template", hide_from_description: false, }, ], [ 2, { id: 2, name: "#attr_set_item_texture_wear", type: 1, float_min: 0, float_max: 1, localized_label: "Wear Rating", hide_from_description: false, }, ], [ 3, { id: 3, name: "#attr_keychain_slot_seed", type: 2, int_min: "0", int_max: "100000", localized_label: "Charm Template", hide_from_description: false, }, ], [ 4, { id: 4, name: "#attr_sticker_slot_wear", type: 1, float_min: 0, float_max: 1, localized_label: "Sticker Scrape Level", hide_from_description: false, }, ], [ 5, { id: 5, name: "#attr_custom_name_attr", type: 3, localized_label: "Name Tag", hide_from_description: false, }, ], [ 6, { id: 6, name: "#attr_econ_action_preview", type: 3, localized_label: "Item Certificate", hide_from_description: true, }, ], [ 7, { id: 7, name: "#attr_set_item_texture_prefab", type: 2, int_min: "0", int_max: "1000", localized_label: "Finish Catalog", hide_from_description: false, }, ], ], }, dataUpdateCount: 1, dataUpdatedAt: 1778690244646, error: null, errorUpdateCount: 0, errorUpdatedAt: 0, fetchFailureCount: 0, fetchFailureReason: null, fetchMeta: null, isInvalidated: false, status: "success", fetchStatus: "idle", }, queryKey: ["AssetPropertySchemaMap", 730, "english"], queryHash: '["AssetPropertySchemaMap",730,"english"]', }, { state: { data: { ecurrency: 3, prices: [], }, dataUpdateCount: 1, dataUpdatedAt: 1778690244660, error: null, errorUpdateCount: 0, errorUpdatedAt: 0, fetchFailureCount: 0, fetchFailureReason: null, fetchMeta: null, isInvalidated: false, status: "success", fetchStatus: "idle", }, queryKey: ["market", "pricehistory", 730, "Sealed Dead Hand Terminal"], queryHash: '["market","pricehistory",730,"Sealed Dead Hand Terminal"]', }, { state: { data: { amtMaxBuyOrder: 191, amtMinSellOrder: 192, eCurrency: 3, cBuyOrders: 1543776, cSellOrders: 145826, rgCompactBuyOrders: [], rgCompactSellOrders: [], }, dataUpdateCount: 1, dataUpdatedAt: 1778690244659, error: null, errorUpdateCount: 0, errorUpdatedAt: 0, fetchFailureCount: 0, fetchFailureReason: null, fetchMeta: null, isInvalidated: false, status: "success", fetchStatus: "idle", }, queryKey: ["market", "orderbook", 730, "Sealed Dead Hand Terminal"], queryHash: '["market","orderbook",730,"Sealed Dead Hand Terminal"]', }, { state: { data: { version: 1, preference_state: 1, utm_enabled: true, }, dataUpdateCount: 1, dataUpdatedAt: 1778690244665, error: null, errorUpdateCount: 0, errorUpdatedAt: 0, fetchFailureCount: 0, fetchFailureReason: null, fetchMeta: null, isInvalidated: false, status: "success", fetchStatus: "idle", }, queryKey: ["CookiePreferences"], queryHash: '["CookiePreferences"]', }, ] Does anyone know how I can query this new API endpoint myself? Previously, if I wanted to get the price history of an item, I would use this endpoint which returns only the pricehistory: https://steamcommunity.com/market/pricehistory?market_hash_name=Sealed%20Dead%20Hand%20Terminal&appid=730 How can I achieve the same result using the new endpoints?
-
Is node-steam-tradeoffer-manager can detect rollback or do we need to make requests to steam api manually?