Confessions of a Pokemon Go cheat

Two million XP. Thousands of Zubats. I learned a lot about Pokemon Go as I cheated my way to level 30.

Seamus Byrne Editor, Australia & Asia
Seamus Byrne is CNET's Editor for Australia and Asia. At other times he'll be found messing with apps, watching TV, building LEGO, and rolling dice. Preferably all at the same time.
Seamus Byrne
7 min read

I cheated at Pokemon Go. And I liked it.

It took a lot of work to become a level 21 Pokemon trainer. A lot of walking, a lot of swiping, a lot of stardust. I live in Australia, so I was there on day one when the game launched in our country first. The energy was amazing, the lures were plentiful. I was there at the first major Pokemon walk at the Sydney Opera House. The times were good.

But after a few weeks the game was starting to feel like a serious grind if I wanted to keep up with the high-powered Pokemon I saw sitting atop the local gyms. Was this the end of the road for me? What could help me find the fun again? Could cheating be the answer?


Sure, Professor Willow, if I can get a computer to do most of the legwork?

Screenshot / Seamus Byrne

I'd heard about Pokemon Go bots you could run on your computer: an app that pretends to be you, walking around town, doing all the things a Pokemon trainer would do. Hatch those eggs. Catch those 'mons. Spin those stops. Rinse. Repeat. Forever. Unlike real people, those bots don't have day jobs or family relationships to maintain. They can wander around town like the men and women of virtual leisure they are.

Botting sounds difficult, but I thought I'd start a new account -- to keep my 'real' account free of the taint of cheating -- and see how things work. My goal: to bot my way to level 30. That seemed far from my grasp on my real account. Far from the grasp of my real, human shell.

Gotta bot 'em all

There are more than a few bot options out there. Some paid. Some free. I found a free Java app that looked pretty basic. The hardest part was finding the GPS coordinates of where I wanted virtual me to start hunting for Pokemon. Then I opened up a terminal window, ran a command from the command line, and away we Go.

Next thing I know, I'm watching the terminal spit out a list of information. Where I am. When I'm spinning PokeStops. When I'm catching Pokemon. And boy could I catch Pokemon. The bot was moving at a jogging speed (you could customise how fast it covered ground too) and it caught everything in its path. My experience points were gliding rapidly through the early levels and my bot was level 10 in short order.

I'm not going to lie. It was fun to see how easy it was to cheat and how quickly my collection was growing. If I really wanted to catch 'em all, was it so bad to just send out a bot to do it for me?

At this early stage the bot was very basic. My bags would fill quickly and the bot couldn't do any more for me except walk around hatching eggs. I'd have to open the app manually and empty things out. Mulch those worthless Pokemon into candy. Get rid of a lot of Pokeballs and potions. (Who needs potions when you're botting? We're here to catch, not to fight.) Start the process over.

But when I'd check back on the open-source bot project there were constant updates. Over the coming weeks my bot learned how to throw curve balls and how to transfer Pokemon and drop items so I didn't have to login and do it manually.

Pokemon Go bot output
Enlarge Image
Pokemon Go bot output

This terminal output became the heartbeat of my Pokemon Go world. A text adventure of sorts.

Screenshot / Seamus Byrne

My favourite update was when I could see the names of the PokeStops it was visiting. Suddenly my data dump felt like a legitimate virtual me wandering the streets of Sydney. I'd notice when I was in a park nearby, or near local landmarks, or even right outside our office. That sense of my virtual location in the real world made my bot feel more tangible. A virtual real me playing the real virtual game.

It even learned how to show me all the magic hidden statistics for the Pokemon it caught.

Chasing the dragon(ite)

When it comes to determining how good your Pokemon are, the hidden IVs, individual values, are everything. Attack, Defense, Stamina. Each a score out of 15. Every Pokemon has these hidden stats that decide whether or not your Pokemon is a 'perfect' specimen of its kind. Or a terrible one. And now I could see these stats for every catch and know which Pokemon to keep and which to trash. To do this manually is tricky, and mostly an estimate, not an accurate insight into the real numbers behind the veil.

My bot lived behind the magic curtain. It could see all. It was my Great and Powerful Oz. With its power the game was mine to dominate with a host of ultimate powered Pokemon ready to destroy gyms at my whim. (Well, it felt that way at the time...)

Another update brought more automated perfection as the bot gained the power to instantly trash any Pokemon that didn't live up to elite IV standards. My bot would trash anything that was less than 800 combat points or less than 80 percent on its IV ratings. And it would only ever keep the three 'best' Pokemon of any kind.

I was loving it. The bot was a game within a game. It became something different to what Pokemon Go was meant to be, but it was intoxicating. A lottery system where winning was not a matter of 'if', but 'how much'. Leave it running and come back later to see what prizes had been collected. My collection rapidly became nothing but excellent specimens across the board and plenty of rare Pokemon I'd never encountered on my 'real' account, which was now looking rather neglected -- were my Pokemon IVs any good on that account? I didn't even know. The real Pokemon Go wouldn't tell me.

The great bot crash

Then the bot stopped working.

It always had an issue with crashing after a couple of hours. Authentication would drop and wouldn't reconnect without a little manual jumpstart. You just had to remember to check in and reset the bot. But this time it looked permanent. Niantic Labs, the company behind Pokemon Go, was cracking down on bots and had added layers of security to the system to prevent these unauthorised systems from accessing the game.

I was level 28. Two levels short of my goal, but still 500,000 XP short. Five thousand Pokemon catches away.

I checked the bot update page hourly for any news on a fix. I was feeling way more upset about seeing my cheating come to an early end than I should have.

The community building the bot was hard at work looking for angles to break an encryption system Niantic had put in their way.

Within four days the bot was working again. It seemed there was nothing Niantic could do to stop the cheaters in their tracks. I breathed a sigh of relief, updated the app again and got back on my journey to level 30.

Lessons from a cheat at level 30


I made it. But...

Screenshot / Seamus Byrne

Level 30 arrived soon after. The magic milestone of 2 million experience points. Getting to level 30 is the same as getting to level 21 nine times. NINE. TIMES. Did I really want to put in the same amount of work I'd put into getting to level 21 another nine times over? It just didn't seem worth the effort.

The biggest trick my emotionless bot pulled was never getting bored catching the same cheap Pokemon over and over again. Every catch added up, a few XP at a time, toward that climb up the ranks. Human me was tired of catching Zubats, the most common thing in our area of town. My bot was sitting on a mountain of over 5,000 Zubat candies.

During the climb I'd even reset my minimum IV demand to 90 percent. So many Pokemon were being caught, I could be choosier on what to bother keeping. The virtual velvet rope became ever more exclusive. My level 30 now sat on a throne surrounded by the most glorious of Pokemon. Dragonites, Arcanines, Lapras. Yes, I checked, that's the correct plural for Lapras.

Statistically, it was great. I was rich in the raw data of Pokemon Go success.

But when I shut down the bot and logged into the account on my iPad again a few days later, something felt off. I didn't recognise the collection in front of me. It wasn't really mine. I knew their stats were great. I'd looked inside these Pokemon like Neo looks inside the Matrix. But I didn't know where they'd been caught. I'd never felt the thrill of spotting the rares on a map and panicking to catch them before they ran away. There was no story of the moment I caught that Dragonite and who else was around catching one too. Was it even a catch? Had I evolved it? I didn't really know.

Pokemon Go collection

The top of my 'real' collection. It isn't the best collection in town, but it's mine.

Screenshot / Seamus Byrne

The rush of the automated climb to 30 meant the moments in between didn't exist.

The following weekend I went back out for a walk with my kids and my level 21 'real' account. We wandered local streets, caught Pokemon, watched Pokemon flee, manually spun the PokeStops. We hoped for something special to appear. We laughed. We played.

After disappearing down the stat hole and chasing the thrill of playing numbers, coming back to the real experience of Pokemon Go was fun again. It was fun like at the start, when we didn't care what level we were, we just had some fun catching Pokemon.

When that next level would arrive didn't matter anymore. We were just having fun connecting with our neighbourhood landmarks while riding bikes and scooters on a sunny day. The journey, not the destination.

Three weeks later and I logged back into my cheat account to take another look. Or rather, I tried. The account had been terminated. Niantic Labs had caught up with the cheats once more and this time they brought the big guns. That dazzling collection of overpowered Pokemon was no more.

And I didn't really care. They weren't mine anyway.

My best Pokemon is the Lapras I hatched from a 10km egg while walking down a country lane with my kids in July. I don't know its IV, but I remember the sound we made when it popped into existence.