Buena Vista County is a county in the U.S. state of Iowa. In the 2020 census, 20,823 people lived there.[1] The county seat is Storm Lake.