Skip to main content
Skip to main content
Local SEO

Local SEO by Industry in Minnesota: Who AI Recommends and What the Data Shows (2026)

By Scott Foster15 min readLocalLift™ Score: 94
Nine glowing trade icons — wrench, hard hat, HVAC fan, leaf, tree, hammer, house, roof, tooth — with an AI search beam highlighting one: local SEO by industry in Minnesota

Most local SEO advice treats every trade the same: fix your schema, collect reviews, build citations. But when someone actually types "best plumber near me" into an AI assistant, it's fair to wonder whether what gets cited back looks the same for a plumber as it does for a dentist three towns over. So instead of guessing, we asked.

We ran nine live, web-grounded AI queries — one real hiring question per trade, phrased the way an actual customer would ask it, across five Minnesota cities in the south metro — and read every source the model cited in its answer. This post breaks those nine snapshots down trade by trade, paired with the population-level data from our companion study of 1,058 Minnesota chamber-member business websites: who has schema markup, who's fast on mobile, who's even still online.

Read each section for what it is. One query, one city, one answer. Not a scoreboard.

How to read this post

Every number below comes from our own research, with the method stated inline and in full at the bottom of the page. This post is a companion to our broader Minnesota local SEO statistics study, which covers the crawl-wide baselines referenced throughout.

The nine queries

One query per trade — snapshots, not a ranking.

QueryUnique sources (own / directory / other)Takeaway
"Who is the best plumber in Eagan, Minnesota?"1 / 3 / 0The plumbing company's own site was cited once; the rest of the answer routed through directories.
"Who is the best general contractor in Burnsville, Minnesota?"0 / 2 / 1No contractor's own site was cited in this answer.
"Best HVAC repair company in Rosemount MN"1 / 4 / 1One own-site citation out of six; directories carried most of the answer.
"Recommend a good landscaping company in Burnsville, MN"0 / 3 / 0Every cited source was a directory.
"Who should I call for tree removal in Apple Valley MN?"2 / 1 / 1Two of four citations pointed to actual tree-service businesses, not listings.
"Who is the best handyman in Eagan, Minnesota?"0 / 4 / 0Every cited source was a directory.
"Who is the best real estate agent in Rosemount, Minnesota?"0 / 2 / 0Both citations were listing portals, not an agent's own site.
"Who is the best roofing company in Lakeville, Minnesota?"0 / 2 / 0Both citations were directories.
"Who is the best dentist in Apple Valley, Minnesota?"1 / 3 / 0One own-site citation out of four; the rest went to directories.

3x3 grid of small-multiple bar charts, one panel per trade in the order Plumbers, Contractors, HVAC companies, Landscapers, Tree services, Handyman services, Real estate agents, Roofing companies, Dentists. Each panel shows three tiny bars for unique cited sources from that trade's single query — own site, directory, and other — with the query's city as a sublabel.

One query per trade — snapshots, not a ranking. Own / directory / other unique-source counts: Plumbers (Eagan) 1/3/0, Contractors (Burnsville) 0/2/1, HVAC companies (Rosemount) 1/4/1, Landscapers (Burnsville) 0/3/0, Tree services (Apple Valley) 2/1/1, Handyman services (Eagan) 0/4/0, Real estate agents (Rosemount) 0/2/0, Roofing companies (Lakeville) 0/2/0, Dentists (Apple Valley) 1/3/0.

A gap the data itself reveals

Before the trade-by-trade breakdown, one honest caveat about where this data comes from. The 1,058 businesses in our chamber-directory crawl population, the same population behind every baseline stat below, include only 2 plumbing companies and 0 handyman services. Chamber membership skews toward trades that join formal business associations and away from trades hired by phone and word of mouth. That's not a flaw in this post's math. It's a finding about which local businesses show up in the directories AI and search engines already trust, and which ones don't.

SEO for Plumbers in Minnesota

When we asked "Who is the best plumber in Eagan, Minnesota?" the AI's answer cited four unique sources. One was the plumbing company's own website. The other three were directories, the kind of listing sites that show up whether or not the business has done anything to earn the citation.

That lines up with a broader gap: across 922 live Minnesota business websites we crawled, 41.3% have no visible phone number anywhere on the site. For a plumber, that's not a minor omission. Most plumbing calls happen because something is actively breaking, and a customer standing in a flooding kitchen isn't going to hunt for a contact form. If your number isn't visible in the header on a phone screen, you're asking someone mid-crisis to work harder than they will.

The fix is unglamorous: a click-to-call number in the header and footer, a dedicated service page for the city you actually work in instead of one generic "service areas" list, and real project photos with captions naming the job and the neighborhood. AI models ground their answers in whatever text they can read and trust. Give them something to read.

See what we build for plumbing companies.

Contractor SEO in Minnesota

For "Who is the best general contractor in Burnsville, Minnesota?" the AI cited three unique sources. None was a general contractor's own website: two were directories, and one was a different kind of source entirely. Zero out of three is a small number from a single query, but it's worth sitting with.

It lines up with the largest gap in our crawl: 87.7% of 922 live Minnesota business sites have no LocalBusiness schema markup, the structured data that tells search engines and AI systems what a business is, where it operates, and what it does. "General contractor" covers a wide range of project types, and without schema or clear service pages, there's nothing telling an AI model which projects a given business actually takes on.

The specific move for this trade: GeneralContractor or LocalBusiness schema on every page, plus individual project write-ups with location, scope, and outcome, not a photo gallery with no text. AI systems can't read a photo. They can read a paragraph that says what the job was and where it happened.

Our local SEO approach for contractors covers the rest.

HVAC SEO in Minnesota

"Best HVAC repair company in Rosemount MN" pulled six unique sources, and only one pointed to the HVAC company's own site. The other five split between directories and one other source.

Two population numbers matter here together. We already saw that 41.3% of the 922 live sites we crawled have no visible phone number; for HVAC, a trade built on furnace-dies-at-midnight calls, that's the same problem, on a schedule that's rarely convenient. Pair it with mobile speed: across a 94-site sample where we ran Google Lighthouse mobile audits, the median performance score was 35 out of 100. A customer searching "HVAC repair near me" from a cold house at 11pm on a phone doesn't wait for a slow site to load. They call whoever answers first, or whoever the AI mentions first.

The play for HVAC specifically: make the phone number the first thing that loads, before the images and before the fonts finish rendering, and test your actual mobile speed instead of assuming a "mobile-friendly" theme means fast.

See what we build for HVAC companies.

Landscaping SEO in Minnesota

"Recommend a good landscaping company in Burnsville, MN" returned three unique sources, and all three were directories. No landscaping company's own site made the cut in this particular answer.

That's worth pairing with a different finding from our rankings data: across a random 138-site sample, the median Minnesota business website already ranks for 707 keywords in Google, and 0% ranked for zero keywords. So "invisible in search" isn't the right description of what's happening across this population. These sites show up. The real issue is what they show up for. Seven hundred scattered keywords, mostly brand terms and incidental long-tail phrases buried past page one, don't win an AI citation or a local-pack spot on their own. A landscaping company doesn't need to rank for more things. It needs to rank meaningfully for "landscaping company [city]" and the handful of services, retaining walls, drainage, spring cleanup, that actually convert.

That's a strategy question more than a technical one, and it's exactly what our companion analysis of local ranking factors digs into: which signals separate a page that ranks from a page that gets chosen.

Our local SEO approach for landscaping companies applies that thinking directly.

Tree Service SEO in Minnesota

For "Who should I call for tree removal in Apple Valley MN?" two of the four cited sources were actual tree-service companies, not listings. One directory and one other source rounded out the answer.

Tree removal is urgent, often storm-driven work, and the businesses cited directly tend to have something concrete for an AI model to ground on: service pages naming the specific job (storm cleanup, stump grinding, emergency removal) rather than one general "services" paragraph. That matters more than it sounds, because 12.9% of the 1,058 chamber-member websites in our crawl population were dead or unreachable entirely, domains that no longer resolve, sites returning errors. A tree service that wants to keep showing up has to clear a lower bar than most people assume: stay online, keep the domain current, and don't let the hosting quietly lapse.

Being reachable is the floor. Being specific about what you do and where is what turns a citation into a call.

See what we build for tree service companies.

Handyman SEO in Minnesota

"Who is the best handyman in Eagan, Minnesota?" produced four unique sources, and all four were directories. No handyman business's own site was cited.

Handyman work covers an unusually wide range of small jobs: drywall patching, deck repair, fence fixes, furniture assembly. That breadth can work against a business online, because generic pages that just say "handyman services" give an AI model nothing specific to point to. It's a sharper version of a problem we see across the board: 30.5% of the 922 live Minnesota sites we crawled have no meta description at all, meaning even the basic summary that tells a search engine, or an AI crawler, what a page is about is simply missing.

For handyman businesses, the fix is to break "handyman services" into the dozen jobs people actually search for, each with its own short page: a paragraph on what the job involves, roughly what it costs to have done locally, and a photo of finished work. That's the kind of specificity directories can't offer, and it's exactly what an AI answer can quote directly.

Our local SEO approach for handyman services is built around that.

Real Estate SEO in Minnesota

"Who is the best real estate agent in Rosemount, Minnesota?" returned only two unique sources, and both were listing portals, not an individual agent's website.

Real estate is a special case because the competition isn't really other local agents. It's Zillow, Realtor.com, and Redfin: sites built entirely on structured data, with millions of pages that already tell search engines and AI systems exactly what they are. An individual agent competing against that with an unmarked-up bio page is fighting with one hand tied, and most are. 87.7% of the 922 live Minnesota business sites we crawled have no LocalBusiness schema markup, the same gap flagged above, and against national portals it's the difference between competing and not really competing at all.

The move that actually helps: RealEstateAgent schema on the agent's own site, individual neighborhood guides instead of just listings, and structured markup on every property page. None of it will out-rank Zillow for a generic "homes for sale" search. It can make the agent's own site the thing an AI cites when someone asks who to work with, not just what to buy.

See what we build for real estate agents.

Roofing SEO in Minnesota

"Who is the best roofing company in Lakeville, Minnesota?" pulled two unique sources, and both were directories.

Roofing searches spike hard and fast, after a hailstorm, a wind event, a tree branch through a shingle, and the customer is usually standing outside with their phone, not sitting at a desk. That makes mobile performance more than a technical nicety for this trade specifically. Across our 94-site Lighthouse sample, 74% scored in Google's "poor" mobile band, below 50 out of 100. A roofing company's site loading slowly during the exact week storm-damage searches spike is a self-inflicted wound at the worst possible moment.

The play here is narrow and specific: a fast-loading storm-damage landing page with before-and-after photos, insurance-claim guidance, and a click-to-call button that works without waiting for the rest of the page to render. Build it before the next storm, not during it. Lighthouse scores don't fix themselves overnight, and neither does an AI model's read on whether a site is worth citing.

Our local SEO approach for roofing companies covers what that looks like in practice.

Dental SEO in Minnesota

"Who is the best dentist in Apple Valley, Minnesota?" returned four unique sources. One was the dental practice's own website; the other three were directories.

That one-in-four is roughly in line with the combined split across all 11 queries in this probe: 24.4% of 41 unique cited sources pointed to the recommended business's own site. For dentists specifically, the gap we'd flag first is structural: 27.7% of the 922 live Minnesota sites we crawled don't have a single H1 heading, the main on-page heading that tells search engines and AI models what a page is actually about. A practice page with no H1 naming the service and the city hands an AI model nothing to quote.

Pair that fix with something dental practices already have going for them: review velocity. Patients see a dentist repeatedly, which means more chances to ask for a review than a one-time service call gets. A steady, current stream of reviews, not a pile from three years ago, feeds both the local pack and, increasingly, what an AI model treats as current evidence that a practice is active and trusted.

See what we build for dental practices.

Check your own citation odds

Curious whether an AI assistant would cite your site or a directory instead? Run the free AI visibility checker to see who currently gets cited for your trade and city, or grade the fundamentals — schema, speed, titles, phone visibility — with the free SEO scorecard. Minnesota businesses that want the fixes handled end-to-end can see how we help you get found first.

Methodology

AI-citation probe (n = 11 queries, 41 unique cited sources). We ran live, web-grounded queries to a frontier model (GPT-5.5 with web search, via the DataForSEO AI Optimization API) using natural local-hiring questions across Minnesota cities. Nine of the eleven map to the trade sections above, one query per trade, shown verbatim in the headline table. Six of those nine (plumber, roofing, dentist, real estate agent, handyman, general contractor) share one template, "Who is the best {trade} in {city}, Minnesota?" — five added in August 2026 specifically to reduce prompt-wording variation between trades, plus the original plumber query, which happened to already match that phrasing. The other three (HVAC, landscaping, tree removal) use individually worded phrasing from the earlier run. City and trade still vary across all nine queries, which is why each section is reported as its own single-query snapshot rather than compared against the others. The remaining two queries in the 11 (a butcher shop and a hair salon) feed the combined split above but aren't broken out into their own sections, since those trades don't have dedicated pages on this site.

Counting unit. We count unique normalized cited sources per response: lowercase, scheme and "www." stripped, trailing slash and query string removed. A source cited twice within one answer counts once. Raw citation counts are stored in the underlying dataset but never reported as the headline figure.

Classification. Every unique cited source was classified as the recommended business's own site, a third-party directory or platform (BBB, Angi, HomeAdvisor, Yelp, listing portals, and similar), or other (mainly manufacturer or unrelated sites), each with a one-line rationale recorded in the underlying dataset.

Population baselines (used in each trade section above). From our companion crawl of 1,058 Minnesota chamber-member business websites: 87.7% no LocalBusiness schema, 41.3% no visible phone number, 30.5% no meta description, and 27.7% no H1 heading, all against 922 confirmed-live sites; 12.9% dead or unreachable against the full 1,058; a median Lighthouse mobile score of 35 with 74% scoring "poor," against a 94-site sample; and a median of 707 ranked keywords against a 138-site sample. Full methodology for these numbers, including how each sample was drawn, is in our Minnesota local SEO statistics study.

What this data can't tell you. Nine queries is nine data points, not nine trends. We label the whole exercise a probe, not a survey. City, trade, and, for three of the nine, prompt wording all vary between queries, so no sentence in this post ranks one trade's citation pattern against another's, and none should be read that way. We're reporting what one AI model said once, for one real question, in one Minnesota city, per trade, paired with population-scale data that actually supports a broader claim.

Cite this research

Referencing these numbers? Link to this page as the source, or to our broader Minnesota local SEO statistics study for the population-level baselines behind each section. For questions about the data or methodology, contact us. This page updates as we expand the probe; the date at the top reflects the most recent revision.

Share this article:
SF

Founder & CEO of VeloRank. Google Analytics and HubSpot certified digital marketing expert with over a decade of experience helping Minnesota SMBs dominate local search.

Get More Local SEO Insights

Subscribe to our newsletter and receive weekly tips to dominate local search rankings.

Start Free