Adding Links to Nearby Locations: SEO Split Testing Lessons from SearchPilot

No Comments
Adding links to nearby locations: seo split testing lessons from searchpilot

AI Summary

Linking each location page to its six geographically nearest neighbours produced a 7% organic traffic uplift across roughly 8,000 regional pages in a SearchPilot split test. The gain came from link equity reaching pages that previously had almost none, not from geography itself.

  • Each variant page gained about twelve internal links, six outbound plus roughly six reciprocal inbound links from neighbouring pages.
  • SearchPilot attributed the result to pages being starved of link equity, so the effect scales with how under linked your pages already are.
  • Proximity is only a relevance proxy; the same pattern works for products, models, job titles or any computable sibling relationship.
  • Keep the module to single digit link counts and link only to locations you genuinely serve.
Diagram of a searchpilot split test in which each of 8,000 regional location pages was linked to its six nearest neighbouring pages, adding about twelve internal links per page and producing a 7% organic traffic uplift.
Linking each location page to its six nearest neighbours added roughly twelve internal links per page and lifted organic traffic 7%.

Location pages are the classic starved page set. A business with a few thousand branches ends up
with a few thousand near identical templated pages, all of them reachable mainly through a paginated
store finder, none of them linked contextually from anywhere that matters. They sit at the bottom of
the site's internal link graph, and they behave accordingly in search.

SearchPilot tested the most obvious fix on a site with roughly 8,000 regional pages: link each one
to its six nearest neighbours. The result was a 7% uplift in organic traffic to the linked pages.

What was tested

Test parameterDetail
Site typeRoughly 8,000 regional pages across the USA listing nearby physical locations
ChangeEach variant page linked to its six geographically nearest regional pages
ControlIdentical pages with no nearby location links added
Links addedAbout twelve additional internal links per variant page
Result7% uplift in organic traffic to the linked pages
RolloutExpanded to all location pages, not just the variant group

Parameters of the SearchPilot nearby location links split test.

The mechanics matter here. Each variant page received links to six neighbours, and because
the relationship is largely reciprocal, most pages also received links from nearby pages that
counted them among their own six closest. That is where the figure of roughly twelve additional
internal links per page comes from: about six out and about six back in.

This reciprocity is what makes the pattern efficient. You write one rule, and every page in the set
gains both outbound context and inbound equity. No manual link placement, no editorial decisions, and
the link graph stays evenly distributed instead of funnelling everything into the biggest cities.

The explanation is equity, not geography

SearchPilot were direct about the mechanism: these pages were starved of link equity, and adding
internal links helped deliver equity, and therefore a boost in organic traffic.

That framing is worth holding onto, because it is easy to read this test as "geographic links help
local SEO." The geography is incidental. Proximity was simply a computable way to decide which page
should link to which. The active ingredient was that thousands of pages went from almost no internal
links to a dozen each.

This explains why the same intervention produces very different results on different sites. In a
separate SearchPilot test on
increasing related article links,
the pages receiving new links showed no detectable impact, because they were already well
linked. Same tactic, opposite outcome, and the difference is entirely in the starting condition of the
target pages.

The rule that generalises is this: adding internal links pays off in proportion to how
starved the target pages were.
Before running this pattern, check whether your location pages
are actually under linked. If every one already has forty contextual inlinks, expect very little.

Implementing it

The computation is trivial and should happen offline, not at render time. Store coordinates for each
location, sort by haversine distance, keep the closest six, and cache the mapping.

# Compute the six nearest neighbours for each location
from math import radians, sin, cos, asin, sqrt

def haversine(a, b):
    lat1, lon1 = map(radians, a)
    lat2, lon2 = map(radians, b)
    dlat, dlon = lat2 - lat1, lon2 - lon1
    h = sin(dlat/2)**2 + cos(lat1)*cos(lat2)*sin(dlon/2)**2
    return 6371 * 2 * asin(sqrt(h))  # km

# locations = [{'slug': ..., 'lat': ..., 'lon': ...}, ...]
for loc in locations:
    others = [o for o in locations if o['slug'] != loc['slug']]
    others.sort(key=lambda o: haversine(
        (loc['lat'], loc['lon']), (o['lat'], o['lon'])))
    loc['nearest'] = [o['slug'] for o in others[:6]]

# Write the mapping to a static file, regenerate on location changes.
# Do not compute this at page render time.

Regenerate the mapping when locations are added or closed, not on every request. Computing distances
during page rendering adds latency to thousands of pages for data that changes a few times a year.

The output module needs to be plain server rendered HTML with real anchors and real place names as
anchor text:

# The module as it should appear in the raw HTML
<section class="nearby-locations">
<h2>Nearby locations</h2>
<ul>
<li><a href="/locations/springfield/">Springfield</a> (8 miles)</li>
<li><a href="/locations/shelbyville/">Shelbyville</a> (12 miles)</li>
</ul>
</section>

# Verify the links are really there, not injected client side:
curl -s https://example.com/locations/ogdenville/ \
  | grep -o 'href="/locations/[^"]*"' | sort -u | wc -l

Including the distance is a small addition that makes the module genuinely useful to a visitor who
is between two branches, and it gives the anchor context without stuffing keywords. Our
multi-location local SEO guide
covers the wider template requirements for location pages, which matter just as much as the linking.

Where the pattern goes wrong

Two failure modes turn a useful module into a liability.

Linking to places you do not serve. The temptation with a proximity module is to
extend it into towns where you have no branch, on the theory that it captures more local queries. That
converts a navigation aid into a doorway page network, and it is the exact pattern search engines
treat as spam. Link only to pages representing real locations.

Letting the module grow unbounded. Six neighbours is a module. Sixty is a link farm
in the footer. Beyond a certain point the links stop reading as navigation, the anchor text becomes a
keyword list, and the equity each link carries approaches nothing anyway. Keep the count in single
digits.

A third, quieter problem is orphaning by pagination. If your only other path to location pages is a
paginated finder with rel="next" chains twenty pages deep, the nearby module may be doing
most of the work of making those pages discoverable at all. That is fine, but it means the module
becomes load bearing: breaking it later silently orphans thousands of pages. Our
crawl budget guide
covers how depth affects what gets crawled on large sites.

Applying the pattern beyond locations

Once you see the mechanism as "link starved sibling pages to their closest relatives," the
geographic case is just one instance. Any large templated page set with a computable similarity
measure can use it.

Page setNatural sibling definitionTypical link module
Store or branch pagesGeographic distanceNearest six branches
Product pagesSame category and adjacent price bandSimilar products
Car model pagesSame segment, same manufacturerCompare with these models
Job listing pagesSame title, nearby citySimilar roles nearby
Recipe pagesShared primary ingredientMore recipes with this ingredient
Property listingsSame postcode district, similar sizeNearby properties

The proximity pattern generalises to any large templated page set with a computable sibling relationship. The requirement is that the target pages are genuinely under linked.

The requirements are the same in every case. The target pages must be genuinely under linked, the
similarity measure must produce links a human would consider reasonable, the count should stay in
single digits, and the module must be in the server rendered HTML.

How to check whether your pages qualify

Before building anything, confirm the premise. Crawl the site and pull inlink counts for the page
set you are considering. If the median location page has two or three internal inlinks, all of them
from paginated archives, you have the same starting condition as the tested site and can reasonably
expect a similar direction of effect. If the median is thirty, you are more likely to reproduce the
null result from the related articles test.

Our internal link analyzer
gives you the distribution quickly, and the
one followed internal link check
isolates the pages that are effectively orphaned. Those are the pages where this pattern earns its
7%.

It is also worth stating what a 7% uplift is and is not. It is a solid return on a one time
template change that requires no ongoing content work. It is not a fix for location pages that are
thin, duplicated across every city with the town name swapped, or missing the information a local
searcher actually wants. Internal linking distributes authority; it does not create it. If the
underlying pages have nothing to offer, better links will move them slightly higher in a competition
they still lose. Our
complete internal linking guide
covers where linking sits relative to the rest of the work.

FAQ

Does linking location pages to nearby locations improve SEO?

In this SearchPilot test it produced a 7% organic traffic uplift across roughly 8,000 regional pages. The mechanism was link equity rather than geography: the pages were previously starved of internal links, and the nearby locations module was simply a scalable way to give them some. Expect a much smaller effect on location pages that are already well linked.

How many nearby locations should I link to?

This test used six, which added about twelve internal links per page once reciprocal links from neighbours are counted. Six is a reasonable default because it fills a template block without overwhelming the page. The number matters far less than whether the pages were under linked to begin with.

Why does proximity work as a way to choose which pages to link?

Proximity is a relevance proxy that a machine can compute. Someone looking at a plumber in one suburb plausibly wants the neighbouring suburb too, so the link is useful to users as well as crawlers. It also generates a naturally distributed link graph rather than funnelling every link to a handful of major cities.

Will Google see nearby location links as manipulative?

Not if they are genuinely useful. A module showing the six closest branches is standard navigation that helps users who are near a boundary. The pattern becomes risky when it degenerates into keyword stuffed link blocks listing hundreds of towns you have no presence in, which is a doorway page problem rather than an internal linking one.

How do I calculate which location pages are nearest?

Store latitude and longitude for each location, then compute the haversine distance between each pair and keep the closest six. For a few thousand pages this runs in seconds as a batch job, and the output is a static mapping you regenerate whenever locations change rather than calculating on every page load.

Does this technique work outside local SEO?

Yes. The underlying pattern is linking large sets of sibling pages to their closest relatives, and closeness can be defined however your data allows: same category, same brand, adjacent price band, related job title. Any templated page set that is under linked and has a natural sibling relationship can use it.

Source: https://www.searchpilot.com/resources/case-studies/seo-split-test-lessons-nearby-location-links/

Are your location pages starved of internal links?

Most multi-location sites bury their branch pages behind a paginated finder. An audit shows exactly how much equity is reaching them.

Request an Advanced SEO Audit

Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.

About SEO ProCheck

Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.

Work With Me

Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.

Subscribe to our newsletter!

More from our blog