Współpracował z Klubem Jagiellońskim. W 2004 wstąpił do Platformy Obywatelskiej. W 2006 z jej ramienia został wybrany na radnego sejmiku małopolskiego, uzyskując 9939 głosów (4,19% głosów w skali okręgu wyborczego nr 3). Był przewodniczącym Komisji Rozwoju Regionu, Promocji i Współpracy z Zagranicą, a także członkiem Komisji Budżetu, Mienia i Finansów w samorządzie województwa III kadencji.

W wyborach parlamentarnych w 2007 uzyskał mandat poselski z listy PO. Kandydując w okręgu krakowskim, otrzymał 11 413 głosów. Był członkiem Komisji Administracji i Spraw Wewnętrznych, a także Komisji Odpowiedzialności Konstytucyjnej. W latach 2010–2012 był przewodniczącym krakowskich struktur Platformy Obywatelskiej. W wyborach w 2011 z powodzeniem ubiegał się o poselską reelekcję, dostał wówczas 18 583 głosy. W marcu 2012 przeszedł do klubu poselskiego Ruchu Palikota, a następnie wstąpił do tej partii wraz z grupą swoich zwolenników. Odejście z PO uzasadniał tym, że w jego ocenie partia odeszła od idei, które leżały u jej podstaw – wartości obywatelskich i wolnorynkowych. W 2013 został wyróżniony w rankingu najlepszych posłów tygodnika „Polityka”.