The Steam Market Shopper is a C# application I wrote to automatically purchase items from the Steam Community Market based on criteria provided by the user.
The Steam Community Market is a website which allows users of Valve's PC gaming service, Steam, to buy and sell in-game (digital) items to each other. It is essentially a gigantic online flea market. Although sellers are free to set their own prices for the items they list, historical pricing information is available for all items and so it is very easy for a seller to establish the fair market price for any item they might wish to sell. As a result, item prices tend to be very uniform – often within a few cents of each other. Nevertheless, bargains will still periodically appear on the market – sellers may list items at a discounted price to make a quick sale, or simply due to user error (for example, accidentally listing an item for $1.20 instead of $12.00).
But it can be very difficult for an interested buyer to take advantage of these bargains when they appear. The Steam Community Market does not provide any kind of "buy order" functionality which would allow a user to automatically buy items when they are away from their computer, nor will it provide alerts when items meeting certain criteria go on sale. In fact, the Market does not even provide a live feed of items as they are listed; the only way to see a steady stream of new items is to continually refresh the Steam Community Market website. Therefore, the only way for a buyer to take advantage of a bargain is to be lucky enough to have reloaded the Steam Community Market shortly after the discounted item is listed, and then be fast enough to click the "buy" button before any other user. Indeed, many users will sit at their computer for long periods of time, refreshing the Steam Community Market website every few seconds, hoping to be the lucky individual who spots a deal before anyone else.
The Steam Market Shopper strives to eliminate this pointless exercise by continually monitoring the Steam Community Market for new items, and by submitting buy orders automatically, without any action from the user themselves.
Valve's Steam Subscriber Agreement states: "You may not use Cheats, automation software (bots), mods, hacks, or any other unauthorized third-party software, to modify or automate any Subscription Marketplace process." Although Valve has been lax on taking action against users who attempt to automate the Steam Community Marketplace, bannings have occurred. In one high-profile case, a Reddit user named "dmn002" claimed he was banned for automated buying and selling after he had accumulated over $10,000 in digital items. Although I have designed and implemented the Steam Market Shopper, I have not actually put it into use. If any Valve employees happen to be read this, I assure you that this is purely a software engineering exercise; please don't ban my Steam account.
While more sophisticated automation tools surely exist, it is difficult to find any information on them – possibly because of their illicit nature.
Let's examine each of these goals in turn.
There are two important things to note here. Firstly, the buying agents never poll the Steam Community Market servers for new listings; the only time they send requests to the server is in order to purchase an item. This minimizes the number of requests they need to make, which is important, because buying agents are the ones which will fall under the most scrutiny. Secondly, increasing the number of listing agents can increase the throughput of new listings while decreasing the amount of requests sent by any individual agent. For example, instead of having a single agent polling the Steam Community Market servers every two seconds, you can have a pool of eight different agents, which each poll the servers every second. Although you receive updates twice as fast, no single agent polls the server more than every eight seconds.