Zawodowo związany z Instytutem Historii UJ. W latach 1999–2002 był wicedyrektorem, następnie do 2008 dyrektorem tej jednostki. W 2013 powołany na stanowisko profesora zwyczajnego Uniwersytetu Jagiellońskiego. Do września 2017 był także profesorem zwyczajnym w Instytucie Stosunków Międzynarodowych Państwowej Wyższej Szkoły Wschodnioeuropejskiej w Przemyślu, był członkiem Komitet Nauk Historycznych Polskiej Akademii Nauk.

Specjalizuje się w historii społeczno-gospodarczej XIX i XX wieku. Był członkiem powołanego przez rektora zespołu historyków prowadzącego badania nad inwigilacją środowiska UJ przez funkcjonariuszy Służby Bezpieczeństwa. W kadencji 2006–2010 z ramienia Prawa i Sprawiedliwości zasiadał w radzie miejskiej Krakowa. W 2008 przeprowadził z ramienia ówczesnego rektora UJ Karola Musioła autolustrację zamówioną przez byłego rektora Franciszka Ziejkę.

W przedterminowych wyborach prezydenckich w 2010 poparł kandydaturę Jarosława Kaczyńskiego. Wchodził w skład jury konkursu Książka Historyczna Roku. W 2016 z rekomendacji posłów PiS został powołany przez Sejm w skład Kolegium Instytutu Pamięci Narodowej;