The river rises as a stream on Gunsight Mountain in Glacier National Park and flows into Gunsight Lake, then flows into St. Mary Lake, exits the park and flows on into Lower St. Mary Lake in the Blackfeet Indian Reservation. From the reservation, the St. Mary River flows into Alberta and into the St. Mary Reservoir. It flows into the Bow River which eventually reaches the Saskatchewan River.
It passes near the cities of Cardston, Alberta and Lethbridge, Alberta.
See also Saint Mary's River for other similarly named rivers.