Buk se trouve à 6 km au nord de Přerov, à 19 km au sud-est d'Olomouc, à 68 km au sud-ouest d'Ostrava et à 227 km à l'est-sud-est de Prague[2].
La commune est limitée par Lazníky au nord, par Radvanice à l'est, par Prosenice au sud, par Přerov au sud-est et par Sobíšky à l'ouest.