Local SEO for multi-city service businesses
A multi-city service business wins local SEO by treating each city as its own local campaign: a genuine city page, real local proof, and where justified a separate Google Business Profile, under one consistent brand. The failure mode is one thin page per city, swapped only by name.
This is the hardest local SEO scenario in South Africa: a business serving Johannesburg, Cape Town, Durban and Pretoria wants to rank in all four. The temptation is to scale templated pages. That is exactly what gets penalised. Here is how to scale local presence without scaling thin content.

TL;DR: Quick Answer
Run each city as a separate local campaign under a shared brand: a genuine city page with real local proof, the right Google Business Profile structure, and consistent name, address and phone everywhere. You need a separate profile only where you have a genuine staffed presence or service area. Structure pages as one city page per metro from a central locations hub, write each from real local material, and track rankings per city, not as a single national figure.
Key takeaways
- Each city has its own map pack, competitors and proximity dynamics: ranking in Cape Town tells Google nothing about Durban
- You need a separate Google Business Profile only where you have a real staffed presence or genuine service area
- Structure as one city page per metro from a central locations hub, kept flat so no city page sits buried deep
- Run the find-and-replace test on draft city pages: if stripping the city name leaves identical copy, they are too thin
- Keep each location's name, address and phone exactly consistent across its profile, your site and every citation
- Track rankings per city with geo-grid tools, never as a blended national figure that hides dead zones
What makes multi-city local SEO different?
Multi-city local SEO is different because you are running several local campaigns at once, each competing in its own metro with its own competitors, rather than one campaign in one place. Ranking in Cape Town tells Google little about your relevance in Durban.
Each city has its own map pack, its own local competitors, its own search behaviour, and its own proximity dynamics. You cannot win all of them with a single generic page, and you cannot win them by cloning that page per city either. The work is genuinely multiplied: real local proof per city, the right profile structure, and consistent name, address and phone everywhere. The businesses that succeed treat each metro as a deliberate, separately-resourced effort under a shared brand. The ones that fail try to shortcut it with templated location pages and end up with thin content that ranks nowhere and risks the whole domain.
Do you need a Google Business Profile for each city?
You need a separate Google Business Profile for each city only where you have a genuine, staffed presence there: a real address or a real service area you work from. You cannot create a profile for a city just because you would like to rank there.
If you have a real office in Cape Town and another in Johannesburg, each gets its own verified profile with its own name, address and phone and its own reviews. If you are a service area business covering multiple cities from one base, you typically run one profile with a service area spanning those cities, not a fake profile per city. The line is honesty: a profile requires a real location or genuine service area. Inventing addresses to claim a profile in each metro is a fast route to suspension. Decide your structure based on where you genuinely operate, then build website pages to support the cities your profiles cannot directly cover. A focused Google Business Profile setup is the foundation everything else sits on.
How do you structure pages for multiple cities?
Structure them as one genuine city page per metro you serve, each with distinct local content, linked from a central locations hub and from your service pages. Keep each page to a single city and a single intent.
A clean structure for an SA multi-city business:
- A locations hub linking to each city page
- One city page per metro, for example /seo-cape-town/ and /seo-johannesburg/
- Each city page with named local clients, real local projects and local context
- Service pages that describe the work and link out to relevant city pages, knowing how city, suburb and service pages each play a different role
- Consistent name, address and phone, plus LocalBusiness or ProfessionalService schema with the right areaServed
The locations hub matters more than it looks. It gives Google a clear, crawlable map of where you operate, gives users a single place to find their city, and concentrates internal links so each city page inherits authority from the rest of the site. Keep its structure flat, hub to city page, so no city page sits buried several clicks deep. For an SA business serving four metros, a clean hub linking to four substantial city pages is a far stronger architecture than a sprawling tree of thin ones.
How do you avoid duplicate content across city pages?
Avoid it by writing each city page from genuine local material rather than a shared template: different clients, different projects, different local detail on every page. If two city pages read identically with the place name swapped, that is the duplicate-content and scaled-content problem that produces thin location pages, and exactly what you are trying to dodge.
Run the find-and-replace test on your draft city pages: strip the city name and see whether what remains is interchangeable. If it is, the pages are too thin. The fix is real information gain per page: a named Durban client on the Durban page, a real Pretoria project on the Pretoria page, local pricing and context specific to each metro. First-party project data is the strongest defence because no competitor and no template can replicate it. This is more work than cloning a page four times, but it is the only approach that ranks and the only one that keeps you clear of Google’s scaled-content enforcement, which can affect a whole site, not just the thin pages.
How do you manage NAP and citations across cities?
Manage NAP by keeping each location’s name, address and phone exactly consistent across its own Google Business Profile, your website and every citation, and never letting two locations’ details blur together. Inconsistent NAP is one of the most common reasons multi-location local SEO underperforms.
For each city you genuinely operate in, build citations on Google Business Profile, Bing Places, Apple Business Connect and reputable SA directories, using that location’s exact details. Make sure the NAP on each city page matches its profile and its schema byte for byte. Watch for duplicate or conflicting listings, which multiply quickly across cities and confuse Google about which details are correct. A simple audit habit: maintain a master sheet of each location’s exact NAP and check every citation against it.
How do you track rankings across several cities?
Track rankings per city, not as a single national figure, using geo-grid tracking in each metro you serve. A blended national rank hides the truth that you might dominate Cape Town and be invisible in Durban.
Set up geo-grid tracking for each city’s service area to see where you rank top three, where you have dead zones, and where local competitors lead. This per-city view drives a per-city action plan: the metro where you are weakest might need more reviews, better citations, or a genuinely stronger city page with real local proof. Seeing each city separately also stops a common false conclusion, where a healthy-looking national average hides a metro you have quietly gone invisible in. In our experience steering SA multi-city campaigns, this measurement discipline is what turns a scattergun of location pages into a campaign you can actually direct.
Frequently asked questions
Can I rank in a city where I have no physical presence?
You can rank through website city pages and a service area on your Google Business Profile if you genuinely serve that city, but you cannot create a separate profile there without a real location or service area. Build genuine local proof for the city on your site, and only claim a profile where you honestly operate.
Should each city have its own page or one combined page?
Each metro you genuinely serve should have its own page, provided you can fill it with distinct local content. One combined page cannot rank well for several cities at once. Avoid the opposite extreme too: do not split each city into thin suburb pages unless real local proof justifies them.
How many cities can I realistically target?
As many as you can genuinely serve and write distinct, proof-backed pages for. The constraint is honest local substance per city, not an arbitrary number. Most SA multi-city businesses are better off dominating three or four metros they truly serve than spreading thin across ten.
