Ash, Misty, and Tracey are traveling along on Lapras when a submarine surfaces in front of them. A man named Quincy T. Quackenpoker comes out and tells the trio to be on the lookout for something special. Moments later, everyone finds themselves amid a migrating group of Magikarp. Tracey notices odd colored bands at the base of several of the Magikarp's tails. Mentioning that he knows where the Magikarp are headed, Quackenpoker sets off after them in his submarine. Tracey pulls out his map and believes the Magikarp are headed for the deserted Rind Island. The trio decides to follow Quackenpoker there.
When the trio arrives on the island, they see the Magikarp swimming upstream. Shortly after, they meet Quackenpoker, who quickly drafts the three friends and Pikachu into carrying his equipment for him. He introduces himself as a Pokémon watcher who has dedicated his life to the study of Magikarp, and Tracey recognizes Quackenpoker. The group continues to follow the stream and Magikarp, eventually stopping. Quackenpoker sets up a tripod with a camera programmed to record information on the number and physical condition of the Magikarp. Following Tracey's question, Quackenpoken explains that his system of banding the Magikarp helps reveal when each Magikarp left the island. Over the past three years, the Magikarp born in the waters around Rind Island return once a year to evolve and breed. Quackenpoker then recognizes Tracey as a fellow Pokémon watcher and goes on to admire Tracey's sketches. Meanwhile, the group is being observed by Team Rocket. At Jessie's instigation, the trio sets their sights on catching all of the Magikarp to train them into evolving into Gyarados.
The trio and Quackenpoker then see the Magikarp swimming up a waterfall. Tracey postulates that, while the Magikarp swim around the world, they are building up their strength to scale the falls. Quackenpoker adds that half of the school is still too weak to make the climb. At the top of the falls, Team Rocket is waiting for the Magikarp with nets. James catches one in his net, but it quickly escapes onto the bank. In an attempt to stop its escape, they jump on it, but are dragged into the water and over the falls instead.
Quackenpoker hurries the group up the hill so they will see the Magikarp evolve in time. When they reach the top, Quackenpoker joins the trio for a meal while the sunsets. He comments that Ash and Pikachu have the most symbiotic relationship he has ever seen. Misty also learns that Togepi enjoys being patted on its front head spike. When Tracey is surprised by Quackenpoker's knowledge of other Pokémon, Quackenpoker explains that it is important to know about other things. He then admits that his obsession with Magikarp started after one appeared in his pajamas when he was a young boy. As night falls, Tracey and Quackenpoker discuss Magikarp habits. Tracey suggests that the Magikarp navigate by noting the position of the Sun as they leap, although Quackenpoker disproves this idea by showing a Magikarp that can't jump at all yet still finds its way to the island. Misty and Ash wake up just as the Magikarp begin leaping out of the water.
However, all of a sudden, Team Rocket's Magikarp submarine appears, using its long arms to pluck the Magikarp out of the water. The trio initially relishes in their catches, but their sub is quickly weighed down by the amount of Magikarp caught, forcing James to release several. Team Rocket recites their motto and then begins throwing the Magikarp out of the submarine, forcing Ash and his friends to catch them. Using their distraction to their advantage, Team Rocket captures Pikachu in a glass case.
Quackenpoker stops Ash before he can order Pikachu to use Thunderbolt, saying that the electric shock would hurt the Magikarp. Instead, with his arms full of Magikarp, Ash kicks one of his Poké Balls, sending out Bulbasaur. He commands Bulbasaur to use Vine Whip to retrieve Pikachu, but Team Rocket is able to foil the attack and Ash recalls Bulbasaur. In the confusion, James gets a Magikarp attached to his head. Jessie and Meowth try to pull it off without success until Quackenpoker intervenes, stroking its fin until it relaxes and releases James. While they are distracted, Ash was able to grab Pikachu.
As Team Rocket prepares to retaliate, the Magikarp in Quackenpoker's arms begins to glow. Quackenpoker allows it to swim off, and in a blinding white light, the waters begin to churn. A whirlpool quickly turns into a massive water spout, which sends Team Rocket blasting off. Quackenpoker and the group watch as the newly evolved Gyarados take to the water. Tracey and Quackenpoker briefly follow the traveling school and count the number of evolved and unevolved Magikarp before they all swim out to sea. Quackenpoker later thanks Tracey for assisting in his research and wishes him luck on his own goals, while Tracey is grateful for the invaluable experience. Meanwhile, Team Rocket is stranded on a rock in the middle of the ocean, surrounded by angry Gyarados.