NY 291 begins at an intersection with NY 69 just north of the village of Whitesboro in the town of Whitestown. It travels northeast from this point, crossing over and briefly paralleling the Mohawk River as it enters the town of Marcy. Not long afterward, the route crosses over the Erie Canal and intersects River Road, the pre-Utica–Rome Expressway routing of NY 49, on the northern bank of the canal. Just north of River Road, NY 291 meets the aforementioned expressway at a modified diamond interchange. The route continues on to Careys Corners, a small community centered around the junction of NY 291 and Old River Road from NY 69. After another mile through a lightly populated area of Marcy, NY 291 heads north toward the hamlet of Marcy at a fork with Hayes Road. In Marcy, NY 291 intersects Fox Road and provides access to the Marcy Correctional Facility and Mid-State Correctional Facility, both located just west of NY 291. Outside of Marcy, the route heads through less developed areas of the town as it heads generally northward along Ninemile Creek toward the hamlet of Stittville, a small hamlet on the eastern bank of the creek. NY 291 heads north through Stittville and crosses over Ninemile Creek, passing through another rural area before ending at a junction with NY 365 about one mile southwest of the village of Holland Patent.
History
In 1908, the New York State Legislature created Route 25, an unsigned legislative route that began at Whitesboro and passed through Marcy, Holland Patent and Barneveld before traversing Adirondack Park on its way to Albany. The portion of Route 25 between the western village line of Whitesboro and Careys Corners was also part of Route 28, which went from Maple View to Utica via Rome, Marcy, and Whitesboro. Route 25 was truncated to end at Careys Corners on March 1, 1921, eliminating the overlap with Route 28. When the first set of posted routes in New York were assigned in 1924, all of legislative Route 28 east of Colosse became NY 11. Also assigned at this time was NY 12, which connected Utica to Barneveld; however, it used a more direct route to the east rather than the more circuitous route via legislative Route 25. NY 11 was renumbered to NY 76 in 1927 to eliminate the numerical duplication with the newly designated U.S. Route 11. In the 1930 renumbering of state highways in New York, NY 76 was reassigned to another highway in western New York. Its former routing between Careys Corners and Utica was incorporated into the new NY 12C, an alternate route of NY 12 between Utica and Barneveld that utilized the alignment of legislative Route 25 between Careys Corners and Barneveld. NY 12C began in downtown Utica and overlapped with NY 5S to Whitesboro, where it split from NY 5S and continued north to meet NY 46A near Stittville. The two routes converged here, following what is now NY 365 east to Holland Patent. NY 46A left NY 12C in the village and went north on modern NY 274 while NY 12C continued east to meet NY 12 in Barneveld. NY 12C itself never changed after 1930; however, the routes it overlapped with did. In the early 1940s, NY 5S was truncated eastward to downtown Utica and replaced with NY 69 from Rome to Utica and NY 5A between Yorkville and Utica. NY 46A, meanwhile, was renumbered to NY 274 and truncated to Holland Patent in the early 1950s. NY 365 was assigned and overlapped NY 12C between Stittville and Barneveld until it was truncated to end at NY 12C north of Stittville in the late 1950s. On January 1, 1970, the NY 12C designation was eliminated. From Utica to Whitesboro, NY 12C was supplanted by the routes it once overlapped; however, NY 69 was truncated to NY 5A in Yorkville. East of Stittville, NY 12C became part of a re-extended NY 365. The remainder of NY 12C's former routing was redesignated as NY 291. Reference markers for NY 291 north of NY 49 still read "12C".