How to Prospect Local SEO Clients (And Stop Wasting Time on Bad Fits)

Most freelance SEO pitches fail before they start — wrong business, wrong timing, wrong market. Here's a systematic approach to finding prospects worth pursuing.

The biggest time sink in freelance local SEO is not the work itself — it is pitching businesses that were never going to hire you. Wrong industry, no budget signal, market already saturated with strong competitors, or a business whose SEO is already solid and does not need help.

A systematic prospecting process filters bad fits before you invest hours in outreach. Here is how to build one.

What makes a local business a good SEO prospect

Before you look at a single business, define your qualification criteria. A strong local SEO prospect has most of these:

SEO pain — weak or no website, missing GBP data, no local ranking presence for primary category queries. A business that already ranks in the map pack for its main terms does not need you yet.

Revenue potential — the business is in a category where a single new client is worth meaningful money. A med spa booking a single Botox client covers weeks of retainer. A law firm signing a single case covers months. A restaurant adding ten covers per week barely moves the needle.

Competitive opening — the top map pack positions in the market are not locked down by large franchise operations with dedicated SEO teams. A solo local competitor you can outrank is a realistic target. A market dominated by five-location chains is not.

Operational legitimacy — the business has reviews, is clearly active, and has been operating long enough that they can actually close new clients. A two-week-old listing with zero reviews is not a pipeline; it is a risk.

Conversion gap — they are getting search impressions (visible in their GBP data if you can see it, or estimable from category competition) but losing those visitors due to a weak website or no website at all.

Finding prospects worth auditing

The manual approach: search your target category and city in Google. Scroll the map pack and the organic results. Every business in positions 4–10 of the organic results, or not in the map pack at all, is a potential prospect. Visit their site. Check PageSpeed Insights. Run their URL through Google's Rich Results Test to see whether they have any structured data. Check if their GBP is complete.

This works but it is slow. Doing it thoroughly for 20 prospects in a single city takes most of a day.

I built WeaveSEO to compress this step. It queries Google Places for up to 60 local businesses in any category and city, bulk-audits every site, and surfaces the weakest SEO scores first — so you are looking at a ranked list of prospects ordered by opportunity, not scrolling search results manually. The qualification layer then scores each prospect across six dimensions: SEO pain, revenue potential, competition, conversion gaps, content depth, and local visibility, with a STRONG / QUALIFIED / PASS verdict on each.

Qualifying a prospect before you reach out

Once you have a list, spend five minutes per prospect validating the opportunity before writing a single word of outreach.

Check their GBP: Is it complete? Do they have photos, services listed, regular posts? An incomplete GBP is a direct service opportunity — easy to fix, measurable improvement, fast result.

Run PageSpeed Insights: A performance score below 60 on mobile tells the story immediately. Slow sites lose visitors and rankings. This is a concrete, provable problem you can fix.

Search their primary category + city: Where do they appear? Not in the map pack? On page two organically? Either is a qualifying signal.

Check for schema: View their page source and search for application/ld+json. No schema means no structured data at all — a gap you can close that directly affects AI Overview visibility and rich result eligibility.

Estimate their revenue per client: A quick look at their service menu gives you a floor. If a single booked client is worth $200, your SEO work needs to produce two new clients per month to break even for a $400 retainer. If a single client is worth $3,000, one new client every three months justifies a meaningful engagement.

The outreach frame

Cold outreach that leads with "I can improve your SEO" is ignored. Every SEO freelancer says that. Outreach that leads with a specific, observable problem performs better.

Weak: "I noticed your site could use some SEO improvements. I specialise in local search for businesses like yours."

Stronger: "I ran a quick audit on your site — your Google Business Profile is missing a services list, your homepage has no schema markup, and your page load time on mobile is 7 seconds. Businesses in your category with these gaps are typically invisible for 'near me' searches. Happy to show you what fixing these would look like."

The second version demonstrates competence before asking for anything. It names the specific problems. It signals that you understand their business category. That is the difference between a cold pitch and a warm observation.

Turning an audit into a proposal

A prospect who responds to a specific observation is already pre-qualified — they have engaged with your diagnosis. The proposal at this point should cover:

  1. The specific issues found in the audit (named and explained plainly)
  2. What you will do to fix each one, in plain language
  3. What success looks like — a realistic outcome, not a guaranteed ranking promise
  4. Scope, timeline, and price

Google's guidelines on making realistic SEO claims are worth knowing before you write any proposal — promising first-page rankings for specific terms is not only misleading, it undermines your credibility with anyone who has been burned by that promise before.

A proposal that says "I will complete your GBP, add LocalBusiness schema, optimise your service pages for [specific queries], and get your Core Web Vitals into the green — work that typically produces measurable map pack movement within 60–90 days" is more convincing than any ranking guarantee.


What to read next

← All posts Read a case study →