Why your rank tracker lies to you about competitors
Open Google from your desk in Vancouver. Same three competitors, every morning. It feels like the whole board. It isn't.
The local pack gets built around where the searcher stands, and it leans hard on proximity. So the businesses beating you downtown are not the ones beating you in Burnaby, or twelve blocks east down Hastings. Your competitor list changes block by block. Search from one spot and you see one slice, maybe a fifth of the field. Location spoofing, telling Google you're somewhere you're not, is how you see the rest.
How Google decides what you see locally
A handful of signals do the work, and you can steer them for testing:
glis the country (gl=ca). Coarse. Canada covers 9.9 million square kilometres, so this alone tells you nothing about a street.hlis the interface language (hl=en,hl=fr). Language, not geography.uuleis the one that matters. It carries a specific location string and moves results down to the neighbourhood.near, plus canonical place names, for Google Business Profile queries.
gl is nearly useless for competitive work. You need uule to stand on a real corner.
Building a uule that works
The uule is a base64-wrapped canonical location name: a prefix, a length byte, then the string. Encoding it by hand is fiddly and easy to fumble, so for any volume, don't.
One rule decides everything: the name has to match Google's list exactly. Full canonical form, commas, no stray spaces. "Toronto,Ontario,Canada" works. "T.O." points nowhere. Most paid rank trackers take a plain city name and handle the encoding for you. Unless you enjoy debugging base64 at midnight, let them.
The tools I actually reach for
My stack for geo-competitive work in Canada:
- Local Falcon for grid scans. Drop a pin, set a grid (7x7 across 5 km), and it pulls rankings at every point. Nothing else shows a competitor set shifting across a city this fast. For a service-area business in the GTA I'd call it non-negotiable.
- BrightLocal for tracking fixed locations over time, with reporting clean enough to hand a client.
- Semrush and Ahrefs, with location targeting, for the organic results below the map pack. Set the location to an actual city, never "Canada".
- Manual browser testing for one-off checks. Chrome DevTools' sensors tab overrides your coordinates; pair it with a clean incognito window and it's fine for a single look.
Local Falcon is the one I'd defend hardest. The grid view surfaces competitors you would never meet from a single search.
A worked example: a dentist on Bank Street
Say you run a clinic near Bank Street in Ottawa. From the front desk you search "dentist near me", see three clinics you already know, and decide that's the market.
Run a 5x5 grid across a 6 km radius instead. What usually falls out:
- Dead centre, your three known rivals hold.
- Two kilometres west, a clinic you've never heard of sits at #1. It's parked next to a dense residential pocket.
- Northeast, by a transit hub, a clinic with 400-plus reviews outranks everyone regardless of distance. Review volume just steamrolls the proximity penalty.
- In one corner, a weak-profile clinic ranks #2 for one reason: nobody strong is nearby.
That corner is the point. Thin competition at the edge of the grid is where rankings come cheap, and you would never spot it from a single search.
Reading the grid
Start with the list itself: every business that lands in the top 3 at any point on the grid, deduplicated. That's your real competitor set, and it's almost always fatter than the one you'd have named from memory.
Then sort them by why they rank, because the two reasons need different playbooks. Some businesses rank only because they're close, and they fall off the moment you walk a few blocks away from their pin. Others hold their position across the whole grid, which means their reviews and links are strong enough to override distance. The first kind you beat with proximity signals. The second is a slower, more expensive fight, and you want to know which one you're staring at before you promise a client a timeline.
The last thing to hunt for is empty space, the grid points where nobody strong ranks at all. That's where the cheap wins hide.
The Canadian wrinkles
Language changes the set. In Montreal, Ottawa, and Moncton, test hl=en and hl=fr both, because French-language profiles surface differently. Check only English and half of Quebec is invisible to you.
The metros sprawl. The GTA, Greater Vancouver, and Calgary cover so much ground that one "city" search is meaningless. Grid scanning earns its keep here far more than in a compact town.
And Google localizes tighter than people expect. FSA-level differences show up, the first three characters of a postal code. V6B and V6K are not the same market. Stop treating "Vancouver" as one place.
Don't get yourself suspended
Spoofing for research is fine. Using it to plant fake reviews, spin up fake profiles, or manipulate a Business Profile is a fast way to get a business suspended. Keep it to intelligence and rank tracking. Run clean incognito sessions or dedicated tools so your own logged-in history doesn't personalize the results and poison the read.
Try it on one location
Take your single most important location and run one grid scan on it, Local Falcon's trial covers this. Then hold the competitor list it hands back against the list you carried in your head. That gap, the businesses you didn't know were beating you, is the part of your market you've been guessing at. For a quick two-point check before committing to a full grid, compare the same query from two spots and see whether the pack even holds.