La commune s'étend sur 12,6 km² et compte 1 044 habitants en 2016. Avec une densité de 81 habitants par km², Villandraut a connu une nette hausse de 24,9% de sa population par rapport à 1999.
Entouré par les communes d'Uzeste, Balizac Bourideys, Préchac et Saint-Léger-de-Balson, Villandraut est situé à 2 km au sud-ouest de Noaillan, le plus grand village aux alentours.
Situé à une trentaine de mètres d'altitude, Villandraut est traversé par le Ciron, le principal cours d'eau du village et est proche du Parc Naturel Régional des Landes de Gascogne.