This is the story of how I wrote a Twitter bot to automatically enter competitions and ended up winning on average 4 competitions per day, every day, for about 9 months straight.
If you’ve ever used Twitter, you’ve probably seen a tweet that looks something like this:
— Miami and Beaches (@MiamiandBeaches) March 24, 2015
Maybe you’ve actually retweeted it, maybe not, but everyone wants to know: does anyone ever win those competitions? To discover the answer to that question, I wrote a Python script that logs into Twitter, searches for tweets that say something along the lines of “retweet to win!” and then retweets them.
I’m not sure if anyone else has done this before, but I didn’t see any evidence of other bots that were behaving like mine. I did however see evidence of real people who were manually doing the job of my bot by retweeting hundreds of competitions over several hours.
Some competitions require you to follow the original poster, so after discovering a candidate tweet I made sure it wasn’t an entry to a competition, but the original competition itself, and then checked to see if they wanted a follow. If so, I followed them and retweeted.
The most difficult part of this project was preventing the bot from getting banned by Twitter. They have rate limits which prevent you from tweeting too often, retweeting too aggressively, and creating “following churn” by rapidly following and unfollowing people. Twitter doesn’t publish these numbers, so I had to figure them out by trial and error. Twitter also limits the total number of people you can follow given a certain number of followers. If you have below a few hundred followers, you cannot follow more than 2000 people.
Since a lot of competitions required following the original poster, I used a FIFO to make sure I was only following the 2000 most recent competition entries. That gave me long enough to make sure the person I unfollowed had already ended their competition and it kept the follow/unfollow churn rate below the rate limit. I got lucky in that the rate of new competitions launched on Twitter is less than the rate that I could retweet, meaning I was able to enter every competition I could find.
How many was that? Well, over the 9 months I ran my script, I entered approximately 165,000 competitions. Of those, I won around 1000.
So that means my win rate was just over half a per cent, which is pretty miserable, especially when you consider that a good portion of those winnings were things like logos and graphics, which is Twitter slang for a customised image for use in a gaming or YouTube profile. They tend to look like this.
Another very large percentage of the things I won were tickets to events. I did manage to go to an event that I won tickets to, but the majority of them were for concerts and events in other countries that I obviously couldn’t go to. I also won a lot of currency to online games like FIFA. And when the game Destiny was giving out beta codes, I won about 30 of them through as many competitions. I won a lot of cool stuff too though, and getting mysterious things in my mailbox each day was pretty fun. It ended up being a free way to get this effect:
Here’s a picture of The Haul:
My favourite thing that I won was a cowboy hat autographed by the stars of a Mexican soap opera that I had never heard of. I love it because it really embodies the totally random outcome of these competitions. The most valuable thing I won was a trip to New York Fashion Week, which included a limo ride to the show if you lived in a state near New York for you and a friend, and $US500 spending money each, and tickets to some of the shows. That had a retail value of $US4000, but I didn’t claim it because 1) I don’t live near New York and 2) I didn’t want to pay the taxes on a $US4000 prize.
— 【ツ】 (@muffled_stoat) July 18, 2014
— Eric Alper (@ThatEricAlper) October 23, 2014
@racer236 Hi, congrats, you have won x4 VIP wristbands for our NYE Mardi Gras party! Follow us & DM your details so we can get them to you!!
— Mockingbird Taproom (@MockingbirdCH1) December 15, 2014
— Heather Conklin (@wrapmcheather) November 11, 2014
— DUDE (@DudeProducts) October 23, 2014
Tonight's competition winner is @racer236 congratulations on your prize you have won a bottle of Louis Dornier champagne on your next visit
— M&CBrookmans Park (@MandCBrookmans) October 23, 2014
I ended up not claiming the majority of the things I won because I wasn’t able to use them or attend them. In those cases, I just messaged them back and told them to give the prize to someone else. And before you report me to the tax office, yes, I reported and paid taxes on all of the winnings I actually accepted/received.
I had a lot of pretty interesting interactions with the unwashed masses of Twitter, like this:
Most competitions informed the winners by direct message, and a lot of people have an automatic direct message sent to you when you follow them (like the one above), so I had to spend a decent amount of time going though my DMs to find legit winner notifications.
Some people thought it would be hilarious if they mimicked competitions by tweeting things like “RT this and you could win absolutely nothing!!”. Naturally, my bot found those tweets and dutifully retweeted them. So there were several instances of me winning “absolutely nothing.”
@racer236 you win nothing, ill dm you the prize
— evanf1997 (@evanf1997) August 4, 2014
Another variation on that was this guy who offered a unique prize:
RT for a chance to win these tupaware LIDS that have been warped in the dishwasher. Must be following. pic.twitter.com/EypItZvCyl
— Wes (@WWiltbank) June 5, 2014
After a while of winning competitions, I realised I could use my bot for good too. Lots of people raise money for charities by asking people to retweet. Something like this:
— Gopichand Dasari (@DGC_Boss) December 25, 2014
Sometimes they’re fake, but what do I care? I added search terms for tweets like this and had enough bandwidth to retweet every tweet of this kind without going over the rate limit.
If you want to see the full list of stuff I won, it’s here. There are a few gems in there and I’ll leave it to you to discover them.