GUIDE · LOCAL SEO

LOCAL KEYWORD RESEARCH WITH FREE TOOLS

Two hours, one spreadsheet, and no subscription. You finish with a ranked build order rather than a pile of phrases, which is the part most keyword research never gets to.

Share
Last verified 24 August 2026 against Google's Performance report documentation, Search Console export limits and Keyword Planner help

Before you start

First pass
About 2 hours
After that
15 minutes a quarter
Cost
Free
You end with
A ranked build order
  • A spreadsheet. Same as the listings guide, this is a spreadsheet with instructions attached
  • Search Console for your property, with a few months of history. Guide 06 if you haven't set it up
  • A private browser window, so your own search history stops shaping the suggestions you're trying to read
  • No paid tools. That's a constraint of this guide, not a compromise in it

The article this pairs with, local keyword research for small business, covers why you start with your own business instead of a tool, what autocomplete and People Also Ask are, and why volume isn't value. That reasoning isn't repeated here.

This is the execution half: a sheet with fixed columns, a rule for filling each one, and a scoring pass that puts the phrases in the order you build in. Most keyword research dies between collection and decision, leaving sixty phrases in a document and no idea which one is Monday's work.

One worked example runs from step 1 to the end: an Etobicoke drain and plumbing company, the kind of business this method was built for. It's an illustration rather than a real account, and the figures in it are made up to be realistic, not measured. Search Console and Keyword Planner also sit behind a login, so the panels below are on-brand recreations rather than screenshots. Both facts are repeated in every caption, because a number that looks like data should never be mistaken for it.

1

Export what you already rank for

Start here because this is the only source in the exercise that's about your business specifically. Everything else describes the market. This describes what Google has already decided you're relevant to, which is frequently not what you think.

  1. Open the Performance report and set the date range to the last 3 months. Long enough to have shape, recent enough to describe the site as it is now.
  2. Open the Queries tab with every filter off. You want the whole list, including the embarrassing parts.
  3. Sort by Impressions, not clicks. On a small site clicks are mostly zeros, and impressions are where the signal lives.
  4. Export the table. Google's documentation is explicit that data is truncated to 1,000 rows before it reaches the report, so reversing the sort reveals nothing past that. A local site is nowhere near the cap.
  5. Paste it into the sheet and put GSC in the source column for every row.

Now read the bottom, which is the part people skip. Rows at position 40 to 90 with a handful of impressions are the useful ones. A page at position 8 is already working. A phrase at position 61 means Google has connected you to that query and ranked you almost last for it, which is a different and usually solvable problem.

Performance › Queries › last 3 months
412impressions
6clicks
54queries
QueryImpr.Pos.
basement drain backup74611
clogged drain etobicoke3844
emergency plumber etobicoke2638
hydro jetting toronto9122
trenchless pipe rehabilitation49
Recreation, and the figures are illustrative rather than measured. (1) The finding is in the top two rows: the phrases carrying real demand are parked in the fifties and sixties, with no page pointed at them. (2) The contrast that makes it obvious. This business ranks 12th for hydro jetting, which almost nobody searches, and 61st for the thing customers actually type. It's winning the vocabulary it chose and losing the vocabulary its market uses.

How to know it worked One row per query with impressions and average position, source column reading GSC on every one. Sort by position descending and your worst-ranked queries sit at the top. That's the view you'll keep coming back to.

Common trap Deleting the rows that look wrong. A query you'd never have chosen is Google telling you how your pages read, and it's occasionally the one worth building on. Step 4 is where things get cut, on evidence.

2

Collect the phrasings, and tag every row with its source

Three free sources describe what people in your market actually type: autocomplete, People Also Ask, and the related searches at the foot of the results page. The parent article covers what each one is and why the alphabet trick works, so here's only the operating procedure.

Private window, not signed in. Then for each of two or three core phrases, meaning a service plus a city, a service plus a problem, and a service plus a pain point:

  1. Type the core phrase, then a space, then a. Record every suggestion. Backspace, try b. Work the alphabet.
  2. Press enter and expand every question in the People Also Ask box. Expanding generates more, so keep going until they repeat. Record them verbatim, because the phrasing is the data.
  3. Scroll to the related searches at the bottom and take those too.

Now the part that makes this a system rather than a pile. Every row gets a source tag as you add it: GSC, AUTO, PAA or REL. It costs nothing at collection time and is impossible to reconstruct afterwards. It earns its place twice: a phrase appearing under more than one tag has independent confirmation, which is the closest thing to a demand signal you get for free, and a phrase tagged GSC is one you already rank for somewhere, which is a different job from one you don't.

Dedupe exact duplicates only. Near-variants like clogged drain etobicoke and blocked drain etobicoke stay separate until step 6, once you know whether Google treats them as one query.

How to know it worked Thirty or more rows, every one tagged, and at least one phrase under two different tags. If nothing overlaps between autocomplete and Search Console, your core phrases are probably not the ones your market uses, which is itself a finding.

Common trap Collecting from a signed-in browser at your own address. Personalisation and location both shape autocomplete heavily, so you record your own history back to yourself and call it market research.

3

Read the SERP and record what actually wins

This is the highest-value step and the one almost everybody skips, because it's slow and produces no new phrases. It only tells you the truth about the ones you have.

A results page is Google publishing its interpretation of a query. If every result is a blog post, Google has decided that query wants reading material, and a service page won't rank there however well written. Ranking isn't a competition you win by trying harder at the wrong format.

Take your top 20 phrases and search each in a private window. Record two values:

  • Winning page type. Look at the top five results and name the pattern: service page, blog post or how-to, directory or listicle, a Google Business Profile, or a national brand.
  • Map pack present. Yes or no. A map pack is Google stating the query has local intent, and it changes what you build. If the pack is there, your profile is doing work your website can't do for that phrase.

Then ask the only question that matters: could a page of the type I'd build appear in this set? If no, that phrase isn't a target. It might be a section inside a page, or an FAQ, or nothing. Write the verdict down while looking at the SERP. Nobody remembers twenty of these.

Same service, four phrasings, four different answers
PhraseWhat winsMap packBuild?
clogged drain etobicokeService pages1NoYes, a page
how to unclog a basement drainHow-to articlesNoYes, an article
plumber near meMap pack, then directories2YesProfile work, not a page
best plumbers in torontoListicles, national brandsNoNo3
Recreation, and illustrative rather than measured. Four phrasings of one service, and the SERP gives four different instructions. (1) Service pages win, so a service page is the right build. (2) A map pack means the work is on the Google Business Profile, and writing a page for it would be effort spent in the wrong place. (3) A results page owned by listicles and national brands is one to walk away from, however good the phrase looks in a spreadsheet.

How to know it worked Every phrase in your top 20 has a named winning page type and a yes or no on the map pack, with nothing blank. A row left blank because the answer was awkward is exactly the row that needed one.

Common trap Deciding a phrase fits because it contains your service. Basement renovation ideas contains a service and is served to people collecting pictures, not people hiring anyone. The phrase isn't the query. What Google shows is the query.

4

Classify intent from the SERP, not from the words

Step 3 gave you the evidence. Now turn it into one label per phrase, because intent decides both whether to build and what to build. You aren't interpreting the phrase, you're reading off what Google served and looking it up here.

If the SERP showsLabel itAnd build
How-to posts, explainers, guidesInformationalAn article, or a section of one
Comparisons, best-of lists, reviewsCommercialA comparison or proof page
Service pages, map pack, booking flowsTransactionalA service or location page
One specific brand and its propertiesNavigationalNothing, unless the brand is yours

Two rules do the actual work:

  • Mixed SERPs are instructions, not ambiguity. Three how-tos and two service pages in the top five means Google is hedging because the query gets asked both ways. Those are the phrases where a service page with a real explanatory section outranks both a thin service page and a pure article.
  • Navigational phrases for other people's brands are a hard no. Competitor names look tempting and convert badly, since the searcher was going somewhere specific and will get there.

This is where the list gets shorter. Anything navigational for someone else, or informational with no plausible connection to a job, comes out. Mark those parked rather than deleting them, so next year's run starts from what you already rejected.

How to know it worked Every remaining phrase carries one of four labels with SERP evidence behind it. For a service business the surviving list should lean transactional and commercial. If it's mostly informational, you have researched a blog rather than a business.

Common trap Labelling from the wording out of habit. Anything starting with how sounds informational, but plenty of how phrases return service pages, because the honest answer to how do I do this is hire someone.

The free audit reads your Search Console and flags the buried queries automatically, which is a faster way to build the step 1 export than reading a thousand rows by hand.

RUN THE FREE AUDIT
5

Add volume last, and only if you want it

Volume goes last and is genuinely optional, both deliberate departures from how keyword research is usually taught.

Keyword Planner is free and needs a Google Ads account. Google's documentation states you must complete account setup by entering billing information to reach basic features like getting ideas for new keywords. You aren't committing to spend, but know the gate is there before you walk to it.

The second limitation matters more. An account with no ad spend sees logarithmic ranges rather than numbers: 10 to 100, 100 to 1K, 1K to 10K. A range spanning an order of magnitude can't separate two local phrases, which is the entire job here.

If you want it anyway:

  1. Open Keyword Planner and choose Discover new keywords.
  2. Set the location to your actual service area before reading anything. The default is national and hands you numbers from a market you don't serve. This one setting is the difference between useful and misleading.
  3. Enter your core phrases and take the range for each. Ignore the competition column, which describes advertiser competition for ad slots, not organic difficulty.
  4. Record the range, not a midpoint. Writing 5,500 for 1K to 10K invents precision that isn't there.

If you skip the step, write skipped down the column and carry on. Nothing downstream breaks.

How to know it worked Either every phrase has a range gathered with the location set to your service area, or the column reads skipped. What you must not have is a mix of numbers taken under different location settings, which is worse than no numbers at all.

Common trap Re-sorting the sheet by volume once the column exists. Collecting it last is the whole point: a sheet sorted by volume quietly becomes a plan built around whichever phrase is biggest rather than whichever is yours.

6

Map one primary phrase per page, and find the collisions

List every page that ranks or should: homepage, service pages, location pages, the articles worth counting. Give each surviving phrase exactly one target page, or mark it gap.

One primary phrase per page. Secondaries are fine, and a page ranking for forty related phrasings is doing its job. The same primary on two pages isn't, because Google then has to choose and usually resolves it by ranking both mediocrely.

Now detect the collisions the sheet can't show you, using Search Console rather than intuition:

  1. In the Performance report, add a Page filter for one money page, then open the Queries tab. That's the query list Google associates with that page.
  2. Repeat for the next money page, then compare. Queries on both lists are your collisions, and homepage against service page is where this happens most.

For each collision, pick the survivor by what Google has already been doing, not by which page you prefer. If one page consistently takes the impressions, that's a decision made over months and overturning it is expensive. Make it primary, and change the loser so it stops competing: new title, an H1 aimed at a different phrase, and an internal link to the primary using the primary's phrase as the anchor. A competitor becomes a supporter, and nothing gets deleted.

Near-variants resolve here too. Search both. If the top five are substantially the same pages, Google treats them as one query and they belong on one page. If the results diverge, they're two queries.

How to know it worked No phrase assigned twice, every money page holding exactly one primary, and the page filter run on at least the homepage and your main service page with the two query lists compared. Everything unassigned is tagged gap, which is step 7's input.

Common trap Assuming the homepage isn't competing because you never targeted anything with it. Homepages accumulate relevance for the main service phrase whether or not anyone intended it, which is why they're the most common half of a collision. Run the filter before concluding otherwise.

7

Rank the gaps into a build order

Everything tagged gap is a page you could write. Most you shouldn't, at least not this quarter. Score each out of 3 on three things and add them up:

  • Intent. Transactional 3, commercial 2, informational 1. How close the searcher is to hiring somebody.
  • Proximity. Already ranking somewhere in the top 50 scores 3, appearing at all scores 2, no impressions at all scores 1. Google having already connected you to a phrase is a large head start, and this is where the source tag from step 2 pays off.
  • Effort. A page you could write in an afternoon scores 3, one needing photos, pricing or research scores 1. Inverted deliberately, so cheap wins float.

Sort descending. The 8s and 9s are the next three pages you build, in that order. Anything at 4 or below is next year's problem and can sit on the sheet without guilt.

Two things this deliberately doesn't weight. Volume, which is why step 5 was optional. And your own enthusiasm, the strongest force in the room and the one most likely to put an interesting article above a boring service page that would have paid for itself.

How to know it worked Every gap has three scores and a total, the sheet is sorted by that total, and you can say out loud why the top item beat the second one. If the answer is that you liked it more, the scores are decoration.

Common trap Building the whole list. Twenty ranked gaps isn't a to-do list of twenty pages, it's a queue you take three from before re-scoring against what changed. Sites that build all twenty ship twenty thin pages, which is what this method exists to avoid.

8

Set the re-check date before you close the sheet

Keyword research goes stale quietly. Your rankings move, changing every proximity score. SERPs change format, so a phrase that returned articles last year returns a map pack now. And you add services, which creates gaps nobody has looked for. Two cadences, both short:

  • Quarterly, 15 minutes. Open the Performance report, sort by impressions, and look only for queries new since last time. Those are Google telling you it has started associating you with something, and they're the cheapest findings you'll get. Add them with the date.
  • Annually, or whenever you add a service. Re-run all eight steps. Expect roughly a third of the sheet to have changed, and at least one phrase you rejected last year to be worth building now.

Put both in a calendar with the sheet's URL in the invite. A reminder that doesn't link to the sheet gets dismissed, and that small mechanical detail decides whether any of this survives a normal working month.

How to know it worked Two recurring calendar entries exist, both linking directly to the sheet, and the sheet has a dated log tab with the first row already filled in. First row is today.

Common trap Treating the first run as the answer. It's a set of predictions, and its real value arrives at the second run when you see which were right, which is also the point most people have lost the spreadsheet.

The whole thing, worked

The Etobicoke drain company, start to finish. Figures illustrative, but the pattern is the most common one this method turns up.

Step 1 found it. Sorting by position rather than clicks put basement drain backup at the top: 74 impressions, position 61. Underneath it, clogged drain etobicoke at 38 and position 44. Meanwhile the site sat at position 12 for hydro jetting toronto, which drew 9 impressions. Ranking well for the phrase nobody types, ranking nowhere for the phrases people do.

Steps 2 to 4 qualified it. Autocomplete returned clogged drain, drain backup and drain smells against almost nothing for hydro jetting, so the phrasing was confirmed rather than a fluke. The SERP showed service pages winning and no map pack, making it buildable by a page rather than by profile work, and transactional: somebody whose basement is filling up is hiring, not reading.

Step 6 found the actual mistake. No page held those phrases as its primary, because every page was written in trade vocabulary. Hydro jetting and trenchless pipe rehabilitation are what the work is called by people who do it. Clogged drain and basement backup are what it's called by people who need it. The site was written for the person selling rather than the person buying, and Google matched it to the symptom queries anyway, on topical proximity, then ranked it 61st for its trouble.

Step 7 put it first. Intent 3, proximity 3 because it was already ranking inside the top 50, effort 3 because the expertise existed and only needed writing down in plain words. Nine out of nine, and the highest score on the sheet.

The lesson generalises past drains. The phrase that feels wrong because it isn't what you call the work is regularly the phrase your customers use, and the gap is widest in trades with real technical vocabulary. You're the least reliable source of words for your own business, and the sheet exists to overrule you.

Copy and paste

Three artifacts. The sheet is the deliverable, the collection run fills it, and the scoring block is what turns it into a decision.

The keyword sheet
PHRASE | SOURCE | IMPR | POS | WINNING PAGE TYPE | MAP PACK |
INTENT | VOLUME | TARGET PAGE | I | P | E | TOTAL | NOTES

SOURCE ....... GSC / AUTO / PAA / REL
               more than one tag = independent confirmation
IMPR, POS .... from the step 1 export. Blank if not ranking
WINNING ...... service / article / directory / profile / brand
MAP PACK ..... yes or no. yes = profile work, not a page
INTENT ....... transactional / commercial / informational /
               navigational / parked
VOLUME ....... the RANGE, not a midpoint. or: skipped
TARGET PAGE .. one page, or the word gap

SCORING, gaps only, 1 to 3 each
  I intent ....... transactional 3 / commercial 2 / info 1
  P proximity .... top 50 already 3 / any impressions 2 /
                   nothing 1
  E effort ....... afternoon 3 / a week 2 / needs research 1
  TOTAL .......... sort descending. build the top three.

RULES
  one primary phrase per page, no exceptions
  never sort this sheet by VOLUME
  parked rows stay. next year starts from them

LOG TAB
  DATE | NEW QUERIES | RECLASSIFIED | BUILT SINCE LAST
The collection run
PRIVATE WINDOW. NOT SIGNED IN. Every time.

CORE PHRASES, pick 2 or 3
  1. [service] + [city]
  2. [service] + [problem it solves]
  3. [service] + [pain point]

FOR EACH CORE PHRASE
  [ ] type it, add a space, then a ... z
      record every suggestion            tag AUTO
  [ ] press enter, expand EVERY People
      Also Ask question, keep expanding
      until they repeat. verbatim.       tag PAA
  [ ] scroll to related searches at the
      bottom, take them all              tag REL

THEN
  [ ] dedupe EXACT matches only
      near-variants stay until step 6
  [ ] flag any phrase carrying 2+ tags
      those are your confirmed ones

TARGET: 30+ rows, every row tagged.

IF AUTOCOMPLETE AND GSC SHARE NOTHING
  your core phrases are not the ones your
  market uses. that is the finding. go back
  to the core phrase list before continuing.
The SERP read, 20 phrases
For each phrase, private window, top 5 results only.

RECORD
  winning page type ... service page
                        article / how-to
                        directory / listicle
                        Google Business Profile
                        national brand
  map pack ............ yes / no

THEN ANSWER
  could a page of the type I would build
  appear in this set?          yes / no

  no  -> not a target. maybe a section or an
         FAQ inside another page. mark parked.
  yes -> carry it into step 4.

READ-OFF TABLE
  how-tos, explainers ....... INFORMATIONAL
  comparisons, best-of ...... COMMERCIAL
  service pages, map pack ... TRANSACTIONAL
  one brand and its pages ... NAVIGATIONAL

MIXED SERP = instructions, not confusion.
  3 articles + 2 service pages means build a
  service page WITH a real explanatory section.

DO NOT label from the wording. Plenty of "how"
phrases return service pages, because the honest
answer to "how do I" is "hire someone".

The whole thing on one page

0 of 8 done

Where this stops

The collection is genuinely easy, and anyone telling you it needs a subscription is selling one. Steps 1 through 3 are typing and reading. Two hours, no skill, and the sheet you end up with is the same sheet I'd build.

The judgment is the hard part, and it lives in two places. Step 4, where a mixed SERP has to be read as an instruction about page format rather than as ambiguity. And step 7, where knowing that a 7 with a strong commercial angle beats an 8 built on a phrase nobody hires from is pattern matching across a lot of sites rather than arithmetic. There's also a limit the method can't fix: this sheet describes demand you can already see, and says nothing about what competitors rank for that never surfaced in your sources.

That prioritisation, and the competitive layer under it, is what the Search Roadmap is for. If you'd rather just find out whether your sheet caught the obvious things, the free audit reads your Search Console and flags the buried queries, which is step 1 done for you in about thirty seconds.

Questions people ask

Keyword Planner is asking for billing information. Do I have to give it?

Google's own documentation states that you must complete account setup by entering billing information to access basic features like getting ideas for new keywords. Some accounts do reach the tool through Expert Mode without it, so it's worth trying, but the documented requirement is billing details. You aren't agreeing to spend anything, and no campaign runs unless you start one. If you'd rather not hand over a card, skip step 5. Volume is the least important column in the sheet and the only one marked optional, because a logarithmic range spanning an order of magnitude can't separate two local phrases anyway. The other seven steps need no Ads account at all.

Every phrase I found shows 10 to 100 searches a month. Is that too small to bother with?

No, and expecting otherwise is the most common way a local owner talks themselves out of a good list. A service business in one city works a small pool by definition, and the phrases with real buying intent are the smallest ones in it. The number that matters isn't searches, it's jobs, so do the arithmetic in those terms: ten searches a month, one converts, a job is worth several hundred dollars, and that page pays for itself in its first month and keeps going. Low volume is only a problem when it arrives with low intent, which is what step 4 is for.

Should the city name be in the phrase or not?

Let the SERP decide, per phrase, rather than picking a policy. Search it both ways in a private window and look at what ranks. If the city-qualified version returns a map pack and local service pages while the bare version returns national how-to content, those are two different queries and only one is yours. Watch for the opposite case too: Google localises many service searches automatically from the searcher's position, so a bare phrase can already be a local query and adding the city targets a phrase fewer people type. Neither answer is universal, which is why this is a lookup and not a rule.

Two of my pages rank for the same phrase. Which one do I remove?

Usually neither. Removal is the last option, not the first. Look at which page Google has been choosing over the last three months, since that's a decision already made and fighting it rarely pays. Make that one primary, then change the other so it stops competing: retitle it, rewrite its H1 towards the phrase it should own, and link to the primary using the primary's phrase as anchor text. That converts a competitor into a supporter. Merge only when the two genuinely say the same thing, delete only when one has no purpose and no links pointing at it, and redirect the old URL either way.

The Search Console AI reports don't show queries. How do I research for AI search?

You research it with the ordinary Performance report, because the AI impressions are already in there. The generative AI report that arrived in June 2026 groups by pages, countries, dates and devices, and Google's documentation confirms it has no query dimension, so it won't tell you which phrases triggered an AI answer. It only tells you whether AI surfaces are sending you anything. The keyword work barely changes: assistants answer questions, so the People Also Ask harvest in step 2 matters more than it used to, and spoken phrases run longer than typed ones. Collect the question forms, answer them plainly on the page, and read the AI report for direction rather than for keywords.

My site is new and Search Console has almost nothing in it. Where do I start?

Start at step 2 and come back to step 1 later. Steps 2 through 7 need no history, because autocomplete, People Also Ask and the SERP describe the market rather than your site, and a brand new business can read them as well as an established one. What you lose is the reality check: seeing that Google already thinks you're relevant to something you never targeted, which is where the most useful findings come from. Search Console needs roughly three to six months before the query list gets interesting. Note the date you ran this, set a reminder six months out, and treat the first run as predictions you'll get to mark.