The nearest airport is Rijeka Airport on the island of Krk, about 30 km away; a bus connects the airport to Rijeka, from where frequent buses run to Opatija. Pula Airport (Istria) is around 100 km away and handles more international flights in summer, but requires a longer transfer.
By bus, Opatija is well connected. Rijeka is the hub, with buses running every 20–30 minutes throughout the day. From Rijeka bus station buses also serve Split, Zagreb, Zadar, and international destinations including Trieste and Ljubljana.
Rijeka itself is served by trains from Zagreb (about 3.5 hours) — from Rijeka station, take the city bus no. 32 to Opatija (30 minutes).
By car, Opatija is a straightforward drive from Zagreb (roughly 2.5 hours on the A6/A7 motorway via Rijeka) or from Trieste in Italy (about 90 km). Parking in the town centre is limited and can be expensive in summer; most hotels have their own garages.