Route 97 begins at
Route 1A in Beverly, north of the downtown area. Almost immediately, it crosses under
Route 128 without intersection; the nearest exit is Exit 45 (formerly 20) to Route 1A. Route 97 passes the
Beverly Municipal Airport before crossing into
Wenham. Route 97 passes through the western end of town, passing the Ipswich River Wildlife Sanctuary before meeting the northern end of
Route 35 in
Topsfield, just over the town lines of Wenham and
Danvers. Once in Topsfield, Route 97 crosses the
Ipswich River just east of the Topsfield Fairgrounds. It crosses
U.S. Route 1 (the Newburyport Turnpike) before heading into the center of town. From there, it continues northward, entering the town of
Boxford. Route 97 passes through the village of East Boxford, where it intersects
I-95 at Exit 76 (formerly 53). It then heads northward into
Georgetown. In Georgetown, Route 97 has a brief
concurrency of a tenth of a mile with
Route 133 before turning northwestward along West Main Street, passing between Rock Pond and Pentucket Pond into
Groveland. In Groveland, Route 97 meets
Route 113 at the banks of the
Merrimack River, where both cross along the Bates Bridge into the city of Haverhill. The two routes pass Merrimack Valley Hospital, Riverside Park and Trinity Stadium (known locally for being the site of an exhibition game featuring
Babe Ruth) before continuing along the banks of the Merrimack. At Ginty Boulevard, Route 97 leaves Route 113, continuing to Main Street, where Route 97 turns northward, running as a
wrong-way concurrency with
Route 125 for one block before turning westward onto Winter Street. Route 97 intersects
Route 110 before continuing westward out of the downtown area. The route intersects
I-495 at Exit 108 (formerly 50) as it continues into the Ayers Village section of the city. It then enters the far northeast corner of the city of
Methuen, where after only three-quarters of a mile the route enters Salem, New Hampshire and continues as New Hampshire Route 97. The stretch of Route 97 in Methuen is not directly connected to any other road within the city. In 2010, a project began to replace the Bates Bridge, 60 feet downstream, with a modern bridge. The project is expected to take two to three years and cost approximately $45 million. ==Major intersections==