W latach 1998–2002 był radnym gminy Warszawa-Wilanów wybranym z listy Akcji Wyborczej Solidarność. W wyborach w 2002 bez powodzenia ubiegał się o reelekcję z komitetu Wilanów Zielony. W wyborach samorządowych w 2010 uzyskał mandat radnego m.st. Warszawy, startując w okręgu nr 7 z 9. (ostatniej) pozycji na liście Prawa i Sprawiedliwości i zdobywając 6442 głosy. W wyborach parlamentarnych w 2011 kandydował do sejmu w okręgu warszawskim z 11. miejsca na liście Prawa i Sprawiedliwości (formalnie nie należąc do tej partii); otrzymał 3231 głosów i nie uzyskał mandatu. W 2014 z powodzeniem ubiegał się o reelekcję w wyborach do stołecznej rady miasta. W 2015 ponownie bezskutecznie kandydował z ramienia PiS do Sejmu, otrzymując 4417 głosów. W kwietniu 2016 objął jednak mandat poselski w miejsce zmarłego Artura GórskiegoPostanowienie Marszałka Sejmu Rzeczypospolitej Polskiej z dnia 8 kwietnia 2016 r. w sprawie obsadzenia wygasłego mandatu w okręgu wyborczym nr 19 z siedzibą Okręgowej Komisji Wyborczej w Warszawie ().. W wyborach w 2019 nie uzyskał poselskiej reelekcji. W wyborach w 2023 ponownie był kandydatem PiS do Sejmu. W 2024 wystartował natomiast do Sejmiku Województwa Mazowieckiego, uzyskując mandat radnego VII kadencji.