Portsoy ligger langs Moray Firth-kysten nordøst i Skottland, 80 km nordvest for Aberdeen og 105 km øst for Inverness. Innbyggertallet var 1752 mennesker ved folketellingen i 2011.