Spearfish is a city in Lawrence County, South Dakota, United States. The population was 10,494 at the 2010 census.