← All posts
8 min read

How to Get SEO Clients: One City Scan, 46 Leads

How to get SEO clients without cold-guessing. I scanned 100 Orlando HVAC companies in one pass. 37 have no website, 46 are losing jobs. Here is the tool.

The receipt
The problem
Getting local SEO clients is a guessing game. You cold-pitch random businesses and hope one has a budget and a problem on the same day.
The tool
A lead scanner I built on top of my free /seo skill. DataForSEO plus Google Maps.
The solution
Scan a whole niche in a whole city. Score every business by how broken its SEO is. Verify the real ones from the AI fakes. Tear down the one you pitch.
The numbers
100 scanned. 37 with no website. 46 leaking jobs. Top prospect: a perfect domain ranking for nothing, two reviews against the winners' 1,300.

Most people get SEO clients by guessing. Stop.

How to get SEO clients is the process of finding local businesses whose SEO is broken, then pitching the fix before you ask for a dollar.

Here is how almost everyone tries to do it.

They think of a business. They look at its website. They send a cold email.

Then they do it again. One business at a time. Hoping the one they picked has money and a problem on the same day.

That is not a system. That is a slot machine.

So I built the other thing. A scanner that looks at every business in a category in a city, scores each one on how badly its SEO is broken, and hands me a ranked list of who to call first.

I ran it on HVAC companies in Orlando this week. Here is exactly what came back, the one company I would pitch first, the AI scam I tripped over, and the two commands so you can run it yourself.

What "scan a city" actually means

The scanner does one thing. It asks Google Maps for every business in a category and a radius, then scores each one.

The score is not complicated. It is a list of things that are broken, added up. No website. No reviews. A Google profile the owner never claimed. A rating under four stars. One photo.

Higher score means more broken. More broken means a better prospect. Because a broken listing is not a problem. It is a sales argument you can hand them.

The real numbers from one scan

I scanned 100 HVAC contractors inside a 30 kilometer circle around downtown Orlando. One pass.

100
businesses scanned
37
with no website at all
46
leaking jobs you can fix

Thirty-seven of the 100 had no website at all. Just a pin and a phone number.

Eight had zero reviews. Fourteen never claimed their Google profile. Twelve sit under four stars.

Forty-six showed at least one of those problems. That is your call list.

And the gap at the top is brutal. The median business in this scan has 26 reviews. The winners have 1,339. And 1,282. And 1,224. Most of these businesses are not even in the race.

The one I would pitch first

I pulled one prospect off the list and ran the full teardown.

This is a real Orlando HVAC company. I am not going to use their real name, so I will call them Orlando Comfort Air. They did not ask to be in a newsletter.

Orlando Comfort Air bought a near-perfect domain. The kind with the city and the service right in the name. And then they did almost nothing with it.

They have two reviews. Nobody ever claimed their Google profile.

And for the searches that pay rent, Orlando Comfort Air does not show up at all.

"AC repair Orlando," 1,900 searches a month. Not in the top 100. "HVAC Orlando," 1,300 a month. Not in the top 100. "Heating Orlando," 1,600 a month. Nowhere. "AC companies in Orlando," 720 a month. Nowhere.

They own the best-matching domain in the city and they rank for none of it.

The companies winning those searches have over 1,200 reviews each. This one has two.

They own the perfect domain. They rank for nothing. Two reviews while the winners have thirteen hundred.

None of that is a mystery to solve. It is a checklist. And the checklist is the pitch.

The part that should scare every real business

While I was reading the Orlando results, I tripped over the other half of the story. It is uglier than bad SEO.

FOX 35 Orlando ran an investigation this spring. Reporter Marie Edinger searched the same thing I did, "AC repair Orlando," and found the front page flooded with AI-generated websites for HVAC companies that do not exist.

Dozens of them. Identical layouts. Identical fake reviews. Every keyword in the right place.

Then she checked the details.

The addresses were real addresses. They just belonged to a Lowe's. Or a Publix. Or a vacant building.

The phone numbers had Orlando area codes and forwarded somewhere else. She called one and got a text back from a completely different company, from a number she never dialed.

Some of them even showed a BBB A+ badge they were never given.

A perfect website. Nothing real underneath it.

And here is the part that should make you angry. A real owner in the story, Chris Elsis Jr., thirty years in the trade, was doing about $150,000 a month. Until January. Then his phone stopped ringing and his web traffic, in his words, "ground to a screeching halt."

He did nothing wrong. He got buried under bots.

Google did not respond to the station. Getting a fake site taken down can take weeks.

Read that again. A man who has shown up with a real truck for thirty years cannot outrank a website that was generated in an afternoon and points to a Publix.

It was enough to do good work in 2010. It is not enough now.

So how do you tell a real business from a bot?

This is the trap. It is also the trick.

The fakes and the real prospects are mirror images of each other.

A fake has a beautiful website and nothing behind it. A real underserved business has no website and a whole real life behind it.

So you stop trusting the website. The website is the easiest thing in the world to fake. You trust the part that is hard to fake: the Google Business Profile.

That is why my scanner reads the map listing first, not the site. In my Orlando scan, 37 businesses had no website at all. But 26 of them had a claimed Google profile, and 19 had a real review history, most of it going back years.

Those are real companies. Real trucks, real customers, reviews earned one job at a time. They are just bad at the internet. That is the opposite of a fake, and it is exactly who you want to call.

Here is the five-second test for any listing.

  • Drop the address in Street View. A real shop, or a Lowe's parking lot?

  • Call the number. Does a local human answer, or does it forward and text you back as someone else?

  • Read the reviews by date. Years of slow, normal reviews is real. Forty identical five-stars in one week is a bot.

  • Check how long the profile has existed. Real businesses have been on the map for years. Fakes are days old.

  • Look them up on the BBB and the Florida Division of Corporations, and find a real license number on the page. The BBB told FOX 35 the same thing.

A real business fails the website test and passes every one of these. A fake passes the website test and fails all of them.

That gap is the whole opportunity. You are not just doing SEO. You are the person who can prove a real business is real and get it seen over the fakes that are stealing its phone calls.

Build it yourself in two commands

The whole engine is two small scripts you run with Node. I bundled them into my free SEO skill, so if you have that installed you just say /seo prospects HVAC Orlando and it runs them for you. Here is the loop by hand.

One. Find the prospects.

node prospect-scan.mjs --category hvac_contractor --coords "28.5383,-81.3792,30" --niche HVAC --city Orlando --limit 100

It asks Google Maps for every business in that category and radius, scores each one on what is broken, and writes a ranked list.

Swap two arguments and it works in any niche, any town. dentist in Austin. roofing_contractor in Denver. plumber in your own zip code.

Two. Tear down the one you will pitch.

node prospect-audit.mjs --domain theirsite.com --headterm "ac repair orlando" --city "Orlando,Florida,United States"

It pulls what they rank for, the searches they are missing, who is beating them and on how many reviews, and what is broken on their homepage.

Drop that teardown into the dashboard I showed you before, and you have something to send before you ask for a dollar.

Get the tool

I am giving you the whole thing. Both downloads include the lead finder and the rest of the SEO skill. You bring a DataForSEO key, which is pay as you go and costs pennies, and the scripts read it from your environment and never print it.

Free download
SEO skill for Claude Code. Unzip, run ./install.sh, then say /seo prospects HVAC Orlando.
seo-portable.zip · 78 KB
Download
Free download
SEO skill for Claude Cowork. Unzip, drop the seo folder into ~/.claude/skills/, then ask it to find prospects.
seo-cowork-skill.zip · 80 KB
Download

How to get SEO clients every day on a loop

Put it together and it is a loop, not a hustle.

Scan a city. A hundred prospects ranked by pain, for a couple of cents. Verify the real ones from the bots. Pick one. A full teardown of exactly what is costing them jobs. Send it before you ask for a dollar.

Same tool, same city, a fresh prospect every morning. Point it at a new category and it works in any town in the country.

I did not have this six months ago. I had a guess and a cold email, same as everyone.

The difference is not that I work harder. It is that I pointed a pay-as-you-go tool at the part that used to take a week and let it run.

That is the only thing I am actually selling here. Not HVAC SEO. The habit of pointing the new tools at the boring, expensive parts of your work, including telling the real from the fake, and letting them do it.

That is the whole series. One expensive problem from my week, the exact tool, the exact fix, the receipt.

Every Friday. Five minutes. Use it Monday.

FAQCommon questions
  • How much does it cost to find local SEO clients this way?

    A few cents. The scan of about 100 businesses and the teardown of the one you pitch both run on a pay-as-you-go DataForSEO key, and the scripts read your key from the environment and never print it.

  • Does this work outside HVAC and Orlando?

    Yes. Swap the Google Maps category and the city coordinates and it runs in any niche and any town. Dentists in Austin, roofers in Denver, plumbers in your own zip code.

  • How do you tell a real business from an AI-generated fake?

    Trust the Google Business Profile, not the website. A real business often has no website but a claimed profile, a real address you can find in Street View, and reviews earned slowly over years. A fake has a polished site but a phantom address, a forwarding phone, and a burst of identical reviews. Check the BBB and state corporation registration for a real license number.

Solve expensive problems. Every Friday.

Five minutes to read. Use it Monday. Free.

Get the email