The short answer
One page for every town where you want the phone to ring, and none for towns you would not drive to. For a Greenville-area trade that usually means 10 to 30 pages. For a multi-location business across the I-85 corridor it can be more than 100.
The rule we use
A city earns a page when two things are true: people there search for your service by name, and you can write something about that place a competitor cannot. Simpsonville and Five Forks are ten minutes apart and search separately. Taylors is unincorporated and its businesses often set up their Google profile wrong. Those facts belong on the page, and they are different on every page.
Why name-swapped pages fail
Google's scaled content policy names the pattern directly: the same page repeated with a city swapped in. Those pages either fail to index or drag the whole site down. Our engine scores every generated page for uniqueness before it publishes, and a page that reads like its sibling does not go live.
What unique copy looks like
Neighborhoods, corridors, and landmarks named. The local search numbers stated. The specific reason a customer in that town calls, whether that is a new subdivision, a lake season, or an interstate exit where the trucks park. A city FAQ that answers the questions people in that town ask.
How we build them
Our Mission Control engine generates city and service pages from a structured dataset with internal links resolved at render time, so nothing goes stale. One law firm client has 84 pages indexed from it, and a specialty installer had 56 pages indexed in 30 days. We publish in throttled batches so Google sees a site growing, not a site dumping.
