Spirit Lake is a city in Dickinson County, Iowa, United States. The population was 4,261 at the 2000 census. It is the county seat of Dickinson County. The town is located along the western shore of East Okoboji Lake, in the Iowa Great Lakes region. Spirit Lake is served by KUOO-FM and KUQQ-FM.