Municipio costero situado en la Ría de Betanzos, en las denominadas «Mariñas Coruñesas». Limita al norte con el municipio de Puentedeume, al este con el de Villarmayor y al sur con los de Paderne e Irixoa. La localidad está situada a 27 kilómetros al este de A Coruña, a una altitud de 10 metros sobre el nivel del mar.
Es lugar por el que discurren las peregrinaciones del «Camino Inglés», desde su salida en el Puerto de Ferrol, a Compostela, trazándose la ruta a lo largo de una riquísima variedad cultural y paisajística.
Atraviesan el municipio tres ríos: el río Lambre, que discurre a lo largo de su corriente por una ruta llena de encanto y que tiene su desembocadura en Ponte do Porco, en el límite con el municipio de Paderne, formando la playa de la Alameda. El río Baxoi, que se encuentra en la calle del «Camino Inglés» y a lo largo de su curso dispone de una fuente gótica y de un merendero, donde hacer una parada para descansar. Finalmente su canal discurre hasta su desembocadura en la Playa Grande, formando la marisma a sus puertas. El río Xarío pasa por las parroquias de Villanueva y Perbes, desembocando en un costado de la Playa Grande de Miño.