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. As of the census of 2000, there were 4,261 people, 1,792 households, and 1,130 families residing in the city. The population density was 1,280.2 people per square mile (494.0/km²). There were 2,024 housing units at an average density of 608.1 per square mile (234.7/km²). The racial makeup of the city was 98.99% White, 0.14% African American, 0.12% Native American, 0.05% Asian, 0.09% from other races, and 0.61% from two or more races. Hispanic or Latino of any race were 0.63% of the population.