The town is served by North Berwick railway station.
East Coast Buses, a subsidiary company run by Lothian Buses run a 30-minute service between Edinburgh (Semple Street) to North Berwick Tesco via Portobello, Musselburgh, Prestonpans, Longniddry, Aberlady, Gullane and Dirleton.