How to Catch Heracross in "Soul Silver"by Joshua Phillips ; Updated September 22, 2017
In "Pokemon: SoulSilver," not all Pokemon are found by catching them in the wild. Some Pokemon may be prizes from contests, given to you by other characters or hiding in trees. Heracross, a bug or fighting type, is not found in the wild but is instead found in trees throughout the game world. To catch a Heracross, you first need the move Headbutt, which can be taught to your Pokemon via a Move Tutor.
Travel to Ilex Forest, to the west of Azalea Town.
Speak to the man in the pink shirt in Ilex Forest. He will teach any of your Pokemon the move "Headbutt" for free. A large variety of Pokemon can use Headbutt - any Pokemon that can use it will say "Able" next to them.
Navigate to one of the following locations, as all of them have Heracross in the trees: Route 7, Route 16, Route 28, Route 33, Route 42, Route 44, Route 45, Route 46, Route 47, Azalea Town, Vermilion City, Celadon City, or Mt. Silver.
Press "A" next to any tree to perform a Headbutt on the tree. If no Pokemon, or one that is not Heracross, come out of the tree, move on to the next one until a Heracross comes out.
Catch Heracross by using moves that change his status, such as moves that will paralyze him or put him to sleep. The Heracross's level will be random depending on where he is caught - a Heracross caught on Route 7 will be much weaker than one caught at Mt. Silver.
These steps also apply to Pokemon HeartGold.