The Alberta Local SERP Volatility Study 2026

Ninety days. 294 keywords. 143 Alberta and British Columbia municipalities, queried separately from inside each town’s own geography. That is the dataset behind this study. It answers a question most local business owners put to their marketing person at some point. How much do search rankings actually move?

The short answer surprised us. Most days, nothing moves. On the days something moves, it moves a long way.

What follows is a write-up of a position log SEO Company To-The-TOP! has been running since 19 May 2026. Every figure here came out of that log. Nothing was estimated, and where a number could not be reproduced from the data, it was left out. The methodology section at the bottom sets out how the collection works. That includes the part where the tracked website is our own.

Most days a local ranking does not move at all

3,209 measurements, each one a keyword compared against itself on the following day. Same town. Same phrasing. Same geographic target.

44.2% of them showed no change whatsoever. Another 25% moved one or two spots. So roughly seven days in ten, a local ranking sat still or drifted by a position. Nobody notices that without a tracker.

Then there is the other end. 14.2% of daily observations jumped ten positions or more. Not gradual slippage. A page at #6 landing at #24 between Tuesday and Wednesday, with nothing on the site having changed.

Bar chart: 44.2% of day-over-day observations showed no ranking change, 14.2% moved ten or more positions.

The median daily change was one position. The mean was 5.54. Those two numbers being that far apart is the finding, not a rounding quirk. A handful of enormous swings drag the average up while the typical day sits flat. Anyone quoting you an “average ranking change” is describing a distribution that has no meaningful middle.

Worth sitting with before you react to a Monday morning screenshot.

Appearing and disappearing beats moving

Here is the part that does not show up in a standard rank report. Over the same window we logged 993 occasions where a keyword arrived in the top 100 from nowhere. 1,029 occasions where one left it entirely.

Put those against the 3,209 ordinary position changes and the ratio is stark. 38.7% of everything that happened to a tracked keyword was an appearance or a disappearance, not a move. The page was either in the index and serving, or it was not.

Across 72 runs the number of keywords holding any top-100 spot ranged from 17 to 127 out of 294. Mean of 69.4. The typical run-to-run swing was six keywords, and the largest was 45 in a single step.

Line chart of how many of 294 tracked local SEO keywords held a top-100 position on each run between May and August 2026.

Look at that line and the temptation is to read a story into every dip. Most of the dips are noise. The 20 June trough down to 17 keywords reversed within two runs.

Volatility belongs to the town, not to the industry

44 municipalities had enough consecutive-day observations to score fairly. We ranked them by how far a ranking moved on an average day.

Hinton came out busiest at 14.8 positions per day. Drumheller and Nanton both sat at 13.2. Crossfield, Okotoks and Drayton Valley all cleared 11.

At the other end: Lac La Biche moved 0.05 positions a day. Pincher Creek, 0.38. Calgary, 0.81.

Bar chart comparing the eight most volatile and eight most stable Alberta and BC municipalities by average daily position movement.

Roughly three hundred times the movement between the busiest town and the quietest. Same industry, same tracking method, same three months.

Calgary being among the calmest surprised us at first, then stopped being surprising. Competitive urban results have many established pages fighting over each slot. Google also holds a great deal of behavioural data to settle the order with. Thin markets have neither. Four pages competing for nine slots gives the ranking nothing stable to anchor to. Small signal changes reshuffle it.

One caveat we will state plainly. A very low volatility score can mean a genuinely settled ranking. It can also mean a page that sat outside the top 100 for most of the window and contributed few observations. Lac La Biche’s 0.05 comes from the intervals where it did rank.

There is a practical consequence buried in that spread. A client in Okotoks and a client in Calgary looking at the same monthly report are reading two different instruments. The Okotoks line will look alarming and mean very little. The Calgary line will look boring and every single position on it was hard to get. Reporting that treats both the same way misleads one of them.

Whole pages vanish, then come back

This is the finding we think matters most, and it is invisible in every commercial rank tracker we have used.

Each town is tracked with two phrasings. “Okotoks seo” and “seo Okotoks”. Two separate queries, two separate API calls, run independently. Two independent queries do not normally fail on the same day by chance.

141 times, both phrasings for a town went from ranked to absent on the same run. In 86 of those cases the URL log confirms both queries had been served by the same page beforehand. That is not two rankings falling. That is one page going dark.

Compare it to 847 single-query drops over the same period, where one phrasing fell and its twin held. Those are ranking movements. The 141 are something else.

Twenty of them started from position #1. A page holding the top spot in both directions, gone from the entire top 100 within twenty-four hours.

Bar chart showing that 55% of whole-page disappearances from the top 100 reversed on the very next run.

And then they came back. 78 of the 141 were ranking again on the very next run. 114 recovered at some point, which is 80.9%. Median time to recovery: one run. Only 27 were still absent when the study window closed.

Four out of five total disappearances reversed themselves without anyone touching anything.

The August 2026 cluster showed the structure clearly. Eleven towns dropped this way: Coaldale, Comox, Coquitlam, Courtenay, Kamloops, Lethbridge, North Vancouver, Port Coquitlam, Quesnel, Redcliff and Taber. They fell in pairs, and the URL log explains why. Coaldale and Redcliff were both served by one page. So were Comox and Courtenay. So were Taber and Lethbridge. Neighbouring towns went down together because a single page carried both of them.

If you take one operational lesson from this study, take that one. Check whether the page is still being served at all, ahead of concluding that a ranking dropped. Those are different problems with different fixes, and a position number alone cannot tell them apart. It is the first thing we check during a website audit when a client reports a sudden loss.

Page one is not ten results

On 18 August 2026 we captured the full first page for all 294 queries. Our own position was the least interesting part of it. Every organic result got logged, with its domain and its title.

90.1% of those pages returned fewer than ten organic results.

Nine was the standard. 253 of the 294 queries returned exactly nine organic listings. Eleven returned eight. One returned six. Only 29 delivered a full ten.

This is not a small-town effect, and we want to be clear about that because it would have been a tidier story. Calgary queries returned nine as well. Page one simply is not ten blue links any more, in a town of 3,000 or a city of 1.3 million. Other elements take the space.

Which changes the arithmetic on what “page one” is worth. Ninth of nine is the bottom of the page. Ninth of ten used to have something below it.

What actually fills those slots

Calgary and the small towns fill page one with completely different material.

Grouped bar chart comparing directory, social platform and government results on page one for Calgary versus small-town queries.

On the ten Calgary commercial queries, third-party directory and roundup pages took a median of three slots out of roughly nine. The maximum on any single query was four. 80% of the Calgary queries carried three or more, and 90% carried at least one.

We are counting one specific thing. Pages whose purpose is to list several providers, rather than to sell one provider’s own service. “Top SEO companies in Calgary” pages, whoever publishes them.

So a Calgary business competing for those terms is realistically competing for six slots, not nine. Three are already spoken for. Those pages exist to rank for exactly this kind of query and run no local operations at all. Worth factoring in before you sign anything. It is part of why we stay direct about what SEO costs in Calgary and what the money buys.

Small towns invert it. Directory pages averaged 0.18 slots per query, close to nothing. Social and platform pages averaged 0.96. Roughly one slot in nine goes to a Facebook page, a LinkedIn profile or a YouTube video rather than a business website. Municipal and government pages added another 0.15.

The fragmentation is the striking part. Across 284 small-town queries we recorded 2,570 result slots held by 839 distinct domains. 378 of those domains appeared exactly once in the entire dataset.

Nearly half the domains on small-town page ones show up for one town and never again. That is a market with no incumbents. Nobody has built the page that owns Crossfield or Three Hills. Somebody has clearly built the page that owns “calgary seo company”. The results reflect the vacancy.

Though one pattern cut across it. A single regional provider held a page-one slot in 45.4% of all small-town queries. Facebook appeared in 36.6%. One well-structured page per town covers an enormous amount of ground in markets that thin. That is the whole logic behind how keywords drive rankings in low-competition geography.

What a business owner should do with this

Stop reacting to single-day movements. 44.2% of days show nothing, and the days that do show something are as likely to reverse as to continue. Weekly is a reasonable checking cadence for most local businesses. Daily invites bad decisions.

Separate a rank drop from a serving problem. Every query pointing at one page fell on the same day? The page is the issue. One query fell and its close variant held? That is ranking movement, and it will probably sort itself out.

Wait before you rewrite. Four in five total disappearances came back on their own, more than half of them within a day. Rewriting a page in response to a blip removes the thing that was working.

Count the slots you can actually win. Nine organic results, three of them directory pages in a competitive city, means six real slots. Set the target accordingly, and treat Google Ads management as the lever for the traffic organic cannot reach on that timeline.

Know which market you are in. A Hinton ranking and a Calgary ranking are not the same asset. One will bounce fourteen positions a day and the other will sit still for weeks. Neither is broken.

Methodology

Collection is automated and has run continuously since 19 May 2026.

What is queried. Two phrasings per municipality, “[town] seo” and “seo [town]”, across 143 Alberta and British Columbia municipalities. Calgary carries eight further commercial variants. 294 keyword rows in total.

How it is queried. Each query runs through a search API using Google’s numeric geographic target ID for that specific municipality. Country is set to Canada, language to English. A Pincher Creek query is executed as though the searcher is in Pincher Creek. Results walk pages one through ten, so positions 1 to 100. The walk stops as soon as the tracked domain is found.

Cadence. Daily from 19 May to 23 July 2026, then every third day. 72 runs to 16 August 2026. Every day-over-day figure in this study uses only the intervals that were genuinely one calendar day apart. 3,209 observations.

The tracked domain is ours. The log records the position of to-the-top.ca. We are not neutral observers of this dataset, and our own site appears throughout it. Disclosing that matters more than pretending otherwise, so here it is. The volatility, appearance and disappearance findings describe how the results behaved around one site across 143 markets. The page-one composition findings measure the whole result page and do not depend on our position at all.

Page-one capture. The tracker was extended on 18 August 2026 to archive the complete top ten for every query. Position, URL, domain, title. Composition figures come from that single dated capture of 294 queries.

Arithmetic rules. A keyword outside the top 100 is recorded as absent, never as position 100. Movement is calculated only where a real position exists on both sides of an interval. Appearances and disappearances are counted separately as their own event types. This is why a page vanishing cannot inflate the movement statistics.

Limits. One site, one industry, one three-month window. Small-market findings rest on more towns than Calgary findings rest on queries. And run-to-run instability within page one itself is something we cannot yet report, because the full-page archive only began on 18 August. Next edition should be able to answer it.

One daily process sits behind all of it. The ranked keyword portfolio comes out of it. So does the ongoing SEO support that produced this log. Calgary SEO work has been the day job here since 2007. This study is a by-product of the monthly reporting, not a research project we set out to run.

Questions we get about ranking movement

My ranking dropped overnight. What should I change?

Probably nothing yet. 80.9% of total disappearances in this dataset came back on their own, 55.3% of them by the next day. Check three things first. Does the page still load. Is it still indexed. Did every query pointing at it fall on the same day. Change something only if the page itself has a problem.

How often should a small business check rankings?

Weekly is enough for most. Daily checking produced 44.2% no-change readings and a lot of movement that reversed within a run. Monthly hides real trends. Weekly catches the pattern without the noise.

Why does my rank tracker show a different number than what I see in Google?

Geography and personalisation. This study queries each town using that town’s own geographic target ID, so a Nanton result reflects a Nanton searcher. Your own browser carries location, history and account signals that a clean API query does not. Both numbers can be correct.

Is a page-one spot in a small town worth having?

It depends on what sits beside you. Small-town page ones are fragmented. 839 different domains across 284 queries, with roughly one slot in nine going to a social profile rather than a business site. Ranking is easier there. The search volume behind it is also smaller, so the value comes from intent rather than traffic volume. Sensible keyword selection work is what settles whether a given town is worth a page.

Why is Calgary more stable than a small town?

More competitors and more behavioural data. Calgary averaged 0.81 positions of daily movement against Hinton’s 14.8. Established pages and heavy query volume give Google a settled order to return. Thin markets have few strong candidates, so small changes reshuffle the page.

Contact SEO Company To-The-TOP! in Calgary

Questions about anything in this article, or about your own rankings? Talk to a Calgary SEO specialist directly.

Phone: (403) 308-5949
Address: 1509 14 Ave SW, Calgary, AB T3C 0W4

Hours:
Monday to Friday: 10:00 am – 7:00 pm
Saturday: 12:00 pm – 4:00 pm
Sunday: closed

Greg Ichshenko

Calgary SEO expert and digital marketing specialist,
developing advertising strategies for businesses of all sizes

(403) 308-5949

greg@to-the-top.ca
1509 14 Ave SW, Calgary,
AB T3C 0W4

    Submit your request or question, and I will get back
    to you shortly

    Please prove you are human by selecting the key.