You can take both direct buses and trains from Skopje and Prilep, where there are also numerous daily buses from nearby Ohrid.
Despite being North Macedonia’s second-largest city, however, getting to Bitola was trickier than I expected. Much of the difficulty comes from the fact that there’s no reliable source for bus schedules online.
I arrived at the bus station in Ohrid a little after 9:00. As Bitola is only about an hour away, I expected there to be buses leaving every hour. But I was told there was a reduced schedule due to the coronavirus pandemic, and the next bus wouldn’t leave until 12:30! (This was at a time when the number of daily new cases was only around a dozen.)
Thinking I had no choice, I bought a ticket for a couple hundred MKD and waited. After an hour or two, I decided to take a walk outside to look for something to eat. I passed a shared taxi, and a woman asked me if I was going to Bitola. She explained that the taxi cost the same price as the bus.
I told her I didn’t realize that, but I’d already bought my bus ticket. The taxi needed one more passenger for it to depart, so she insisted that she’d cover my fare if I joined them.
And so I ended up taking the shared taxi to Bitola, as the kind and helpful woman explained how common and cheap they are throughout North Macedonia. If you’re coming from Ohrid, this is the method I recommend.
Later leaving Bitola for Prilep, however, there were no shared taxis headed there (they exist, but you must head to another part of town). And I faced a similar dilemma with the buses only leaving every few hours.
Fortunately, I was able to take a train which departed at 12:50 in the afternoon, and made it to Prilep without any issue. At around 100 MKD, the train was even cheaper than the bus.