W wyborach samorządowych w 1998 i 2002 bezskutecznie kandydował do rady powiatu kluczborskiego (odpowiednio z listy koalicji Przymierze Społeczne oraz z ramienia Polskiego Stronnictwa Ludowego). W wyborach samorządowych w 2010 bezskutecznie kandydował na radnego województwa opolskiego z listy Platformy Obywatelskiej; zdobył wówczas 2085 głosów. W tym samym roku objął jednak mandat w sejmiku w miejsce Andrzeja Pyziaka. W wyborach w 2014 bezskutecznie kandydował na stanowisko burmistrza Gorzowa Śląskiego; otrzymał wówczas 1267 głosów (o 37 mniej niż jego jedyny kontrkandydat Artur Tomala). W wyborach parlamentarnych w 2015 nie uzyskał mandatu senatora, kandydując z ramienia Nowoczesnej; uzyskał wówczas 12 616 głosów. W wyborach samorządowych w 2018 dostał się do rady powiatu oleskiego, zdobywając 414 głosów.

W wyborach parlamentarnych w 2019 został wybrany do Senatu X kadencji z ramienia Koalicji Obywatelskiej, otrzymując 53 012 głosów w okręgu nr 53. W 2021 przystąpił do Platformy Obywatelskiej. W 2023 z powodzeniem ubiegał się o senacką reelekcję z wynikiem 78 843 głosy.