Bocas del Toro is easily accessed as follows:
There are daily flights available from Panama City (PAC airport, Albrook), 3 times a day. The domestic airline who offers these flights is Air Panama – https://airpanama.com.pa/. To get to Albrook it can take around 30 minutes to 1 hour from the international airport depending on traffic, so if you want to make this journey on the same day you land in Panama, make sure to land by 2pm at the latest or plan to spend the night. To play it safe, it’s recommended to leave a 3 hour window between your landing time in Tocumen and your departure time with Air Panama.
There’s a relatively new airline called Aerobell which offers flights from San José, Costa Rica to Bocas del Toro, though the flights are less frequent than from Panama City. The price is about the same (+/- $110 one way).
Buses from Panama City leave in the evening between 7pm and 8pm from the Albrook bus terminal, and the journey takes about 10 hours to Almirante. From there, you will have to take a water taxi to the main island, which takes another 30 minutes and costs $6 per person. You’ll be arriving to Almirante at around 7.00 am. Tickets have to be purchased on the same day you travel at the Albrook Bus terminal ($30). Busses are ice cold at night, so make sure to wear a sweater and trousers.
If you prefer to travel during the day, you can catch a ride to David first (7 to 8 hours drive) leaving from the same bus terminal, and from David take a smaller bus to Almirante (4-4.5 hours). Busses to David leave every hour. Make sure to leave no later than 2pm from David however, as the last water taxi from Almirante to the island leaves at 6pm. It’s recommended to catch a bus from Panama City at no later than 7.00am if you want to go this route.
In San José, Costa Rica you can take a bus from San José to Sixaola from the Coca Cola bus station, get your passport stamped in Sixaola at the border, cross the bridge on foot to the Panamanian side to do the rest of the immigration procedures, and then continue by bus to Almirante.
You can also go by shuttle from San José, Costa Rica with Caribe Shuttle.