O suspeito foi detido perto da cidade de Kragujevac, no centro da Sérvia, cerca de 100 quilómetros a sul de Belgrado.
As informações sobre a detenção seguiram-se a uma busca que durou toda a madrugada, efetuada por centenas de polícias, que isolaram uma zona a sul de Belgrado, onde o ataque teve lugar.
O atacante disparou a partir de um carro em movimento, na passagem por três localidades sérvias, perto de Mladenovac, a cerca de 50 quilómetros a sul da capital.
O tiroteio ocorreu um dia depois de um rapaz de 13 anos ter usado as armas do pai para matar oito colegas e um vigilante numa escola em Belgrado.
Embora a Sérvia esteja repleta de armas que sobraram das guerras dos anos 90, o ataque na escola foi o primeiro na história moderna do país. Em 2013, um veterano de guerra matou 13 pessoas numa aldeia do centro da Sérvia.
O ministro do Interior sérvio, Bratislav Gasic, classificou este último ataque como "um ato terrorista", segundo a imprensa estatal.
Leia Também: Oito pessoas assassinadas a tiro em nova tragédia na Sérvia