Instagram Mass DM Guide: InstaInfantry


Hey and welcome to the first available Mass DM tutorial showcasing how to execute a Mass DM operation on Instagram from start to finish using a first-of-its-kind bot – InstaInfantry. I’m Grey Hat Nik, the guy behind InstaInfantry and Grey Hat Marketing. I’ve been practicing digital marketing across various social media platforms for close to 8 years and black hat marketing tactics for over 5 of them.


Now, yes calling InstaInfantry a first-of-its-kind bot is a bit of a loaded statement but allow me to break it down. At the moment, there is no other commercially available software out there that imposes zero limits or paywalls as to how many accounts one can automate simultaneously. That’s because unlike 95% of the current bots on the market, InstaInfantry wasn’t built on the premise that its clientele will be using it to execute ancient strategies like follow/unfollow. Strategies that almost invariably lead to poor engagement rates and imminent bans.


No, InstaInfantry was built on the premise that your main account should never be automated. We don’t make any promises as to how incredibly safe our bot is or that it’s using some state-of-the-art AI to avoid detection from a multi-billion dollar algorithm for eons on end. That’s because we know that there is virtually no sure-fire way to guarantee your account’s safety when using third-party automation tools. Sure, some practitioners may be able to do it for quite some time without any visible repercussions but the risk is always there nonetheless. 


That is why InstaInfantry has the word “Infantry” in its name. It’s what we call accounts that are meant to go out and fight on behalf of your main page aka The King. As morbid as this may sound, they’re pretty much like pawns or missionaries being that their purpose is to spread the word of their lord until their inevitable demise. We know these accounts will perish sooner or later for violating the ToS. But our goal is to extract as much value out of them as possible, with a variety of different strategies, before they kick the figurative bucket. 


One of those strategies is called the Mass DM and we’ll be covering how to execute that strategy via InstaInfantry in this tutorial. It’s become a relatively popular strategy but is currently only being offered by a select few individuals with their own scripts. InstaInfantry, on the other hand, can be used by anyone, whether you’re a business owner seeking to expand your reach or a digital marketer wanting to offer a unique service to your clients.  A quick Google search reveals the top-ranking competitors charging a minimum of $1500 for 25,000 DMs to be sent to a custom list of targets.



 I’m hoping that the proliferation of the InstaInfantry bot will introduce some much-needed competition into the market and drive those sky-high prices down. 


In addition to showing you how to set up and run InstaInfantry, I’ll also cover the basic fundamentals of botting as it relates to networking and programming. It’s a complex field but I’ll break it down as best as I can so just bear with me.


It is very important to note that InstaInfantry is only compatible with Windows OS. If you’re using Mac or Linux, you’ll need to acquire a Virtual Machine or a VPS/VDS, otherwise known as a remote computer to run it. It’s probably in the best interests of everyone using the software to install it on a VPS/VDS considering InstaInfantry must be open and running at all times in order to execute tasks. It’s also generally good practice not to install unknown software onto your main, personal computer so this shouldn’t be too much of a deterrent for anyone keen on using bots.


Opening InstaInfantry

So when you first download and open InstaInfantry, you’ll see a blank page that somewhat resembles an Excel sheet. This is the main page of the software where you’ll find all your tasks. 


Pre-Configured InstaInfantry


In the top left corner of the window, you’ll see a tab marked as “Settings”. Click on “Open settings” and you’ll be transferred to the global settings portion of the bot where you can configure its parameters to best accommodate your given setup.


InstaInfantry Global Settings


The first thing that we wanna do is get our proxies up and running so our computer’s native IP doesn’t become associated with any botted accounts.


Proxies serve as the intermediate party between us and Instagram. They mask our true IP addresses and are at the core of any mass botting operation. You can upload proxies into InstaInfantry by clicking the top button on the left featuring the word “add” within the global proxy settings. 


Adding Global Proxies into InstaInfantry


If purchasing proxies from my GreyHatMarketing Store, you will be receiving them in HTTPS format. In that scenario, just upload the exact file you received upon the completion of your purchase and it’ll update the proxy list automatically. Simply click on the “From file” field, specify a path to the TXT document containing your proxies, and press “add” on the bottom of the window.


InstaInfantry Adding Proxies via File


If purchasing proxies elsewhere, make sure that you check the format in which you received them, whether it be SOCKS4, SOCKS5, or HTTPS. Next, make sure that the separators used to segregate the IP port, proxy username, and password are listed in the field located directly above. The most common separators have already been listed by default so there may or may not be a need for you to do so.


InstaInfantry Separators Field


Now, the recommended limits on proxies tend to vary quite drastically depending on quality. If purchasing my “3 users = 1 modem” plan, the limit of concurrently running accounts shouldn’t exceed 1. For the “2 users = 1 modem” plan, it’s 2 and for private modems, it’s 3. On the lower end of the quality spectrum, you’ll find that accounts can sometimes perish more quickly depending on the degree of traffic its currently experiencing. But theoretically speaking, there is a chance that your shared proxy may work just as well as the private ones. You simply just have to be lucky enough to be sharing a modem with users who hardly utilize it (i.e. not enough clients or only executing basic scraping tasks once a week). In those cases, you’ve effectively gotten a private proxy for a third of the price. It’s really just a matter of whether you’re a betting man or woman.


Buying Proxies from GHM Store


The only recommendation that is somewhat set in stone, is that you shouldn’t ever exceed more than 3 accounts on a singular proxy, regardless of its quality. Having run countless tests, 3 concurrently running accounts is the upper echelon of what is considered safe and effective. Beyond that limit, you’re taking on a greater degree of risk of having all of your accounts banned and tarnishing that particular IP address for the foreseeable future. 


When purchasing mobile proxies, it is also important to note their User Base to IP pool ratio. Given that the base of my proxy operations is currently in Russia, all of my proxies are exclusively RU-based and located within the Moscow region. The default ISP for 4G proxies purchased from the Grey Hat Marketing store is Megafon for the exact aforementioned reason of it having a massive ratio within this particular region. 


Let’s do a quick breakdown of the math. There are roughly 12 million people residing in Moscow with an additional 10 million who travel into the city from suburbia (Podmoskovie) for work. Out of those 22 million, roughly 40% use Megafon as their primary carrier. Considering there are 5 prominent ISPs across all of Russia, Megafon has captured the largest market share out of them all in this particular region. That means that on any given business day, there are roughly 8.8 million users across their network. 


Megafon has a total IP pool of 22,000 across all of Russia. Out of those 22,000, approximately 12,000 of them have been assigned to the Moscow region. 8.8 million / 12,000 = 733. That is roughly the number of users located on a singular Megafon-owned IP at any moment. These “normal” users are how we mask our operations. It’s what separates 4g mobile proxies from the data center or residential ones: the degree to which IPs are being shared. Instagram is obviously not going to flag and ban every single user associated with that IP address as that’d be the equivalent of bombing a village to kill a singular criminal.


But if you’re simultaneously running 25 accounts on this singular IP address, your operation amounts to roughly 3.25% of that proxy’s ENTIRE user base. That will certainly get picked up by Instagram no matter how randomized your behavioral and existential variables may be. That is why 3 accounts is the recommended limit for any proxies purchased from my store. If purchasing proxies elsewhere, I only suggest that you do some preliminary research to get a sense of what their IP pool/user base is. A small IP pool ratio will greatly impact your operations and often not for the better.


Now that we’ve gotten a very simplistic idea of how 4G proxies and basic subnetting work, let’s finish configuring our global proxy settings. Given that I’m using my Low-Tier “3 users = 1 modem” plan, I’ll set my “accounts per 1 proxy” limit to 1.



As for keeping logs of which accounts utilize which proxies, this is largely an unnecessary burden on your RAM unless you’re conducting A/B tests to check a rather large variety of proxies. I’ll leave this turned off but it’s mostly up to your discretion.

Next, you’ll want to enable the “forced extraction of proxy” function located fourth down the list.


InstaInfantry Forced Extraction Function


It essentially allows for the rotation of proxies so that once an account has either completed its given task or got blocked/banned in the process, the proxy will rotate over to the next available account awaiting to commence its programmed actions.


I received quite a few questions from clients who’ve read the recommended account limits above and assumed they’d need to buy thousands of dollars worth of proxies to execute a small 5k DM operation per day. That assumption is false. The recommended limits are for simultaneously working accounts. The “forced extraction of proxy” function enables accounts to share the same proxy but just not all at once. Given our proxy’s IP rotates every 5 min, by the time your first account completes its tasks, the proxy will be “extracted” and utilized by the next account in line. Only this time, all of its actions will be executed under a different IP address, ensuring that no singular IP address becomes associated with too many accounts. By virtue of this methodology, we can use one proxy to automate, at the minimum, several hundred accounts across a 24 hour time frame.


And last but not least, I’ll be checking the function directly below it marked as “if upon launch, an account doesn’t have a proxy – take one from the list”. This will save us a bit of time not having to manually assign proxies to various accounts.


If you plan on utilizing several concurrently running tasks for greater efficiency, I suggest configuring these exact settings but within your local proxy settings as opposed to the global ones. Running operations will become significantly smoother this way.




Next up, we’ll be configuring the User-Agents. User-Agents are another way we conceal the fact that there’s a singular entity behind a string of accounts. They account for a large proportion of the fingerprints that enable platforms to discern between their various users. A user agent string typically looks like this for API-based users:



And like this for WEB-based users:


InstaInfantry WEB User Agents


You can think of each component of a string as a separate identifier, the amalgamation of which morphs into a singular unique user. The combination of these identifiers can vary quite drastically and when combined with the limited number of users on a proxy, it becomes quite easy for platforms to draw associations between strings of seemingly interconnected accounts. 


Therefore, in order to avoid detection, it is in your best interests to utilize as broad a selection of User Agents as is possible. InstaInfantry comes pre-installed with a relatively comprehensive list of API-based User-Agents but said list is hardly exhaustive. Is it absolutely necessary to update it? At the start, perhaps not but it’ll certainly help attain a slightly higher send rate as opposed to using the same default user-agents every other InstaInfantry client is using. 


The reason why I’ve ensured that InstaInfantry has an editable list of User Agents is for customizability reasons. If you’re familiar with the few advanced, competing bots out there, a large portion of them did not include a function enabling their user base to edit the global list of User-Agents. This can drastically hamper the degree to which you’re able to execute certain strategies.


Let’s say, for example, that the full extent of your botting needs is executing Mass DMs. In that instance, you can configure your list of User Agents to best accommodate that specific strategy. Your average Mass DMer is likely utilizing the cheapest available accounts that were manufactured in bulk via Android API based scripts. Users of this caliber may find immense benefit in being able to set their user agents to only reflect, say, Samsung devices. 


One can do that by accessing (no affiliation. Just a useful tool I stumbled upon a while back) and selecting the necessary details as seen in the images below:


User Agent Selection

User Agent Selection


This is certainly not a make-or-break variable but just a little trick that may derive a small increment in the trust score of your accounts. Remember, it is not outside of the realm of possibility that users are accessing their accounts from different devices. Therefore, don’t anticipate more than a 10-15% increase in the amount of DMs you’re able to send out with this tactic. An additional few DMs sent from each account per cycle is typically enough to make this slight iteration worth your time.


I should also note that upon closer inspection of the API user agents, you’ll find that their locale (final identifying component) reflects RU which stands for Russia.


InstaInfantry User Agent Locale


This was done in part due to the fact that 90% of the accounts sold from my store were manufactured via Russian proxies, Russian SIM-cards and Russian User-Agents. If purchasing accounts from my store, just leave it as is so as not to unnecessarily decrease the accounts’ trust scores. However, if purchasing from another vendor, I suggest you inquire as to which region their account-making proxies are based in and obtain a list of User-Agents that best reflect said region via the aforementioned tool –



Now that we’ve gotten user agents out of the way, let’s head further down the global settings list into the section marked as “other”. For the sake of time, I’m not going to delve into the intricacies of each function shown on this list as I believe they’re pretty self-explanatory on their own. My suggestion is to simply enable or “check” each of the functions checked in this image for optimal performance. You are certainly free to play around with them and set them to your liking once you’ve become accustomed to using InstaInfantry. I’ll just cover a few that I believe to be slightly more important than others.


The function “log account’s actions” enables users to track the exact order of actions each account has executed via the software.

InstaInfantry Log All Actions Function


This is particularly useful when first starting out because it allows one to keep detailed records of what was done before the account went kaput. If you’re the data-driven type (which I definitely recommend you be in this field), collecting and comparing these logs after conducting A/B tests is what propagates the optimization of strategies. 


This function is also quite useful if you’re a seller of various black hat growth services, particularly Mass DMs. A significant percentage of clients may not trust you enough to purchase your services and rightfully so. The field of black hat growth hacking attracts a lot of scammers because of its nature. Skimping on the pre-agreed upon number of DMs is quite rampant given that most clients have no way of truly knowing how many were sent. 


If you’re trying to build a reputation for yourself as a “trustworthy” black hat marketer, then this function allows you to prove to your clientele exactly how many DMs were sent out and to which users. They can then manually cross-reference their new followers/clients and confirm that they were in fact in the list of users to whom a DM was sent. 


The only downside to enabling this function though is the degree of processing power it takes up when running many accounts at once. If just starting out, this won’t be a visible issue but if operating upwards of 100 accounts at once, your hardware will definitely start to feel the side effects. The way I’ve played it in the past is by charging an additional fee for delivering the so-called “proof” as sifting through these logs can be a massive pain in the ass for any large operations. The add-on function to log reasons for skipping when scraping and filtering is also available but it’s certainly not necessary in the vast majority of cases.


The next function here that deserves a bit more attention is the “NO DELAYS” checkbox. The “enable at your own risk” part sounds a bit menacing but we use it quite extensively in a lot of cases. In some instances, you can extract far greater quantities of successfully sent DMs using this function as opposed to waiting for several minutes in between each DM. If utilizing low-tier proxies on low-tier accounts, it’s probably in your best interest to utilize this function extensively to achiever a greater degree of efficiency.


InstaInfantry No Delays Function


However, you’re likely better off leaving it unchecked in the global settings and simply enabling it in the “Settings” section of your CurrentTask as depicted below:


No Delays Function


The CPU eco-mode when publishing posts or avatars is also quite useful so as not to put too big of a load on your processor at once.


InstaInfantry CPU Eco-Mode


And lastly, the function to highlight invalid accounts in red is generally a must-have for organizational purposes. Definitely suggest having it enabled for more efficient processing.


InstaInfantry Invalid Accounts Red


As for the remainder of the settings in this tab, they don’t play too large a role within this particular type of Mass DM operation so we’ll come back to them in future tutorials.


Photo Editing (Uniqueness)

This is a function that was incorporated relatively late within the development process but has proven to be immensely useful for a variety of strategies. For the purpose of this write-up, we’ll just stick to its purpose within the Mass DM tactic. 


When purchasing Low or Mid-Tier Infantry accounts, 95% of the time, you’ll be receiving them in their blank state. The simplest and most effective thing you can do to increase your DM open rate and subsequently increase conversions is by adding an avatar aka a profile picture. Let’s say you have a database containing 50 different images that best fit the given niche of your infantry accounts. By the time you complete a small 5k operation, you’ll end up re-using the same image as a profile picture at least 3 times. 


I’m assuming most of you know what reverse searching an image is. That feat is only possible because platforms are able to identify images that have already been processed, hashed, and made a fingerprint of. Therefore, when re-using the same images over and over, you’re inadvertently leaving a trace for the algorithm to follow. It will remember the fact that this image has been posted thrice in the past X days and all of the accounts that posted it have since been banned for automated activity. The next time you use that same image on a brand new account, no need for a shocked Pikachu face when it gets flagged and banned far quicker than its predecessors. 


The beauty of this function is that you can now use that same exact image but each time it’s posted, it gets altered in a way that renders it a completely new image, unrecognizable from anything posted in the past. That same database of 50 images is now capable of being made into 5000 unique images, given your brightness, contrast, and noise settings are wide enough. However, do be aware that making the ranges too wide can mangle the image to the point where it has virtually zero resemblance to the original. That’s why I suggest you play around with the settings and find a nice equilibrium between making as many unique copies as possible while simultaneously retaining the quality of the original photo. A good starting point would be the settings I’ve used here:


InstaInfantry Photo Uniqueness Editor


Alrighty, so that pretty much settles the general configurations portion of this tutorial. Let’s move onto setting up the actual Mass DM task.


Creating a Task and Adding Accounts

Head on over to the All Tasks window of the bot and with the right click of the mouse, create a new task.


InstaInfantry Creating Tasks


For the purpose of this tutorial, I’ll be naming my task “InstaInfantry Promo”. While I’m at it, I’m also going to create a separate task titled “Scrape” which we’ll come back to later in this video. Your main window should now look like this:


InstaInfantry Main Window


Once the tasks have been created, simply click twice on the Mass DM task and you’ll be transferred over to the CurrentTask settings window. Go ahead and click on the tab titled “Execute Actions”. Here, you’ll want to enable the functions “check account validity prior to executing tasks” and “check account validity upon completion of tasks”.


InstaInfantry Check Account Validity


The former function is necessary when purchasing accounts as it allows you to ensure that they haven’t already been rendered inoperable for a wide number of reasons. If purchasing accounts from the Grey Hat Marketing Store, be wary of the 15-minute warranty policy placed on the Low and Mid-Tier accounts. I suggest creating a simple task with just this function enabled and launching it to check whether all of the accounts you received have passed the authorization process successfully. 


Once you’ve done that, it’s time to populate the task with working infantry accounts. You can choose from a wide selection of them over at the GHM Store


Purchasing GHM Accounts


These cookies are embedded within the authentication token when first accessing the API. When you import them, it reflects the user-agent it was previously using, making it appear as if the session during which they were registered never actually expired. This allows us to start automating right away and not have to worry about pesky verification requests. 


Please make sure that when you purchase accounts with cookies and import them via API, you authorize them exclusively via API in the Task Settings window. Forgetting to disable WEB authorization (which is common when extracting media_id) can culminate in accounts receiving a checkpoint upon authorization. Even if passed successfully, that account will lose a significant portion of its trust score and will likely not live up to its initial potential.


When scrolling through the listed products, you’ll notice small price variations between various Mid-Tier alternatives. Those differences in pricing can usually be attributed to the methodology behind how a certain batch of them was created. The typical culprits are the type of script that was used, the mode of registration and the number of accounts that were manufactured using a singular SIM card (usually not more than 2). You can find the relevant details in the product descriptions of each type of account.


Some accounts will live significantly longer than others and will be capable of sending far more DMs per launch without getting pesky action blocks or verification requests. The difference in quality will certainly be noticeable from the get-go but it is up to you to develop, optimize and refine your sending strategy. In the right hands, even the shittiest of infantry accounts can generate more DMs than their aged, warmed-up counterparts so make sure to test as many combinations as needed until you’ve attained a cost basis you’re satisfied with.


Although Low-Tier accounts are frequently listed as out of stock, we can typically produce them quite quickly upon request. Our primary concern is them dying whilst waiting to be bought which in turn ends up netting a loss for us. We add fresh accounts on a daily basis but in instances where they’re all sold out, you can subscribe to our Telegram channel to receive updates as soon as we’ve replenished our stock.


The only thing I must stress if planning to utilize accounts from my store is to go the extra mile and purchase your proxies from there as well. Yes, I know what you’re thinking. Nik is just trying to milk as much money out of us as possible, which to a certain extent is obviously true. But the issue that arises when using proxies located in other regions is that accounts may die far more rapidly and some may even fail to pass the simple process of authorization. The core of the problem is that all Low and Mid-Tier accounts were made via residential proxies based in Moscow. If you’re importing accounts via cookies and using a proxy located in, say, Brazil or Singapore to authorize them, Instagram sees it as you practically teleporting halfway across the world in a split second. The best-case scenario is that you’ve either been using some sort of VPN or proxy, neither of which inspires a great deal of confidence in what appears to be an already murky-looking account (given its creation process) or that the account was bought for automation purposes.


You can obviously still use other providers but I ask that you ensure that they are based within Russian territory and be as close to Moscow as possible. Do note that my replacement warranty only covers accounts that were authorized via GHM endorsed proxies. I can’t speak for the quality of other providers and therefore refuse to subsidize their shortcomings.


Now that that rant is outta the way, let’s start importing the accounts. Upon purchasing your desired quantity of infantry accounts, you’ll receive their details in both, email and on the redirect page. Now head on over to your INSTAINFANTRY CurrentTask window, click on the “Accounts” tab, hover over the blank area with your cursor, and with the right click of the mouse, select the option “import account data via API from file”.


InstaInfantry Importing Accounts


Then just select that same TXT file you’ve received on the redirect page and you should see them appear within the interface.


InstaInfantry Accounts Added


Do note that you should only import accounts in the following fashion if they come with cookies. Accounts that come in the username:password format should be added from file as such:


InstaInfantry Accounts Without Cookies


Task Settings

Next, head on over to the tab in the CurrentTask window labeled as “Settings”.


InstaInfantry 47 CurrentTask Settings


Here is where we configure the local parameters of any given task. The first thing you’ll see in the top left corner is the Instagram API version selection function. Simply click on it to expand the full list and click on the one you intend to use. Then click to update the accounts and you’ll find that your existing accounts’ API user-agents will all reflect your selected version.


InstaInfantry 48 API Version Selection


This will also require some testing to acquire optimal results. As of early September of 2021, versions 159 and 148 have been the best in terms of infantry longevity. In the previous month, it was version 167. There is a solid chance that as you’re reading this, these are no longer the best API versions so I strongly suggest you conduct your own testing to see what delivers the best results.


Right underneath the API version selector, there’s a function that states “send additional requests to better emulate official app usage”.


InstaInfantry 49 Emulate Official App


It sounds a bit contradictory considering the correlation between API calls sent and penalties issued but it’s ultimately better to have it enabled as it helps imitate human behavior in a slightly more believable fashion. Action blocks are far more favorable on our wallets than an outright ban so just keep that in mind.


Now, in the squared box, you’ll find a function stating “number of accounts operating at the same time” aka block size. Input the desired quantity of accounts you’d like to automate simultaneously in accordance with the limit of the proxy plan you’ve purchased from the store. If you purchased one low-tier proxy, this field should be set to 1. If you purchased two low-tier proxies, it should be set to two. However, if you purchased a high-tier proxy, that limit now becomes three. Two high-tier proxies and the limit should now be six and so on. If you exceed the limit available on your proxy, InstaInfantry will proceed to authorize the accounts using your computer’s native IP address. This will typically culminate in you losing accounts way before their prime so make sure you always stay within the limits.



After you’ve done that, enable the function right underneath it that reads “Limit the number of concurrently running accounts”.


Concurrent Limit


This will limit how many accounts can be working concurrently across the whole task, similar to how we’ve configured the proxy limitations. However, this function is mostly there to prevent crashes if one was to overload their hardware. Remember that InstaInfantry does not impose any real cap on how many accounts you can automate at once but your hardware will by crashing the executable. Make sure that when scaling your operations, to check the capabilities of the machine on which you’re running this software and stay cognizant of its limitations. 

Forgetting to enable this function will culminate in InstaInfantry disregarding the limit depicted above and launch all of the accounts in the given task. If you have 50 accounts in the task and the proxy limit is 10, the remaining 40 accounts will proceed to use your machine’s local IP to authorize them. By that point, you can potentially kiss all the accounts in that task good-bye. Therefore, DO NOT forget to enable this function.

And lastly, avert your eyes to the top of the current GUI’s page where you’ll find this function:


InstaInfantry WEB Authorization


Enabling this will allow us to use the “Extract Media_Id” function when crafting our DM which I’ll be covering shortly in the Outreach settings. However, DO NOT forget to disable it before launching the task as it will render the accounts’ API cookies unusable.


As for the remainder of the settings you see below, they’re used to automate the transfer of accounts from task to task when running more complex, longitudinal operations. We’ll cover their functionality in future tutorials.


Adding Profile Pictures

Next, we’ll want to enable the “Change account information” function and proceed to click on it.


Change Account Information Function


Once you’ve done that, you’ll find the “change avatar” checkbox. As we’ve already gone over in the embedded photo editor section, you’ll want your infantry accounts to at the very least have a visible profile picture when sending out DMs. It’ll greatly impact your ultimate conversion rate.


To do this, you must create a folder containing at least a dozen images that you want to be displayed in the avatar sections of your infantry accounts. With the photo editor enabled, you should be able to derive at least 100 unique images with the previously suggested settings. Simply click on the button illustrating the word “folder” and specify a path to the folder containing said images. 


InstaInfntry Adding Avatars


“Outreach” Settings

Once you’re done with that, you can exit the “change account information” window and head over to the function titled “Outreach” and hit the checkbox next to it before clicking on the function itself.


InstaInfantry 24 Outreach Enabled


Here is where you’ll find a variety of actions your infantry accounts can execute to interact with the Instagram user base and subsequently funnel traffic over to your King.  As this is a Mass DM tutorial, scroll down till you find a function that reads “send direct messages”.


InstaInfantry 25 Outreach Set Up


There’s an additional checkbox below it that reads “create group chats” but I would advise against doing that as it has been proven to have far worse conversion rates than your standard one-on-one DM requests. Once you’ve enabled the “send direct messages” function, you’ll see a text box below it. Click on the right side of your mouse while hovering over it till you see a function appear stating “add text”.


InstaInfantry 26 Text Field


Clicking on it will trigger a window to pop up where you can now enter the textual contents of your DM and any attachments you want to include within it when sending them out to your target audience. 


Crafting the Direct Message

There’s a plethora of useful information you can find in the tabs below but the most important function that I’ll go over here is the spintax. Spintax is a pretty powerful tool within our black hat arsenal that is capable of altering our text to create a unique new message each time it’s sent. So for example, I could write “hey dude” and the text would invariably always be “hey dude”. However, with spintax, I can add substitutes of a word within the sentence structure to form different variations of the overall text. So by adding these braces { } around the word “dude” and adding “bro” with the separator | between them, we now have two unique variations of the DM: “hey dude” and “hey bro”:


InstaInfantry 27 Spintax Variation


Now if we alter the “hey” to have the substitutes {hey|hi|sup}, we now have a total of six unique messages that we can send to our target.


InstaInfantry 28 Spintax Variation


You can also use macros to scrape the username, name, and surname of your target audience and reflect it within the contents of your DM. More details about available text functions are written in the tabs below so just take the time to familiarize yourself with them and craft what you believe to be the perfect message.


Seeing as how the purpose of my task is to promote the InstaInfantry bot, I’ve drafted up a heavily spintaxed message whose goal is to entice my targets to check out the contents of my post, which will outline the usefulness of InstaInfantry in-depth. When using spintax, it’s a bit hard to conduct A/B testing in the context of the messages you send but it’s a necessary sacrifice to prolong the lifespan of our infantry and thereby reduce costs. It also makes a copywriter’s job supremely difficult so any copywriters reading this can regard this as your warning.


As for the attachments, how you wanna play it is up to you. You can include images/videos or do in-app media attachments to drive traffic over to your desired location within Instagram itself. Said attachments are either a general profile share or a specific post. If you’re hoping to simply increase your follower count, a general profile share tends to work better. However, if you’re trying to harness awareness for a particular product or some sort of movement you’re organizing i.e. giveaways, then a publication share should be more up your alley. Given that I’m promoting my bot, I reckon a post share would transpire more favorably for my KPIs. 


I simply just click on the button featuring the “User profile/post attachment” text and paste the link leading to the post or profile in question into the top empty field:


Extracting Media ID



Then just select any account from the list of imported accounts, use it to extract the media ID via the button you see below, and voila – it will now be automatically included within each DM, following the text we’ve entered in the previous segment.


Attachment Successful



Now, if you want the post/profile share to come after the text, make sure you place a line breaker right after it before including the Media ID in square brackets. It should look like this:


Check out this page:




That line breaker is also capable of breaking up large blocks of text into separate messages but I’d advise you not to use it too frequently as each new message amounts to a separate API call. Forgetting to place the line breaker either before or after the media attachment will result in just just the media attachment being shared so don’t forget to place it in your desired location as depicted above.


If you receive an error during this process regarding Instagram WEB authorization, go ahead to the CurrentTask Settings tab and enable this function here.


InstaInfantry WEB Authorization


Just make sure to disable it after you’ve successfully extracted the media_id so as not to lose the value of your accounts’ cookie information.

The actual message that I’ll be sending out to my target audience in this tutorial will look like this:

DM Copy


This is hardly my best work in terms of copywriting but I believe it should suffice in persuading the target audience to read the long-form copy located in the caption of my post. I suggest keeping your DMs relatively short and to the point as I’ve found that writing paragraphs upon paragraphs to a cold lead almost always results in poorer conversion rates. What I’ve written above is already exceeding the optimal length of the DM but I’ll roll with it for now and optimize in future launches.


You can also include links that lead outside of Instagram and utilize the link shorteners found within the global settings to ensure that they remain clickable after the initial few DMs. However, be aware that your Infantry’s longevity may suffer immensely as a result of it so do prepared to pay a premium in accounts to make this a viable strategy. Instead, I always recommend redirecting your traffic to a well-crafted Instagram page and having the desired domain listed in the “King’s” profile for easy access. However, if you believe that sending a direct link will help reach your objective more efficiently, it certainly wouldn’t hurt to try.


“Limits and Delays” Configuration

Now, turn your attention to the tab atop the Outreach interface marked as “Limits and Delays”.


InstaInfantry 31 Limits and Delays


Click on that and you’ll be transferred to a wide array of parameters. These parameters enable you to configure the time and user-based limitations your infantry accounts will be adhering to. These timers play a pretty impactful role within all black hat operations as a huge portion of bot-like behaviorisms can be accounted for by denoting the speed with which actions are being executed. Most practitioners would generally say it’s prudent to be on the cautious side of things but that’s largely dependent on the type of strategies you’re running.


Unfortunately, there is no secret sauce as to which set of ranges will result in the longest lifespan. Instagram is far too dynamic of a platform and you’ll find that what worked better last week is working terribly now. You’ll need to experiment with your timers quite frequently and there’s just no other way around it. Paradoxically, I’ve found that sending a DM to a user once every ten seconds via the “No Delays” function can sometimes perform much better so take take whatever theories others may have with a grain of salt and test for yourself. 


In the case of solely doing Mass DMs via Low or Mid-Tier accounts, we don’t really aim to keep them alive for too long as a sizable majority of them will perish within a matter of days anyway. It is up to you to find an optimal equilibrium between efficiency and growth when executing Mass DMs via Mid-Tier accounts. A general piece of advice would be to work in cycles in which you’d execute a given number of DMs within a single launch and then await a 1 – 12 hour interval before the subsequent launch of the same task. The quantity of DMs per cycle and the length of the interval is up to you to play around with. With low-tier accounts, it will be in your best interests to keep the intervals shorter to ensure they don’t die before you’ve extracted all the value you can out of them. With higher quality accounts, you may be better off enacting longer intervals to ensure Instagram doesn’t ban them for automation.


When configuring the parameters within the Limits and Delays tab, we’ll want to make sure that the first visible function – “Action limit per 1 user” has a range of 1 – 1. This ensures that we’ll only be sending a singular DM to each of the targets on that list and not interact with the same users again unless starting a new task. 


InstaInfantry 32 Actions Per User


Directly below that function, you’ll see another one titled “Pause before each user”. That range will dictate how long each account must rest between their interactions with various users. You can configure this range to be between 10 to 25 seconds but again, you’ll need to play around with it if you find your accounts are perishing a little too quickly. 


Next, scroll down to the function labeled as “Limit Direct Messages”. The “correct” configuration for this function will also vary VERY wildly. This will generally depend on the quality of the accounts themselves and how much time you’re willing to invest monitoring the operation as I’ve mentioned above.


For low-tier accounts, the ideal scenario is that you’d send anywhere between 5 – 21 DMs per launch and then wait a few hours before re-launching the same task. As for the “per today” limit, you’d likely want to cap it at somewhere around 40 – 50 DMs per day. A large portion of accounts will likely not make it to that point without getting action blocked but for those that do, they’ll at least be spared to repeat the process another day.



And lastly, the final function we’ll be covering here, located directly beneath the “per all time” limit is the “pause before sending Direct Message”. This essentially means how much time the infantry will be spending in the open DM chatbox before actually sending the message. This is meant to emulate the act of actually typing a message as your regular human user would. I suggest setting it somewhere between 8 and 18 seconds for optimal efficiency. But, for the last time, do take these limit suggestions with a grain of salt and manually test what works best for you in that given time frame. 


InstaInfantry 34 Pause Before DM

Target Audience Configuration

In this portion of the Outreach settings, we will set the necessary parameters regarding the targets who will be receiving our DMs. The first few functions you’ll see are centered around something called the “Ignore List/Black List”. Said list is composed of users that were previously reached out to within this particular task. InstaInfantry will cross-reference that list as it executes its programmed tasks and will skip them if it were to encounter their username/ID within the TA list in the future. It’s a good measure for ensuring that your Infantry’s actions aren’t wasted on duplicate values but you should make it a point to clear it once it reaches 100,000 users or so.



Right below it, you’ll also find a separate window to configure the various filters you want to enable when executing your Outreach operations.


InstaInfantry 36 Filter Users


The Target Audience Scraper can sometimes malfunction when filtering users so I suggest you fulfill your filtration needs here. For my “InstaInfantry Promo” task, I’ll enable only the top two filters which are “skip if there is no avatar” and “skip private profiles”. We’ll cover the downsides of filtration shortly.


InstaInfantry 37 Filter Selection


As we proceed to go down the list of functions, you’ll see an empty field. This is where our actual list of targets’ usernames and/or IDs will be located. We will be populating this list using the Target Audience Scraper in the following segment of this post.


InstaInfantry 38 TA List Field


Below the empty field, you’ll see the function that says “if Target Audience List empty – do not execute tasks that run via scheduler. We won’t be covering the scheduler in this tutorial but you can find it in the CurrentTask window’s tab marked under “Timetable” and figure it out on your own accord. It’s quite simplistic and there are question marks located in many parts of InstaInfantry that contain localized files explaining how certain functions work and their general usefulness. 


The next function that is of relative importance is the “No values in the target audience list – finish task”. You should enable this so that your given task concludes automatically as soon as the Infantry has gone through all the available targets. Forgetting to enable this will leave your infantry relentlessly attempting to find their next target but returning an invalid response due to the empty list. 


InstaInfantry 39 TA List Empty Finisher


As for the remainder of the functions regarding logging actions, enabling them here isn’t necessary considering we’ve already configured them within the global settings of the software at the very beginning of the video.


Scraping and Filtration

Next, we’re gonna want to scrape our ideal target audience. In the CurrentTask window, you’ll see another task that we made at the beginning of this guide titled “Scrape”.


InstaInfantry 40 Scrape Task


Go ahead and click on that. Now, in the “Execute Actions” tab of the “Scrape” task, you should see the “Target Audience Scraper” function.


InstaInfantry 41 Target Audience Scraper


It comes decked out with a relatively comprehensive filter module that we’ve already seen in the Outreach section, enabling you to get as granular as you want with your target audience. However, be aware of the fact that scraping users still necessitates a significant amount of API calls and filtering even more so. Filters that require additional API calls are marked as resulting in slower filtration. If utilizing any of those filters, be prepared to lose accounts at a considerably faster pace. 


A source or donor is quite literally a source from which we obtain our target users. It can be any Instagram-specific URL, the scraping of which results in a list of users who have interacted with the contents of said URL. That can take form in practically anything. A profile, a post, a hashtag. Practically any place that you believe harbors your ideal audience. 


Some sources will derive far better growth-to-action ratios than others. I personally always recommend starting with as many sources as possible so that you can gauge the success rate of each individually. That enables you to hone in on the ones emanating the best results and save your Infantry’s limited actions for targets with a greater likelihood of interacting with your King. The most common sources are typically the followers of your competitors’ pages.


When personally running these strategies for clients myself, many times I’ve had clients provide sources that were just outright terrible. A 5 minute, in-depth look at some of those pages illuminated just how dead they were. And of course, I end up being the bad guy for delivering poor results. For instance, if you are a western female rapper and you are looking to target one of your underground competitors, go look through their most recent posts’ likes and comments. If you find that many of the profiles who’ve interacted with their content:


  1. Don’t follow them
  2. Comprised of a demographic that hardly fits the niche (think profiles of middle-aged, Arabic men)
  3. Follow upwards of 5,000 profiles


You don’t want them as a source. #3 means they were farmed through f/uf and these types of users will follow practically anyone for any reason. Their entire approach is based on reciprocity and they follow so many users that your content will never even reach them in their feed. 


This is why I strongly recommend meticulously analyzing each of your sources before targeting their users. Simply looking at their profile’s engagement rate through an analytics panel does not suffice. One must manually vet them prior to utilizing them as a source.


Also, when scraping for your ideal audience, the intuitive goal is to typically narrow down your audience to a molecular level. Many people try to find the most obscure, niche-ified sources and then proceed to also add ten different filters across a pool of like 50,000 potential accounts. As a marketer, I understand the inclination to do so. To get as granular with my audience as possible. We’ve all heard of the phrase “if you’re marketing to everyone, you’re relating to no one”. But there is obviously a limit as to how granular you can truly get when it comes to black hat SMM.


Using one too many sets of criteria ends up becoming counter-productive to your marketing efforts. The script doing the parsing cannot read the context of someone’s page like we can. Sometimes, spending more of your time finding the good sources ends up being far more effective than agonizing over each positive and negative keyword you want the profiles in question to have. Not to mention that it’d be far more cost-effective not burning through all that infantry with them API calls.


With that said, I’ve settled on three pages that I’ve deemed to have my ideal audience. They were solely themed around helping businesses grow their IG pages and most of their audience appeared to be coaches and gurus specializing in niches like finance, fitness, education, and a dozen more. Basically, people whose entire business model rests on an ever-revolving door of new clientele and whom I believe to exhibit the highest likelihood of purchasing my black hat software and products. 


I simply then proceed to enter the usernames of those pages into the empty field on the right and head down to the “Additional Settings” area to enable the function that says “stop task after having scraped [ ] users. I’ll set my limit to 5,000 which is how many DMs I’ll be sending out in this tutorial.


InstaInfantry 42 Adding Scrape Sources


And in the very last section marked as “save scraped target audience list”, I’ll be directing the collected users to the in-app TA list of my “InstaInfantry Promo” task.


InstaInfantry 43 Adding TA List to Task


I should note that I’m only really doing this for the sake of simplicity and would typically recommend that when scraping several sources at once, saving each source’s TA list into separate TXT files so you can track their subsequent conversion rates post-execution.


I’ll then head over to the “InstaInfantry Promo” task and transfer three accounts at random to execute the scraping-related task. I do that by doing a right-click of the mouse on the account I want to transfer, hovering over the “selected accounts” option, hovering over the “transfer to” and clicking on the “Scrape” task.


InstaInfantry 44 Transferring Accounts


I do that with three accounts and then return back to the “Scrape” task where I’ll now see the accounts we’ve transferred.


InstaInfantry 45 Accounts Transfered


We then click the last tab in the CurrentTask window marked as “Launch Task”, click yes to confirm, and voila – the scraping hath commenced.


InstaInfantry 46 Launching Scrape Task


Within roughly a few minutes, I should have a list of about 5,000 targets located in the Outreach section of my Mass DM task.


Once your TA list has been populated with the prerequisite amount of target usernames, return back to the “Execute Actions” tab within your Mass DM task, and enable the function that states “Execute actions in a specific sequence”.


Execute Actions in a Specific Sequence


Make sure that the “change account information” function precedes “Outreach” in the hierarchical order. Otherwise, your accounts could very well end up sending out their DMs before uploading an avatar image.


Launching and Monitoring the Task

Having covered all the preceding junctions along with the technical know-how surrounding proxies, cookies, and user-agents, it is finally time to launch our Mass DM task and watch the magic happen. 


Simply click on the last tab in the window marked as “Launch Task”, just as we did with our “Scrape” task and you should find your accounts in the “Accounts” tab reflecting some variance of the status: “Executing: InstaInfantry Promo”. The TA list of my InstaInfantry task has been populated with 5007 targets so make sure that your target list contains values before launching the task.


As a beginner, you’ll likely want to monitor for any issues within the workflow until you’ve become familiarized with InstaInfantry enough to let it run on its own. You should also enact a sizable time delay between consecutive launches of the same task so as not to lose accounts before your targets have had time to interact with them. I suggest waiting between a few hours to a day before launching the same accounts in the same task once again.


Some accounts will become invalid or get banned in the process of executing your operations. For enhanced organization, at the end of each launch, simply do a right-click of the mouse on any account located within the task and click on the “Select accounts” tab.


Select Accounts


Once your account selection filter is visible, simply enable each of the checkboxes associated with invalid accounts and hit the “Select Accounts” button.


Selection Filters


Now that all of the invalid accounts have been selected or highlighted, perform a right-click of the mouse on any of the accounts once more, hover over the “selected accounts” drop-down tab, and proceed to either delete or transfer the disabled accounts from your primary Mass DM task.


Account Deletion


A screenshot of what a 50 account operation looks like when re-launched for the fifth time over the course of 48 hours (taken August 22nd, 2021):


5th Launch of Task


Some accounts will perish quickly, others may live to send upwards of 100 messages in their lifetime. With the proper technique and continuous optmization, you’ll find more and more of your accounts reaching those highly coveted DM rates with fewer and fewer falling prey to action blocks and captchas before you had the chance to extract your money’s worth out of them.

Frequently Asked Questions

Q: Why are my accounts stuck on “Session Expired”?

If one of your accounts ever gets stuck in a seemingly never-ending loop between “Login into API” and “Session Expired”, simply change the API version and it should correct itself.


Q: Why are my accounts getting blocked before they send any DMs?

If your accounts are all dying or getting action blocked in quick succession despite being brand new, there are two potential things that could be going wrong. First, if the cells under the proxy column are blank, that means your accounts are currently authorizing via your computer’s native IP.


No proxy installed


If the field below the proxy column is empty, check to see if the function to limit concurrently running accounts is enabled within your task settings.


Concurrent Limit


If some accounts are receiving the proxy whilst others are not, your issue lies within the block size and accounts per proxy limit.



If let’s say you have three proxies installed with a total limit of one concurrently running account per proxy. In that case your block size value, within the Task Settings tab, should have the value 3 in it.


Block size


If the block size of simultaneously working accounts exceed the limit set on the proxies, the software has no choice but to launch however many accounts you’ve exceeded the available proxy limit by via your machine’s IP. That will almost invariably result in accounts dying way before their prime so please pay ultra close attention to this when initially launching the task.


For most newbies, we recommend dividing each purchase of accounts into smaller batches and importing them into the software one by one to ensure nothing is severely wrong with your set-up. If you’re running several tasks alongside one another, please switch to using your local proxy settings as opposed to the global ones to avoid exceeding the proxy limitations.


Local Proxy Settings


Q: Why are my accounts showing the error “Failed to authorize via proxy’s IP”?

This error commonly occurs when you’re exceeding the proxy limit. Accounts will simply fail to connect and will eventually give up resulting in the red invalid status. However, these accounts aren’t invalid and can still be authorized (considering you relaunch them on the same day of purchase).


Q: Why are some of my infantry accounts not sending as much as their compatriots?

Unfortunately, within every batch of accounts, there are bound to be a few duds. One in 10-15 accounts will simply not send as much as much or get action blocked quicker than their counterparts from the exact same batch. There’s not much we can do to ameliorate that so it simply has to be factored into the cost basis.


Q: How can I see how many DMs were sent?

The “0, 0, 0” you see in the statistics column refers to the quantity of actions executed in the following order: “per current/last launch”, “per today/last 24 hours”, “in total/lifetime of the account”.


Account Statistics


If you want to see how many actions were executed in total, you can find the cumulative sum of each task under the statistics column in the main InstaInfantry window.



Q: Do I need to warm up my accounts before executing actions with them?

The “Warm Up Accounts” function is found in the “Execute Actions” tab:


Warm-Up Feature

Warm-Up Function


It’s heavily debated within the IG black hat community whether short warm-ups are actually useful or not within the context of Mass DMing. Some say that it’s an integral part of any operation as it builds up a cookie and appears to be more natural to the algorithm. Others say that it’s a waste of limited API calls and only leads to faster action blocks. I personally have found it to be extremely useful with mid-tier and high-tier accounts but not so much for low-tier ones. Whether you use it or not is your call.


This virtually concludes the Instagram Mass DM via the InstaInfantry Bot tutorial. You can purchase InstaInfantry from the GHM Store along with all other botting necessessities.


If you felt like this tutorial wasn’t as in-depth as you wanted it to be or perhaps you have a very specific objective you’re trying to obtain, I do offer hour-long consultation calls you can order from my shop. If you’re in need of a walk through via AnyDesk or advice on how to best achieve a certain KPI, then feel free to place your order. I am willing to set up a basic Mass DM operation using our low-tier accounts but I do not divulge the precise nature of my personal, complex sending strategies in consultation calls.


With that, I hope you’ve gained all the necessary information to get started with InstaInfantry and wish you good luck on your Grey Hat Instagram journey!

Leave a Reply

Your email address will not be published. Required fields are marked *