Jump to content
McKay Development

All Activity

This stream auto-updates

  1. Today
  2. This seems to be a part of the solution. The confirmations are working like 60-70% of the time now but for the other 30-40% error 429 is still getting returned. Thank you for sharing though.
  3. 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.
  4. 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.
  5. 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?
  6. Yesterday
  7. Last week
  8. any workaround regarding this?
  9. Earlier
  10. fix: Invalid time value by @ricardocefet2018 in #367 Full Changelog: v3.50.0...v3.50.1 View on GitHub
  11. @Lukasz Hi, have you received a response from them?
  12. 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.
  13. Oh this is steam inventories with 100Ks
  14. can i ask which inventories are these with so many items CS inventories store 1k items Max per user
  15. yes, request inv < 20000 items ok after a few sec request inv > 20000 not ok after a few sec request inv < 2000 still ok
  16. works fine on small inventories? when u get a 429 on a large inv try doing a small inv reqeust immidietly
  17. did they respond? how did you contact them? through normal steam support?
  18. Just asked steam about this - w8ing for thier respond
  19. I always get error 429 on getPartnerInventoryContents when I fetch large inventories
  20. 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.
  21. 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
  22. 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).
  23. 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
  24. the inventoy is the most credible way now
  25. No, rollbacks are something you'll need to handle yourself. Trade offers don't get updated when a trade is rolled back.
  26. Looks like its not. Didn't found even rollback word in code
  27. Thank you for your suggestion. I have now changed the naming source from `market_hash_name` to `market_bucket_group_name`.
  28. 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?
  1. Load more activity
×
×
  • Create New...