W 2002 został radnym Dzielnicy III Prądnik Czerwony, w latach 2006–2011 pełnił funkcję jej przewodniczącego. Wstąpił do Platformy Obywatelskiej, w 2017 został przewodniczącym zarządu PO w Krakowie. W 2010 został po raz pierwszy wybrany do Rady Miasta Krakowa, otrzymując 3603 głosy. W 2014 utrzymał mandat radnego na VII kadencję (z wynikiem 4356 głosów. W 2018 uzyskał reelekcję z listy Obywatelskiego Krakowa (wspólnego komitetu Koalicji Obywatelskiej oraz środowiska prezydenta Jacka Majchrowskiego), uzyskując 11 561 głosów. W grudniu 2018 został wybrany na przewodniczącego rady; odwołano go z tego stanowiska w styczniu 2022.

W wyborach w 2023 bezskutecznie kandydował do Sejmu X kadencji z ramienia Koalicji Obywatelskiej w okręgu krakowskim, uzyskując pierwszy niemandatowy wynik na okręgowej liście KO. W 2024 ponownie został wybrany na radnego Krakowa (dostał 9573 głosy). 8 maja 2024 objął mandat posła X kadencji, zastępując w niższej izbie parlamentu nowo wybranego prezydenta Krakowa Aleksandra MiszalskiegoPostanowienie Marszałka Sejmu Rzeczypospolitej Polskiej z dnia 7 maja 2024 r. w sprawie obsadzenia wygasłego mandatu w okręgu wyborczym nr 13 z siedzibą Okręgowej Komisji Wyborczej w Krakowie ().. W 2025, w wyniku przekształcenia PO, został działaczem partii KO.