San Juan is composed of a Spanish-era town center (poblacion) with streets laid out in a grid, and a larger area mostly agricultural in background. The town is at the center of the main route between Batangas and Quezon provinces. A major tourist draw is the white-sand beaches of Laiya, to the south of town; today, tourism is a major local source of revenue, after aquaculture and agriculture.
San Juan is served by a few bus lines:
- ALPS the Bus has trips from their Manila terminals to the downtown.
- Supreme and has service from Batangas City to Lucena through these town; they runs Batangas City-Lucena using a mixed air-conditioned and ordinary fleet. Their buses are the only comfortable option from Batangas City
- P&O runs Batangas City-Tagkawayan using an air-conditioned fleet. No advanced booking is needed for short to medium distances, e.g. from Batangas City or Lucena, but a pre-booked ticket is necessary if coming from their Tagkawayan terminal.
A trip from Batangas City by bus costs at around ₱84 to downtown (₱74 from Lucena terminal).
Jeepneys are a cheaper option, but are uncomfortable and infrequent outside daylight hours. Nonetheless, they are the only public transport option from Lipa. From Batangas City, a jeepney trip will entail a transfer at downtown Rosario, 22 km (14 mi) west, which can be only a waste of time and money, and jeepneys from there are infrequent. Better catch a bus from the Grand Terminal.
By car, The Rosario-San Juan-Candelaria Road and the Quezon Eco-tourism Road are the main highways to town. The Rosario-San Juan leg of the former and the whole segment of the latter forms Route 422; they provide the best road connection from Lucena, but the coastal portion can look a bit isolated, as it passes through coastal villages through the municipalities of Sariaya and Candelaria.