How to Rank in Multiple Cities
Multi-city local SEO strategy for service-area businesses, including the location-page architecture that survives Google's helpful content updates.
How to Rank in Multiple Cities
The most common multi-city SEO failure pattern looks like this: a service business wants to rank in twelve Front Range cities, builds twelve nearly identical location pages, and ends up ranking nowhere. The pages don’t get penalized. They get filtered, which feels exactly like a penalty if you don’t know the mechanism, and the company concludes that multi-city SEO doesn’t work.
It does work. The companies that make it work follow a different playbook than the one that fails. They don’t try to clone a homepage twelve times. They build distinct, locally relevant resources for each market, anchor those resources to a properly structured Google Business Profile (or set of profiles), and earn local signals through citations and reviews that are actually distributed across the geographic area they serve.
We work with service businesses across the Front Range, where the geography forces this question constantly. A roofing company headquartered in Boulder might serve Longmont, Louisville, Lafayette, Niwot, Erie, Westminster, and Broomfield. Each is a separate municipality with separate building codes, separate hail-storm history, and separate searcher intent. Treating them as one is the easy mistake. Treating them as twelve actually different markets is what wins.
What follows is the architecture we use. It survives Google’s helpful content updates because the underlying premise (each location page should be uniquely useful to people in that location) is exactly what Google says it wants. (Source: Multi-location SEO complete guide, Intellibright.)
Two starting questions that change everything
Before designing a multi-city SEO strategy, two questions determine which playbook applies:
Question 1: Do you have physical locations in each city, or are you a Service Area Business?
A multi-location business with real storefronts in each city follows one playbook. A Service Area Business (SAB) operating from one or two physical locations and traveling to customers follows a different one. They share principles, but the Google Business Profile mechanics, location-page strategy, and proximity behavior all differ. (Source: Soci on multi-location SEO, 2026.)
Question 2: Are your cities genuinely different markets or sub-markets within one metro?
Boulder and Denver are genuinely different markets. Boulder and Longmont are different but adjacent. Boulder and Niwot are functionally one market with different ZIP codes. The strategy for cities that are real markets includes dedicated content, citations, and possibly Google Business Profiles. The strategy for adjacent sub-markets often consolidates around a regional approach with neighborhood-specific signals.
Get these two questions wrong and you’ll either over-invest (building 30 pages where 8 would have worked) or under-invest (treating distinct markets as one and ranking nowhere).
Architecture 1: Multi-location businesses with physical addresses
If you have real physical locations in each city, the architecture is relatively straightforward. Each location gets:
- Its own Google Business Profile, fully verified and optimized
- A dedicated location page on your website, typically at
/locations/[city]/ - Localized citations (Yelp, BBB, industry directories) tied to that specific address
- Local reviews from customers in that area
- Internal linking from the homepage and main service pages to each location page
The structure that consistently performs:
yoursite.com/
├── /locations/
│ ├── /boulder/ (Boulder location page)
│ ├── /longmont/ (Longmont location page)
│ ├── /louisville/ (Louisville location page)
│ └── /erie/ (Erie location page)
├── /services/
│ ├── /residential-roofing/
│ ├── /commercial-roofing/
│ └── /hail-damage/
└── /
(Source: Multi-location SEO best practices, AgencyAnalytics.)
Subfolders on a single domain consistently outperform separate domains for each location, because every page benefits from the main domain’s authority while remaining individually optimizable for its market.
What goes on each location page matters more than where the page lives. The minimum viable location page contains:
- A locally distinct H1 (not “Roofing Boulder” but “Boulder Roofing Services for Hail-Prone Front Range Climates”)
- The local address, phone number, and hours (NAP consistency with the GBP)
- Embedded Google Map of that specific location
- Locally relevant content: regional service notes, common local issues, neighborhoods served
- Customer testimonials from that specific market
- A schema markup block (LocalBusiness or relevant subtype) tied to that location
A location page that’s just a header swap with the same body content as another location page is the failure pattern. Google’s filtering kicks in and most of the pages don’t rank.
Architecture 2: Service Area Businesses (SABs)
SAB strategy diverges in three important ways:
Google Business Profile uses service areas, not a public address. The address is hidden, and you specify the geographic regions you serve. This is the correct setup for plumbers, electricians, mobile dog groomers, cleaners, and any business that travels to customers. (Source: GBP service area policies, Google Business Profile Help.)
You typically have one or two GBPs, not one per city. Google explicitly disallows creating fake locations for service-area businesses, and the suspension wave in early 2026 swept up many SABs that tried to game this. (Source: GBP suspension trends, JCerme.) One GBP, real address (often hidden), accurate service area definition. Don’t try to fake additional locations.
Location pages still matter, but they signal relevance, not proximity. Without a physical address in each city, the location page can’t generate proximity signals. What it can do is establish topical relevance for “city + service” queries through unique, locally useful content.
The location page architecture for SABs:
yoursite.com/
├── /service-areas/
│ ├── /boulder/ (Boulder service area page)
│ ├── /longmont/ (Longmont service area page)
│ └── /louisville/ (Louisville service area page)
└── /
Note we use /service-areas/ instead of /locations/ for SABs. It’s a small signal, but it accurately reflects what the page is and what it’s claiming.
The content requirements for SAB service-area pages are higher than for multi-location pages, because the page has to earn its rank entirely through relevance and depth without any proximity boost. A thin 300-word “we serve Longmont” page won’t rank. A 1,200-word page covering Longmont-specific service considerations, completed projects in the area, neighborhoods within the city, and local context can.
The Front Range Geography Test: which cities deserve their own page?
We use a test we call the Front Range Geography Test to decide which cities deserve dedicated content investment versus being consolidated into a regional approach. It has four criteria:
Criterion 1: Search volume. Does the city + service combination have meaningful monthly search volume? “Roofing Boulder” might have 1,400 monthly searches. “Roofing Niwot” might have 90. The first justifies a dedicated page. The second probably doesn’t, on its own.
Criterion 2: Commercial intent. Are searchers in this city actually ready to buy, or is the search volume mostly information-seeking? Suburbs with high homeownership rates often have higher commercial intent than denser urban areas with more renters.
Criterion 3: Competitive landscape. How crowded is the existing local pack and organic results for “service + city”? A market with five entrenched competitors and a 50+ DR average requires either a much stronger investment or a different angle (specialty, premium positioning, niche).
Criterion 4: Business viability. Does serving this city actually make commercial sense once you account for travel time, dispatch, and average ticket size? A roofing job in Erie is the same revenue as one in Boulder, but the drive time to Erie costs a half-hour each way.
A city that scores high on all four criteria gets a dedicated page, dedicated citations, and dedicated review acquisition. A city that scores high on volume but low on commercial intent or business viability gets folded into a regional approach. A city that scores high on viability but low on volume gets included in your service-area definition and content but doesn’t justify its own dedicated page yet.
Run this test on every city you’re tempted to add. We’ve seen businesses with 18 location pages where 6 would have ranked better and 12 would have stayed empty.
Citations: distributed presence beats centralized presence
Citations (mentions of your business name, address, phone number on directory sites) matter for local SEO, and the geographic distribution of those citations matters for multi-city SEO specifically.
A roofing company with 200 citations all using a Boulder address will rank well in Boulder and weakly elsewhere. The same company with 200 citations distributed proportionally across Boulder, Longmont, Louisville, and Lafayette (matching the actual address attached to each Google Business Profile if multi-location, or matching the service area definition if SAB) ranks better across the whole footprint.
For multi-location businesses, this means each location should have its own citation building campaign. Yelp listing for Boulder location, Yelp listing for Longmont location, separate BBB profiles for each, separate industry directory listings.
For Service Area Businesses, the citation strategy is different. You’ll typically have one citation per platform (Yelp, BBB, etc.) tied to your main address. The signal of multi-city presence comes through:
- Pages on your own site for each service area
- Local content (case studies, project photos, customer interviews) tied to specific cities
- Backlinks from local publications, civic organizations, and partners in each city
- Customer reviews that reference specific cities you served them in
The leaked Google API documentation suggests reviews aren’t just counted in aggregate. Their geographic distribution is part of the signal. (Source: Google API leak analysis, Hobo Web.) A business with 100 reviews all from one ZIP code has a different signal than one with 100 reviews distributed across the service area.
A Front Range case study: a regional roofing company
Imagine a Boulder-headquartered roofing company that serves Boulder, Longmont, Louisville, Lafayette, Erie, Niwot, and Westminster. They have one physical location in Boulder. They’re a Service Area Business.
Applying the Front Range Geography Test:
| City | Volume | Intent | Competition | Viability | Verdict |
|---|---|---|---|---|---|
| Boulder | High | High | High | High | Dedicated page |
| Longmont | Medium | High | Medium | High | Dedicated page |
| Louisville | Medium | High | Medium | High | Dedicated page |
| Lafayette | Medium | High | Medium | High | Dedicated page |
| Erie | Low | High | Low | Medium | Dedicated page (high intent compensates) |
| Niwot | Low | High | Low | High | Folded into Boulder regional |
| Westminster | Medium | Medium | High | Low (drive time) | Pass for now |
Result: five dedicated service-area pages, not seven. Niwot gets a section within the Boulder page. Westminster gets passed on entirely until the business adds a closer service capacity.
For each of the five dedicated pages:
- 1,200 to 1,800 words of city-specific content (hail history, building codes, neighborhood notes)
- Embedded photos from real projects in that city
- Customer testimonials specific to that city
- Local backlinks from at least 3 city-specific sources (chamber, news outlet, civic organization)
- LocalBusiness schema with appropriate areaServed values
- Internal links from the homepage and from the main “Roofing Services” page
Citations strategy: Boulder is the primary address used in Yelp, BBB, and major directories. Niche directories (roofing-specific platforms) get listed once. The signal of multi-city presence comes through earned local backlinks (high-impact, hard to scale) and through Google reviews that reference specific cities served.
Realistic timeline expectations: top-3 local pack rankings in Boulder within 4 to 6 months given existing authority. Top-3 in Longmont, Louisville, and Lafayette within 6 to 9 months as the location pages accumulate signals. Erie takes 9 to 12 months because the volume is low and patience is required while the page proves its relevance.
Common mistakes in multi-city SEO
We see the same five mistakes over and over.
Mistake 1: Identical location pages with city names swapped. This is the duplicate content scenario from Myth 1 in our SEO myths article. The pages don’t get penalized. They get filtered. Most of them never rank. The fix is unique, locally useful content per page.
Mistake 2: Using exact-match city keywords in the GBP business name. “ABC Roofing Boulder” or “ABC Roofing Best Roofers in Boulder” is a Google Business Profile policy violation. The April 2026 mass suspension wave swept up many businesses with this pattern. (Source: GBP suspensions, JCerme.) Use your real business name. Win the city signal through profile category, service area, and location pages.
Mistake 3: Creating fake additional GBPs for service-area businesses. Mailbox stores, virtual offices, and family members’ addresses used to seem like clever workarounds. They’re now common suspension triggers. Don’t.
Mistake 4: Spreading citation effort thin. Building 50 weak citations across 5 cities (10 each) usually underperforms building 30 strong citations focused on the highest-priority 2 cities and then expanding. Get the priority cities to top-3 first, then extend.
Mistake 5: Treating all cities equally in reporting. A monthly report that gives Erie the same column as Boulder hides the actual story. Boulder is your primary market and deserves primary attention. Erie is a secondary market and deserves secondary expectations. Don’t let an even-handed report format mislead the strategy.
Frequently asked questions
How do you rank in multiple cities for SEO?
Build a dedicated location page or service-area page for each city, with unique locally-relevant content. Maintain a verified Google Business Profile per physical location, or one well-configured GBP for service-area businesses. Earn local citations and backlinks distributed across your service footprint. Track each city separately and prioritize investment based on a viability test (volume, intent, competition, business sense).
Should I have one website or multiple websites for multiple locations?
One website with subfolders for each location, like /locations/boulder/ and /locations/longmont/. Multiple websites split your domain authority and rarely outperform a unified site. The exception is genuinely separate brands operating in different markets, which is rare.
How many location pages should I build?
Build a page for every city that passes a four-criterion test: meaningful search volume, real commercial intent, manageable competitive landscape, and business viability for serving that city. Adjacent neighborhoods that share a metro often get folded into a regional page rather than each getting their own.
Can I rank in cities where I don’t have a physical address?
Yes, as a Service Area Business. You’ll have one or two Google Business Profiles with hidden addresses and defined service areas. Your location pages signal topical relevance to each city, and you’ll earn local signals through reviews mentioning specific cities and through local backlinks. You won’t get the proximity boost a physical address provides, so the relevance work has to be stronger.
What’s the difference between a location page and a service area page?
A location page represents an actual physical location you operate from, with a public address and standard local business signals. A service area page represents a region you serve from a different physical base, often without a public address tied to that page. The pages have different content requirements, different schema markup, and different ranking dynamics.
How long does multi-city SEO take to work?
Top-3 local pack rankings in your primary market typically take 4 to 6 months for an established business. Secondary markets typically take 6 to 9 months as their dedicated pages accumulate signals. Tertiary markets can take 9 to 12 months. New domains add roughly 3 to 6 months to all of these timelines.
Will Google penalize me for having similar location pages?
Google won’t penalize them, but it will filter them. Filtering means most of the similar pages won’t rank, only a canonical version will. The result feels like a penalty: pages exist but don’t appear in results. The fix is unique, locally useful content that genuinely differs from city to city.
Is it worth building location pages for cities with low search volume?
Sometimes. A low-volume city with high commercial intent (suburb with high homeownership and high average ticket size) can be worth a dedicated page even if the search volume is modest. A low-volume city with low commercial intent usually isn’t worth a dedicated page and should be folded into a regional approach.
Closing thought
Multi-city SEO is one of the more honest tests of whether a business actually understands its own market. The companies that succeed are the ones that can articulate why each city is different, what their customers in that city care about, and what local signals (reviews, projects, partners) they’ve actually earned in that geography. The companies that fail are the ones that try to scale via templates and find that templates produce filtering, not rankings.
If you’re trying to rank in multiple Front Range cities and your current pages are mostly homepage-clones with the city name swapped, you don’t have a multi-city SEO problem. You have a content depth problem disguised as one. The fix is real local content for the cities that matter, not more pages for the cities that don’t.
Internal links to add:
- what-is-a-local-seo-heatmap
- why-google-business-profile-optimization-matters
- seo-myths-that-refuse-to-die
Schema markup: Article + FAQPage. Generated at build time from frontmatter.
Want this done for your business?
The free AI visibility audit takes ten minutes on your end and shows you exactly where you stand: in Google, in Maps, and in AI search. No pitch, no obligation.
Get my free AI visibility audit