He first ran for the legislature in 1998, making an unsuccessful bid for the New York State Senate in the 30th district, losing the Democratic primary to Eric Schneiderman.
As of 2017, O'Donnell serves as Chair of the Assembly Committee on Tourism, Parks, Arts and Sports Development and Chair of the Subcommittee on Criminal Procedure.