Was this helpful?

Find out why competitors outrank you, keyword by keyword

For business ownersFor agencies and marketers
On this page

"They rank higher than you" is an observation. "Their page for that search is a dedicated service page with the town in its title, and yours is a homepage that never names the town" is a finding an owner can act on. This tutorial is the method I use to get from the first to the second, for every search that brings in customers.

What you will do

  • Choose the money keywords customers type when they are ready to buy.
  • Map the competitor field, with the map pack and organic results kept separate.
  • Pull measured rankings and search volumes instead of guessing.
  • Diagnose every keyword a rival wins, with evidence an owner can check.
  • Record each finding in an Improvement Register with a fix, a scope, and a priority.
  • Decide what goes on the homepage and what needs its own page.
  • Re-check the same keywords after the changes ship.

Time and cost

The data pulls are the quick part. Most of the time goes into the diagnosis, because every verdict means measuring two pages side by side.

I pull volumes, rankings, and page data from DataForSEO, a pay-per-call service. For a local business with a couple dozen keywords and a handful of rivals, a full run has cost me under a dollar in API fees; check current prices before you start. Any tool that reports localized map pack and organic positions can do the job.

Choose the money keywords

A money keyword is what a customer types when they are ready to buy, usually a service plus a place. It is rarely the industry term the business uses internally.

  1. Start from the services that pay the bills

    List what the business sells and wants more of, and write one keyword per service line. Start there, not in a keyword tool.

  2. Phrase each one the way customers search

    Use the plain service with the town, such as water heater repair <town>, and add the state for the main ones. Rival page titles are a good source of phrasing you missed.

  3. Add the near-me and bare versions

    Include <service> near me and the service on its own. Google localizes these to the person searching, so they are mostly decided in the map pack, and they often carry more real demand than the phrases with a town name.

  4. Add the national head term

    A local business will not win it, but the owner should see who holds the top of the market and why chasing it is the wrong fight.

  5. Add the brand

    Include the business name, alone and with the town. Brand searches are where I have found a lookalike listing forwarding customers to a lead broker, a problem no service keyword would reveal.

Map the real competitor field

The competitors an owner names and the businesses Google shows are often different lists. And there are two lists, because the map pack and the organic results are separate fields.

FieldMap packOrganic results
What it showsA few Business Profiles with ratings and review countsWeb pages: local businesses, directories, national chains, lead sites
What decides itRelevance, distance from the searcher, and prominence, per GoogleThe page, the site around it, and the links pointing to it
Who you faceBusinesses located near the person searchingAnyone with a strong page, wherever they are based
Where the fixes liveThe Business Profile, reviews, and citationsYour pages, your site's quality, and your links
  1. Search from the town

    Use a tool that sets the search location to the town, or at least a private browser window. Signed-in results from your own office are not what customers see.

  2. Classify what you find

    Label each result as a direct competitor, an adjacent business, a directory or marketplace, or a doorway site that publishes a template page for every town without being local anywhere.

  3. Shortlist six to eight rivals

    Pick the direct competitors that appear most, local ones first, then the regional or national player that holds the head terms.

Pull real rankings and volumes

  1. Pull volumes for the town and the country

    Request monthly search volume for every keyword, located to the town and nationally, and record the cost per click. What advertisers pay for a click is a number owners understand.

  2. Record "no data" as a finding, not a zero

    Phrases with a town name often fall under the reporting threshold. People usually type the bare service and let Google localize it, so the near-me and bare terms tell the demand story.

  3. Count close variants once

    When phrasings such as window tint near me and window tinting near me return identical volume and cost per click, they are usually the same demand grouped together. Count it once.

  4. Pull both result types for every keyword

    At the town's location, pull the organic results at least 20 positions deep, plus the map pack, and record every position. "Not in top 20" and "not in pack" are real values.

  5. Measure each domain's footprint

    Record how many keywords each domain ranks for and its estimated organic traffic, a rough proxy for authority. If you have no link data, say so instead of guessing about links.

  6. Snapshot the Business Profiles

    For the main keyword, record the rating, review count, primary category, and claimed status of every business in the pack, and your own. Map pack losses are diagnosed from this table, not from websites.

The results go into a standings table with one row per keyword. This row shows the format with made-up values:

KeywordVolume (town / US)You: organicYou: mapBest rivalWinning URL
water heater repair <town>no data / <US volume>not in top 20not in packRival A: organic 2, map 1/water-heater-repair/

Diagnose each keyword a rival wins

For each keyword a rival wins, compare the winning page with your best page for it: the one that ranks, or the homepage if nothing does. Skip directories unless a directory beats every local business. The first three groups follow how Google describes local ranking (relevance, prominence, and distance, which marketers often call proximity); the fourth is the site itself.

GroupCheckWhat "they win" looks like
RelevanceDedicated pageThey have a page for this exact service. You rank the homepage or nothing.
RelevanceTitle, H1, URLTheir title and main heading carry the phrase. Your title is the business name.
RelevanceTown namedThey name the town in the title, heading, and body. You never say where you are.
RelevanceDepthTheir page covers the service in detail and yours is a few lines. Measure both word counts.
RelevanceStructured dataThey mark up the business with name, phone, and areas served. You have none.
ProminenceReviewsMore reviews, more recent ones, at a similar or better rating.
ProminenceFootprint and linksTheir domain ranks for far more keywords. Links belong here too, if you can measure them.
ProminenceCitationsThey are listed, with consistent details, in the directories that rank for the keyword.
DistanceLocationMap pack only: they are based closer to the people searching.
Site qualitySpeed and mobileTheir page loads quickly and works on a phone. Yours is slow or breaks.
Site qualityBroken pagesTheir links work. Yours lead to errors, or an indexed page is dead.
Site qualityInternal linksTheir page sits in the main navigation and is linked from related pages.
  1. Open both pages side by side

    Read the title, main heading, URL, and first screen of each. Most relevance gaps show up in the first minute.

  2. Measure instead of judging

    Pull word counts, structured data, internal links, load time, and mobile issues for both pages with a crawler or on-page tool.

  3. Write one verdict per keyword

    Cite at least two measured differences with the numbers, name the winning URL, and end with a fix. Never write "better content" or "stronger SEO" without the measurement behind it.

Keyword:    <service> <town>  (town volume, or no data)
You:        organic <position or not in top 20>, map <position or not in pack>
Winner:     <rival>, organic <position>, map <position>
Their page: <URL>: dedicated? phrase in title and H1? town named?
            word count, structured data, internal links
Your page:  the same facts for your best page
Map pack:   their rating, review count, and category vs yours
Why:        two or three measured differences
Fix:        what they did, written as a register row

For a hypothetical plumber, a finished verdict reads like this: not in the top 20 or the pack for water heater repair plus the town. The winner holds the first map spot with a dedicated water heater page that names the town in its title and heading, runs several times the plumber's word count on the subject, and carries structured data. The plumber's best page is the homepage, which mentions water heaters once. Fix: a dedicated page built to the same depth, with the town in the title and heading.

Real audits turn up findings just as specific. A window replacement company held the first map spot in its small home city for a search with almost no measurable volume, while it was invisible for window replacement in the big city next door. One of its city pages still carried another company's name in the title tag, left over from a template.

Write the Improvement Register

Every verdict becomes at least one row in a single table I call the Improvement Register. Search, website, profile, and tracking findings all go in it, so the report, the website rebuild, and the monthly plan read from one source instead of drifting apart. These rows are hypothetical:

IDFindingEvidenceWho does it betterFixScopePriority
IR-01No page targets water heater repairNot in top 20 or in the pack; ranking pull, datedRival A, dedicated pageBuild a water heater repair page with the town in the title and H1New page1
IR-02Homepage title is only the business nameTitle tag from the on-page pull, datedRival A: service and town in the titleRewrite the title with the main service and the townHomepage1
Evidence
The number, where it came from, and the date it was pulled. A finding without evidence is an opinion.
Who does it better
The rival and the URL that proves it, or "nobody" when it is open ground.
Scope
Where the fix lives: homepage, new page, site-wide, Business Profile, off-site (directories and links), or social.
Priority
1 is money: tied to a keyword that brings in customers or to something losing them now. 2 is foundation: tracking, structured data, citations, and structure the money fixes depend on. 3 is polish.
  1. Merge duplicates

    Several verdicts often point to the same fix. Keep one row and list every keyword it serves.

  2. Pick the one thing

    Choose the single most damaging verified finding an owner can check in thirty seconds. It leads the report. For agencies, prospecting with audits covers how it leads the outreach too.

  3. Close every website row

    Every homepage and site-wide row ends the project marked done or deferred with a real reason, such as "needs the owner's price list." A blank means the site was built without reading the register.

Decide what goes on the homepage

The homepage cannot rank for everything, but it carries the signals every other page depends on. The register's scope column decides where each fix goes.

On the homepage
The main service and town in the title, main heading, and description; structured data with name, phone, and areas served; a short section per money keyword linking to its page; a tap-to-call number in the header; real reviews with their source; the towns you serve in plain text.
On its own page
Each service with enough demand to rank on its own, built to the depth the winning page shows, and hub pages for towns that pass the data checks.
Off the website
Business Profile fixes, reviews, directory listings, and links from other sites.

Which towns earn a page is covered in service-area pages.

Re-check rankings after changes

  1. Save the baseline

    Keep the first pull with its date, location, and depth. Every later comparison uses it.

  2. Ship, then let Google recrawl

    Nothing counts until Google recrawls the changed pages. Request indexing for the most important URLs in Search Console, submit the sitemap for the rest, and judge results over weeks, not days.

  3. Re-pull with identical settings

    Same keywords, same location, same depth. Changing any of them breaks the comparison.

  4. Read each field separately

    Compare map pack and organic positions on their own, and check Search Console impressions for the pages you changed. Note which register rows shipped and whether their keywords moved.

  5. Repeat monthly

    Positions shift from day to day, so read the trend across several pulls, not one result. Add register rows for anything a re-check turns up.

What's next

Rather have me do this for you?

In five business days I walk every path a customer takes to reach you, score each touchpoint, and hand you a ranked list of where leads leak out.

See how I do it

Last updated 2026-09-13 UTC. Written by Tucker Shively.