☎ (650) 651-5127
Original research · Local SEO

What Ranks #1 for "Plumber [City]"? A 100-City Study

We searched "plumber [city]" in the 100 largest US cities, kept the top 10 organic results, and parsed 691 of the pages behind them. What the pages that rank share, what the #1 pages do differently, and where the openings are.

Jessie FadayelSeptember 24, 202619 min read880 organic slots across 100 cities, 691 pages parsed, 504 local business slots measured

Every plumbing owner we talk to asks a version of the same question. What do the pages at the top of Google actually have on them? Not in theory. On the page.

So we went and looked. We searched "plumber [city]" in the 100 largest cities in the United States, kept the top 10 organic results in each one, and then pulled the pages themselves. That is 880 ranking slots and 876 unique pages. We parsed 691 of them, and 504 of the ranking slots turned out to belong to an actual plumbing company. Those are the pages we measured.

The first finding landed before we opened a single page. The most common thing sitting in the top organic slot was not a plumbing company at all.

Social and forum pages take 36% of the #1 slots, against 11% of all 880 slots we collected. Homeowners ask each other who to call on Reddit, Google indexes the answer, and those threads sit above the companies being discussed in them. That is the shape of this SERP, and no title tag changes it.

That sets a realistic target. A local business page holds #1 in 49% of cities and the second slot in 42% of them, across 100 SERPs. In every city we searched, a plumbing company appears in the top 3. So the target is the first company slot on the page, and the call that comes out of it.

This is for plumbing owners and for the people who build their pages. Everything below is on-page: what the page says, what it marks up, what it lets a homeowner do. It is a record of what the winners share, not a list of things that cause rankings. Read the last section before you quote any of it in a meeting.

How we ran the study

One keyword pattern, no variants: the word plumber followed by the city name. One keyword per city. The city list is the 100 largest cities in the United States by population.

We pulled the rankings through the DataForSEO Google organic endpoint, desktop, English, with the location set at city level rather than state or country. City level matters more than it sounds. Set the location to the state and you get a blended result that nobody standing in that city ever sees. We asked for the top 10 organic slots per keyword and kept all of them.

The SERPs came down on 21 September 2026. We captured the ranking pages the same day, then retried the failures on 24 September after a browser install fixed the rendering pass. Every number on this page comes from that one window.

The funnel, in order. 100 keywords returned 880 organic slots. Those slots resolve to 876 unique pages, because one page can rank in several cities at once. We captured 691 of those pages. The captures cover 695 ranking slots and 691 unique parsed pages. Of those slots, 504 belong to a local business page, spread across 501 unique pages. We say slots when we mean ranking positions and pages when we mean distinct URLs. The two numbers are different and we keep them apart all the way through.

Ownership was coded in two passes. A rules file maps known domains to a type: independent, franchise, directory, lead generation, social, media, government, manufacturer, or association. Anything the rules did not recognise went to hand review, one domain at a time, with a sample URL open in a tab. Two rules settled the awkward cases. A company that operates in one metro is independent, however large it is. A brand that operates across several states under a corporate parent is a franchise. Directories and marketplaces cover Yelp, Angi, Thumbtack and the Better Business Bureau. Social and forums covers Reddit and its equivalents. Union locals and trade bodies are associations.

Independent and franchise pages are what we call local business pages, and they are the only pages that feed the on-page factor counts. A directory city page and a forum thread are built for a different job than a plumbing page is, so they are counted in the ownership share and left out of everything else. That is why the ownership numbers sit on 880 slots and the factor numbers sit on 504.

Page type was coded from the URL and the on-page signals: homepage, location page, service page, blog post, or directory listing. A location page is built around a city or a service area. A service page is built around a job, like drain cleaning or water heater replacement. When we talk about inner pages below we mean location and service pages together, as opposed to the homepage.

Then the spot check, which is the step that saves a study from itself. We pulled ten random rows out of the factor table and checked every value by eye against the saved HTML. Three detectors were wrong. Roto-Rooter city pages were being typed as service pages, because the city slug carries a state code on the end. A license number written with a colon after the agency code was being missed. And a navigation link reading "Water Quality FAQs" was being counted as FAQ content on pages that had no FAQ on them. We fixed all three, added tests for each, re-extracted every page and republished the numbers. Every other value on those ten rows was correct.

Two holes worth stating plainly. We captured 691 of 876 unique pages, so 185 did not come back: 102 Yelp pages and 76 Reddit threads, which block automated capture. Those pages still count in the ownership share, because the SERP tells us who ranked, and they are absent from every on-page number in this study. Three independent plumber pages were also lost that way. Second hole: Local Services Ads. The API never returned that feature type in any response, so we do not report on them at all. Absent from a response is not the same as absent from the page, and we will not publish a zero we cannot verify by hand.

What the results page looks like

What shows up on a "plumber [city]" results page, across 100 cities
  • Local map pack100%
  • People Also Ask99%
  • Discussions and forums14%
  • AI Overview6%

Source: 100 desktop SERPs, one per city, September 2026. Local Services Ads and video results never came back in an API response, so they are left out rather than reported as zero.

A local map pack appeared on 100% of the 100 SERPs. Every single one. People Also Ask on 99%. A Discussions and forums block on 14%. An AI Overview on 6%, which is the one number here we expect to look completely different a year from now.

Put that together and the first screen of a "plumber [city]" result belongs to the 3-pack. The ordinary blue links start under it. Which means the map pack and the organic list are two separate projects with two separate levers, and everything in this study is the second project. If you have not claimed and filled out the profile, the on-page work is not your first move.

Forum threads show up in the main organic column far more often than the Discussions block appears at all. The block renders on 14% of SERPs, while Reddit alone holds 22% of the 300 top-3 slots we collected. Those threads are regular results, with the regular click share that comes with the position.

Local Services Ads and video results are off that chart because they never appeared in a single API response. In plumbing you are almost certainly bidding against LSAs in your market, so treat that as a hole in our data rather than as evidence about the SERP.

Who owns the results

Ownership does not drift between all the slots and the top slot. It flips.

Who holds the slots: all 880 organic slots against the 100 #1 slots

All 880 slots

  • Independent local businesses 44%
  • Directories and marketplaces 29%
  • Franchises and national brands 13%
  • Social and forums 11%
  • Media and publishers 1%
  • Government and utilities 1%
  • Unions and trade associations 0%
  • Retailers and manufacturers 0%
  • Lead generation sites 0%

Position #1, one per city

  • Social and forums 36%
  • Independent local businesses 29%
  • Franchises and national brands 20%
  • Directories and marketplaces 14%
  • Government and utilities 1%
  • Retailers and manufacturers 0%
  • Unions and trade associations 0%
  • Lead generation sites 0%
  • Media and publishers 0%

Source: 880 organic slots across 100 cities, September 2026. Ownership was coded by rule and then by hand.

Across all 880 slots, independent plumbing companies are the biggest group at 44%, which is 391 slots. Directories and marketplaces take 29%. Franchises and national brands take 13%. Social and forums take 11%. Media, government, associations, lead generation and manufacturers share what is left.

Now look at only the #1 slot, one per city, 100 of them. Social and forums jump to 36%. Independents fall to 29%. Franchises climb to 20%. Directories drop to 14%. Independents own the body of these results. They do not own the top of them.

Three domains carry most of that story. yelp.com holds 12% of all slots, which is 102 of them, and 14% of the #1 slots. rotorooter.com holds 10% of slots and 18% of #1 slots, so one brand holds the top position in 18 cities. reddit.com holds 9% of slots and 35% of #1 slots. Behind them, angi.com, bbb.org and thumbtack.com appear in volume, with 36, 33and 29 slots, and they rarely reach the top few positions.

Those are facts about the results, not judgements about the businesses in them. Roto-Rooter runs the most consistent set of city pages we parsed, and we will come back to it. The Reddit threads holding these slots were written by homeowners for each other, which is the hardest thing in this set to reproduce. The Yelp city pages holding slots come with review volume and a link profile behind them, and we measured neither.

For planning, the number to use is where the first plumbing company sits once the threads and directories are counted.

Where the first local business sits on the page, across 100 cities
  • A local business holds #149%
  • First local business is #242%
  • First local business is #39%
  • First local business is below #30%
  • No local business in the results0%

Source: 100 desktop SERPs, one per city, September 2026. A local business is an independent or a franchise page, not a directory or a forum.

A local business page holds #1 in 49% of the 100 cities, the second slot in 42%, and the third in 9%. Below the third slot: 0%. No local business anywhere in the results: also 0%. There is always a plumbing company in the top 3 of these results, and the whole fight is over the first two of them.

What kind of page ranks

Of the 504 local business slots we parsed, homepages take 57%. Location pages take 35%. Service pages take 7%. Blog posts take 1%, which is 6 slots out of 504. Almost nothing in these results is a blog post, and if that is where your budget has been going, this is the cheapest finding in the study.

Now narrow to the local business pages that hold #1. That is 49 slots, which is a small pool, so read it as a direction and not as a decimal. Location pages take 55% of them. Homepages take 41%. Service pages take 4%. The body of these results is homepages. The top of them is city pages.

That split runs through the copy as well. Inner pages run a median 2,183 words, with a middle half of 1,601 to 3,361, on 215 pages. Homepages run a median 1,086 words, middle half 620 to 1,667, on 289 pages. Inner pages name their city a median 28 times against 10 for homepages. They carry 10 H2 sections against 6. A city page in these results is a longer, more specific document than a homepage, and it is built to answer one city's version of the question.

Homepages against inner pages: 289 homepages, 215 location and service pages
MetricHomepagesInner pages
Click-to-call link91%100%
Online booking or scheduler43%92%
Contact form in the HTML42%21%
Financing mentioned35%82%
Dollar amounts shown25%67%
Coupons or dollar-off offers27%71%
Maintenance plan or membership14%32%
FAQ content23%58%
FAQPage schema9%45%
LocalBusiness schema55%74%
AggregateRating schema16%53%
Median word count1,0862,183
Median city mentions1028

Source: 289 local business homepages and 215 location and service pages, captured September 2026.

On 215 inner pages against 289 homepages, almost everything that converts a homeowner lives on the inner page. Online booking: 92%against 43%. Financing: 82%against 35%. Coupons or dollar-off offers: 71% against 27%. Dollar amounts shown: 67% against 25%. FAQ content: 58% against 23%. FAQPage schema: 45% against 9%. A maintenance plan or membership: 32% against 14%.

Homepages are ahead on two things, and both of them are odd. A contact form in the HTML, 42% against 21%. And video, 19% against 8%. They also carry better alt text, a median 84% coverage against 55% on inner pages, which is what happens when city pages get stamped out of a template in bulk.

A homepage is a brand page. A city page is a sales page. The pages at the top of these results are sales pages, and they are pointed at one city.

The anatomy of a ranking page

Here is the template nearly everyone runs. All of it sits on 504 local business ranking slots and 501 unique pages, ranked by how many of them carry the factor.

Factor prevalence across 504 local business ranking slots
  • Service keyword in title tag99%
  • Click-to-call link95%
  • City in title tag91%
  • 24/7 or emergency language90%
  • Any JSON-LD schema87%
  • Years in business stated80%
  • Service area list70%
  • Online booking or scheduler64%
  • LocalBusiness schema63%
  • Guarantee or warranty language63%
  • Financing mentioned55%
  • BreadcrumbList schema48%

Source: 504 local business ranking slots, captured September 2026. Independent and franchise pages only.

Five things are effectively universal. The service word in the title tag, 99% of 504 slots. A click-to-call link, 95%. The city in the title tag, 91%. Emergency or 24/7 language in the body, 90%. Some JSON-LD in the head, 87%. None of those separates one ranking page from another here, because nearly every page in the pool carries all five. They describe the floor these results sit on.

The next tier is common but not automatic. A years in business claim, 80%. A service area list, 70%. Online booking, 64%. LocalBusiness schema, 63%. A guarantee or warranty promise, 63%. Financing, 55%. BreadcrumbList schema, 48%. This is the tier where a page starts looking like it was built on purpose rather than installed.

The shape of the page is steadier than the content. Title tags run a median 55 characters, middle half 48 to 63. One H1, with no spread at all: the middle half is 1 to 1. A median 8 H2 sections, middle half 4 to 13. Word count runs a median 1,521, and the middle half is 870 to 2,569, which is wide enough that anyone selling you a target word count is guessing. City mentions run a median 14, middle half 7 to 31. Images run a median 18, middle half 12 to 36, with alt text on a median 75% of them.

Forms are out and schedulers are in. A contact form appears in the HTML of only 33% of pages, which is 168 of 504. Online booking appears on 64%. On inner pages, booking runs to 92% of 215. At #1 it is 76% of 49, while a form is on only 16%. When we first saw the form number we assumed the detector was broken. It was not. Plumbers replaced the contact form with a scheduler that shows real arrival windows, because a homeowner with water on the floor wants a time, not a thank you page. Most of the ones we opened by hand were Housecall Pro or ServiceTitan widgets, with a few plain calendar embeds. We never coded which tool, so that part is an impression rather than a number.

Live chat is the mirror image, and it is the biggest absence in the whole data set: 5% of pages, and 0% of the pages holding #1. Whatever chat does for other trades, the pages in these results are not using it.

What #1 pages do differently

49 of the 100 cities have a local business page in the #1 organic slot. That is the pool for this whole section. It is small enough that a handful of pages moves a percentage point a long way, so treat everything here as direction rather than measurement, and note that every comparison below is against the 504 local business slots in the full set.

#1 pages against the field: 49 #1 slots, 504 local business slots
Metric#1 pagesAll local slots
AggregateRating schema55%31%
FAQPage schema39%24%
BreadcrumbList schema61%48%
Dollar amounts shown55%42%
Financing mentioned67%55%
Coupons or dollar-off offers55%46%
Guarantee or warranty language73%63%
Years in business stated90%80%
Online booking or scheduler76%64%
Contact form in the HTML16%33%
License number shown33%38%
Click-to-call link94%95%
Median word count1,7301,521
Median city mentions2714
Median alt text coverage50%75%

Source: 49 local business #1 slots against 504 local business slots, captured September 2026. A small pool at the top, so read the direction.

The differences cluster in one place: proof and money. AggregateRating schema on 55% of #1 pages against 31% of all 504 local slots. FAQPage schema, 39% against 24%. Dollar amounts shown, 55% against 42%. Financing, 67% against 55%. BreadcrumbList, 61%against 48%. A years in business claim, 90% against 80%. A guarantee or warranty, 73% against 63%.

They are longer and more local, though by less than you might expect. Median word count 1,730 against 1,521, on 49 and 504 pages. Middle half 1,109 to 2,938 against 870 to 2,569. City mentions are the wider gap: a median 27against 14. Title tags run 59 characters against 55, so the pages at the top are using the space they get in the result rather than trimming it.

Now the part most ranking factor studies leave out: where the top pages are no different. Three factors are flat. Click-to-call, 94%against 95%. Emergency or 24/7 language, 92%against 90%. Video, 12%against 15%, low either way.

And two run backwards. A license number is shown on 33% of #1 pages against 38% of the field. Image counts and alt text are lower at the top too: a median 16 images against 18, and alt text on 50% of them against 75%.

None of that says a license number or an alt attribute hurts a page. Across the 49 #1 slots, neither one separates the top of these results from the field, and nor does image polish. A factor that every page already carries cannot explain a difference between those pages. That logic cuts both ways, which is why the flat factors sit here next to the wide ones.

The schema ladder

The schema ladder across 504 local business ranking slots
  1. Any JSON-LD schema87%
  2. LocalBusiness schema63%
  3. BreadcrumbList schema48%
  4. AggregateRating schema31%
  5. FAQPage schema24%

Source: 504 local business ranking slots, captured September 2026. Detected from JSON-LD in the page source.

87% of 504 local business slots ship some JSON-LD. Then it thins out fast. LocalBusiness, 63%. BreadcrumbList, 48%. AggregateRating, 31%. FAQPage, 24%.

Each rung costs more work than the one below it, which is why the numbers fall like this. Any JSON-LD is usually a theme or plugin default, which is how a near-universal number happens. LocalBusiness needs a human to fill in the name, address, phone and hours and keep them right. BreadcrumbList needs a real page hierarchy to describe, which is exactly why it sits at 73% on the 215 inner pages and 29% on the 289 homepages. AggregateRating and FAQPage need content that has to exist first: reviews pulled onto the site, and real answers written on the page.

The last rung has a hole in it. FAQ content sits on 38% of local business slots, while FAQPage schema sits on 24%. So 191 pages wrote the answers and 123 of 504 bothered to mark them up. At the top of the results the two numbers are much closer: 39% FAQ content and 39% FAQPage schema on 49 #1 slots. Whatever else is going on there, the pages at the top are more likely to have finished the job.

The gaps

A gap is a factor most ranking pages do not have. Filling one makes your page different from the other 504 slots we measured, and difference is what a homeowner comparing two plumbers can act on. None of them is evidence that the factor moves a ranking.

  1. Gap 15%

    Live chat widget

    The biggest absence in the set, and 0% of #1 pages have one. We list it for completeness, not as a recommendation.

  2. Gap 215%

    Video on the page

    Film the tech, the truck and one repair. Then keep it off the city page, where video runs 8% against 19% on homepages.

  3. Gap 322%

    Maintenance plan or membership

    Name the plan, price it, put it on the city page, where it already runs 32% against 14% on homepages.

  4. Gap 423%

    Embedded review widget

    Pull real reviews onto the page instead of linking out to them. Only 24% of #1 pages do it.

  5. Gap 524%

    FAQPage schema

    FAQ content is already on 38% of pages. Marking it up is the cheapest move on this list.

  6. Gap 631%

    AggregateRating schema

    The single widest #1 gap: 55% at the top against 31% across the field.

  7. Gap 738%

    License number shown

    The one gap the top pages do not fill either, at 33%. Put it in the footer for the homeowner, not for Google.

  8. Gap 841%

    Upfront or flat-rate promise

    State how pricing works before the truck arrives. Inner pages are already at 51%.

Live chat first, because it is the most dramatic number and the least actionable. Chat sits on 5% of pages, 26 of 504, and on 0% of the pages at #1. A plumbing emergency is a phone call. We are reporting the absence, not prescribing the fix.

Video is on 15% of pages and it is one of the flat factors at the top, 12% against 15% across the 504 local slots, so it is not one of the things that separates the top of these results from the field. Where it plausibly earns its keep is the decision a homeowner makes after they land, because a face and a truck answer the question every homeowner is really asking, which is who is coming to my house.

A maintenance plan or membership shows on 22% of slots, and the split runs the same way as the rest: 32% of 215 inner pages against 14% of 289 homepages. A named, priced plan is the difference between a one-off drain clear and a customer with a reason to call you again. Almost nobody in these results puts one in front of a first-time visitor.

An embedded review widget sits on 23% of slots while AggregateRating markup sits on 31%. Most pages send the homeowner off to a review site to make up their mind. That is a decision handed to someone else's page, and often to a page that is competing with yours in the same results.

FAQPage schema is the cheapest item in this study. FAQ content is on 38% of local business slots and the schema is on 24%. That is 191 pages with the answers written and 123 of 504 that told a machine about them. If you already have an FAQ block, this is an afternoon.

AggregateRating is the widest single gap between the top and the field: 55% of 49 #1 slots against 31% of 504. Mark up ratings you genuinely have, on the page they belong to, and nowhere else. Marked-up ratings that a visitor cannot see on the page break Google's own rules, and we are not suggesting that.

A license number is on 38% of slots, and unusually, it is lower at the top, 33%. In licensed states a homeowner looking for a real contractor looks for the number, so we still put it in the footer. Just do not expect the data to promise you anything for it.

Then the money gaps. An upfront or flat-rate pricing promise sits on 41% of slots. Dollar amounts show on 42%, rising to 55% at #1. Read that second one exactly as it is labelled: our detector sees a dollar sign next to a number, so a dollar-off coupon counts the same as a real starting price. It is not a measure of published pricing. Coupons or dollar-off offers sit on 46% of slots and 55% of #1 slots, and on 71%of 215 inner pages. The pattern across all three is that the pages at the top are more willing to put a number in front of a homeowner than the field is.

Pages that break the template

Four domains in this set are worth naming. Three of them run the template well in different ways, and the fourth holds a top slot without most of it.

rotorooter.com holds #1 in 18 of the 100 cities, which is more top slots than any other single domain in the study. Every one of those #1 pages is a location page, every one carries the city in its title tag, every one has online booking, and every one ships AggregateRating markup. Nearly all of them carry FAQPage schema and a dollar amount. It is the most disciplined execution of the pattern in the whole data set, repeated city by city.

berkeys.com does the independent version of the same thing. It operates in one metro, which is why we coded it independent, and it holds #1 in more than one city, which almost no independent in this set manages. The way it does it is a page per suburb, each one built around that city name, each with a scheduler, a review widget, a years in business claim and a guarantee. Some of those pages run a membership offer. The Dallas homepage ranks too, but the top slots come from the city pages.

precisionplumbinglv.com breaks the page type rule instead. It holds #1 in more than one city with a homepage, not a city page, and it does it by loading that homepage with everything this study found at the top: the city in the title, a scheduler, a dollar amount, an upfront pricing promise, a coupon, a guarantee, a license number, video, and a JSON-LD block that includes Plumber, AggregateRating, OfferCatalog and opening hours. It is a homepage doing a city page's job.

The fourth is the exception rather than a model. 24hourplumber.nyc holds the #1 slot in New York with one of the shortest homepages in the set, far under the median 1,086 words we measured across 289 ranking homepage slots. No scheduler, no FAQ, no AggregateRating, thin schema. What it has is a phone number, an emergency promise and a New York address. These numbers describe a tendency across 504 slots, and a single page can hold a slot without them.

The playbook

Four moves, in the order we would do them.

Move one: give the city its own page. Location pages take 55% of the local business #1 slots on 49 slots, while homepages take 57% of all local slots and 41% of the top ones. The city page that ranks is not a doorway. It runs a median 2,183 words against 1,086 for a homepage, names its city a median 28 times against 10, and carries 10 H2 sections against 6. So: one page per city you actually serve, the city in the title tag and the H1, the neighbourhoods and the landmarks named in the body, the local phone number, the local techs, and the jobs you do in that city written out. We rebuilt a Hillsborough plumbing company's site. It scores a perfect PageSpeed and it holds a local 3-pack placement. A plumbing client of ours saw leads rise fivefold.

Move two: put a scheduler where the contact form is. At #1, online booking is on 76% of 49 slots and a contact form is on 16%. Across the field it is 64%against 33%, and on inner pages booking hits 92% of 215. The change is concrete: replace the name, email and message box with a scheduler that shows real arrival windows, keep the click-to-call link above it, and keep both visible without scrolling. Click-to-call is already on 95% of pages, so having one only puts you where the field already is.

Move three: mark up what is already on the page. The schema ladder falls off a cliff after the plugin defaults: 87% have some JSON-LD, 63% have LocalBusiness, 31% have AggregateRating and 24% have FAQPage, on 504 slots. At the top those last two run 55% and 39%. In order: complete LocalBusiness with the real name, address, phone, hours and service area, add BreadcrumbList so the city page sits in a hierarchy, mark up the FAQ block you already have, and add AggregateRating only for ratings a visitor can see on the page.

Move four: put the proof and the money on the page. This is where the gaps are. A dollar amount, 42% of the field and 55% at the top. An upfront or flat-rate promise, 41%. Financing, 55% of the field and 67% at the top. A named maintenance plan, 22%. Real reviews embedded on the page, 23%. A license number, 38%. Pick the ones you can say truthfully, put them on the city page rather than the homepage, and make them specific: a starting price for a drain clear beats "affordable rates", and a named plan beats "ask us about maintenance".

What this study does not tell you

This is an on-page study and nothing else. We measured what is in the HTML of the pages that rank. That is the whole scope.

Everything here is correlational. These are the things that pages which rank share, and the things the pages at the top share more often than the field does. We cannot say any of it causes a ranking, and we did not run a test that could. A page could carry every factor in the study and rank nowhere. One of our outliers ranks #1 while missing most of them.

We did not measure the things that most plausibly explain these results. No backlinks, no link authority of any kind. No review count and no star rating. No Google Business Profile strength, and a map pack appeared on 100% of the 100 searches, so that is a large part of the page we never looked at. No brand and no brand search volume. No site age. No ad spend, and no Local Services Ads presence, which the API never returned. Any of those could sit behind every difference we found.

It is one capture window: SERPs pulled on a single day, 21 September 2026, pages captured that day and the failures retried on 24 September. Local results move week to week. Desktop only, and English only, with the location set at city level. Mobile SERPs for these keywords look different and we did not measure them.

Some pages are missing. We captured 691 of 876 unique pages. Yelp and Reddit pages blocked us, and they count in the ownership share only, so every on-page number here describes the pages we could reach. Three independent plumber pages were lost the same way. The #1 pool is 49 slots, which is small, and every split we drew from it should be read as a direction.

Two detector caveats carry through to the numbers. Dollar amounts shown means our parser saw a dollar sign next to a number, so a coupon counts the same as a starting price. FAQ content means a real question heading or a block of them, after we fixed a detector that was counting navigation links. One more reading trap: a factor we did not find at the top, like a license number, is not evidence against it. It only means it is not what separates these pages from each other.

We measured pages, not outcomes. Nothing in this study tells you which of these pages converts a homeowner into a booked job. That is the number that actually matters, and it is not in a SERP.

Get your page scored against the winners

We run your site through the same checklist we used in this study and send back a prioritized fix list. No pitch deck.

Get my teardown

Stop losing customers to competitors who rank.

No contracts, cancel anytimeFree website audit included$0 setup fees, always
Book a call