È un terzino destro, in grado di giocare anche da esterno di centrocampo o da mezzala; è abile sia nella fase difensiva, soprattutto in fase di copertura, sia in quella offensiva, grazie ai suoi inserimenti. Di baricentro basso, è dotato di ottime doti atletiche e agonismo, nonché di buona tecnica.[1]
Nato a Brescia e cresciuto a Lonato del Garda, Zanotti ha militato nel club locale della Virtus Feralpi Lonato, per poi unirsi alle giovanili del Brescia nel 2011,[1] e infine entrare a far parte del settore giovanile dell'Inter nel 2017.[1][2]
Nella stagione 2021-2022, ha firmato il suo primo contratto da professionista con il club nerazzurro,[3] ed è stato aggregato alla prima squadra dall'allenatore Simone Inzaghi, pur continuando a giocare con la Primavera;[2] il 12 dicembre 2021, a 18 anni, ha fatto il proprio debutto fra i professionisti e in Serie A, subentrando ad Ivan Perišić all'83º minuto della gara di campionato contro il Cagliari, vinta per 4-0.[4][5]
Prestito al San Gallo
Poco dopo aver prolungato il proprio contratto con l'Inter,[6][7] il 3 luglio 2023 Zanotti viene ceduto in prestito annuale al San Gallo, militante nella Swiss Super League.[7][8] Il 22 luglio successivo, ha esordito con il club nella gara di campionato contro il Basilea, vinta per 2-1.[9] Il 28 ottobre dello stesso anno, ha segnato la sua prima rete da professionista nel successo per 3-1 sul Grasshoppers in campionato.[10] Lungo la stagione, in cui ha disputato la maggior parte degli incontri da titolare,[2] ha contribuito alla qualificazione della squadra elvetica ai preliminari di UEFA Conference League.[11][12]
Lugano
Il 13 luglio 2024, Zanotti viene ceduto al Lugano, sempre nella massima serie svizzera, con cui firma un contratto quadriennale;[13][14] il trasferimento ha previsto un importo di circa due milioni di euro, più bonus, e una percentuale su una futura rivendita.[15] Esordisce con il club ticinese il 23 luglio seguente, partendo da titolare nell'incontro di andata del secondo turno dei preliminari di UEFA Champions League con il Fenerbahçe, perso 3-4.[16] L'8 agosto, invece, segna la sua prima rete per la squadra, decidendo la gara di andata del terzo turno delle qualificazioni di UEFA Europa League contro il Partizan (0-1).[17]