How SpaSpot works
Where the data comes from
Every listing mirrors a public Google Business Profile. We import the name, address, coordinates, phone, website where available, hours, price level, accessibility and payment attributes, the overall rating with review count, and up to five reviews that Google marks as most relevant.
How rankings are calculated
Sorting by rating alone rewards places with two perfect reviews. Sorting by review count alone rewards size, so a mediocre but busy place would win. We use a Bayesian average instead: score = (v ÷ (v + m)) × R + (m ÷ (v + m)) × C, where R is the Google rating, v its review count, C the average rating across SpaSpot and m = 15. With few reviews a rating is pulled toward the average; with many it stands on its own. A 4.7 with 15 reviews scores about 4.6, a 3.6 with 70 reviews about 3.8, a 5.0 with 2 reviews about 4.6.
Top 10 lists add two floors: a business needs at least 5 reviews and a rating of 4.0 or higher. Directory pages still show every business, ordered by the same score, with unrated ones last.
Why some cities have a top 10 and others do not
A ranked list only makes sense when there is something to choose from. We publish a top 10 for a city or state only when it has at least 12 rated businesses. Smaller places get a full directory page instead.
Open now
The open or closed label is calculated in your browser from the listed hours and the business's local time zone. Holiday hours are not included, so call before a long trip.
Refresh schedule
The directory is rebuilt from a fresh export. The footer of every page shows the date of the last refresh.