Seibs Management CoSeibs.
blog/2026-05-2712 min read

How to Find Local Businesses Without Websites: 2026 Playbook

How to find local businesses without websites at scale: plumbers, salons, contractors. The lead list every web designer and SEO agency needs.

How to Find Local Businesses Without Websites: 2026 Playbook

You are a freelance web designer doing roughly $15,000 a year. The math works if you can land two $1,500 sites a month. The bottleneck is not your portfolio or your pricing. It is the four hours every morning you spend Googling "plumber Akron Ohio", clicking through Yelp listings one by one, and writing down which ones have a Facebook page where the website link should be. By 11 a.m. you have maybe 30 leads and zero coffee left, and you still have not sent a single proposal. This post is the way out of that loop.

The question of how to find local businesses without websites has a real answer in 2026, and it does not involve buying Apollo, paying Fiverr scrapers, or grinding through Google Maps manually. SBA data shows that about 27% of US small businesses still operate without a real website, and Google's own small-business reports put the figure even higher for trades and personal-care verticals. That is your TAM. The work is enumerating it, filtering it, and getting it onto a spreadsheet you can call from.

Why current alternatives fail

Web designers and local SEO agencies have been trying to solve this problem for a decade. The standard playbook is broken in four specific ways.

Manual Google Maps scraping. Open Maps, search "barber shop in Cleveland", click each pin, check whether the "Website" button exists. Works for the first 20 leads, breaks for the next 200. No export, no bulk filter, no way to ask "show me every barber in Cuyahoga County where the Website field is empty." Burn three hours, produce a list a Chrome extension could have built in 90 seconds. Maps also throttles aggressive clicking and kills the session.

Apollo and ZoomInfo. Wrong tool, wrong category. Apollo sells contacts at companies that already exist in their B2B graph: companies with websites, LinkedIn pages, and tracked headcount. A two-person plumbing shop in Toledo with no website is a ghost to Apollo. ZoomInfo is the same problem at ten times the price. Paying $12,000 a year for ZoomInfo to find local businesses without websites is like buying a fishing boat to catch raccoons.

Buying lead lists on Fiverr. Type "scrape local businesses without websites" and get 200 sellers offering 5,000 leads for $50. About 80% are reselling the same 2019 ListJet export, 15% are scraping Maps with a ToS-violating Chrome plugin that gets blocked halfway through your order, and the rest cost as much as doing it yourself. "No website" is usually inferred from a missing column, not a verified absence.

LinkedIn Sales Navigator and ListSource / Reonomy / D&B Hoovers. Same problem: Sales Nav's "Company" object expects employees and a domain. ListSource and Reonomy are built for credit underwriting and commercial real estate; they will sell you a clean list of county LLCs with no idea whether those LLCs have websites and no field to filter on it.

The category does not have a real incumbent. That is the opportunity.

The actual workflow: how to find small businesses without websites at scale

Six steps, in order. Each one is mechanical. You can run this for a single ZIP code in 20 minutes or fan it out across a state in an afternoon.

Step What you do Time Tools
1. Pick verticals Choose 2-4 trades you can sell to 30 min Notebook
2. Pick a market One ZIP, city, county, or DMA 5 min Census Reporter
3. Pull the source list Scrape Google Maps / Yelp / industry directories 5-30 min Apify actor or custom script
4. Filter for weak web presence No domain, Facebook-only, Wix free, expired 1 min Pandas / spreadsheet
5. Score by quality Reviews, photos, recency, owner identifiable 5 min Same script
6. Contact and close Call, walk in, or send a Loom Ongoing Phone, feet, Loom

Step 1: pick the verticals you can actually sell to

Not every no-website business is a good customer. The vertical determines whether they have money, whether they understand they need a site, and whether a $1,500-$3,000 build fits their budget.

Tier 1 (high close rate, high willingness to pay): plumbers, HVAC, electricians, roofers, garage-door repair, med spas, dental, chiropractors, PT, pool builders, fence installers, tree services, solo law firms.

Tier 2 (slower close, lower ticket): salons, barbershops, nail studios, restaurants, food trucks, personal trainers, yoga studios, pet groomers.

Skip anyone whose customers walk past the storefront and decide on the spot (convenience stores, laundromats). They do not feel the pain.

Step 2: pick a target market

Three good options:

  • One ZIP code you live in. Lets you walk in. Conversion goes up 4-8x when you can hand someone a printed mockup.
  • A 30-mile radius around a major metro. Big enough TAM, small enough to dominate.
  • One county. Works well for trades because licensing tends to be county-level.

The number you want is 80-400 raw leads. Below 80 you starve. Above 400 you cannot work the list before it goes stale.

Step 3: pull the source list

This is the one step that used to take all day. You have two options.

Option A: use the local-leads-without-websites Apify actor. Pulls Maps results for your verticals and ZIP/city, fetches each profile, flags no-website, Facebook-only, free Wix/Weebly subdomain, expired domain, or "coming soon" placeholders. One of several lead-finders in the seibs.co portfolio; the differentiator is the weak-presence detection, not the Maps scrape. Pay-per-record is $0.020.

Option B: build it yourself. Apify's Google Maps Scraper gets raw results under $0.005 per record. Write 100-150 lines of Python to fetch each GMB profile, check the website field, follow redirects, classify. Budget 6-10 hours the first time. Maintenance is real because Google reshuffles its DOM every few months.

Either way, the output is a CSV with name, address, phone, vertical, Google rating, review count, and a web_presence_tier column.

Step 4: filter for weak web presence types

"No website" is a spectrum. Five buckets:

  1. True no-website. Google has no link field populated. Highest sell rate.
  2. Facebook-only. Website field points to facebook.com/businessname. Owner already gets it; second-highest sell rate.
  3. Free-tier site. Subdomain on wix.com, weebly.com, godaddysites.com, business.site (Google's free product, deprecated 2024). Owner already pays for something and can be moved.
  4. Expired domain. Field populated but NXDOMAIN, parking page, or registrar landing. Awkward conversation, high close rate.
  5. Yelp/Instagram in the website field. Same psychology as Facebook-only.

Skip businesses where the website field points to a real working domain even if the site is ugly. That is a redesign sale with a longer cycle.

Step 5: score by quality

A lead with 47 five-star reviews and recent photos is worth ten leads with no reviews and a 2019 cover image. Score on:

  • Review count (proxy for revenue). 25+ reviews is the floor.
  • Average rating. 4.0+ filters out the businesses going under.
  • Photos in the last 90 days. Means the owner is still alive and engaged.
  • Owner name identifiable. A name in the GMB profile or Yelp listing means you can write a personal opener.
  • Phone number is mobile or business line, not a national 800. 800 numbers mean franchise or call center, which means corporate handles marketing.

Sort descending by composite score, take the top 50, and that is your week.

Step 6: contact and close

Three channels, ranked by close rate:

  1. Walk in with a printed homepage mockup. 30-40% close rate, but does not scale beyond a ZIP code.
  2. Phone call between 10 a.m. and 11:30 a.m. on Tuesday-Thursday. 8-15% close rate. Ask for the owner by name. Lead with "I noticed you do not have a website yet."
  3. Personalized Loom video to the GMB email. 3-6% close rate but scales infinitely. Open the Loom on their GMB profile, say their name, and show a 60-second mockup.

Skip cold email blasts to scraped addresses. CAN-SPAM applies to B2B and the inbox-deliverability tax is not worth it at this volume.

The actor in code: 60 lines, copy-pasteable

"""
Pull local businesses without real websites for a given vertical + market,
filter for the weak-presence tiers worth contacting, save to CSV.
"""

import csv
import os
from apify_client import ApifyClient

APIFY_TOKEN = os.environ["APIFY_TOKEN"]
OUTPUT_CSV = "no_website_leads.csv"

client = ApifyClient(APIFY_TOKEN)

run = client.actor("seibs.co/local-leads-without-websites").call(run_input={
    "verticals": ["plumber", "hvac", "electrician", "roofer"],
    "location": {
        "city": "Akron",
        "state": "OH",
        "radius_miles": 25,
    },
    "web_presence_tiers": [
        "no_website",
        "facebook_only",
        "free_tier",      # wix free, weebly free, business.site, godaddysites
        "expired_domain",
    ],
    "min_review_count": 25,
    "min_rating": 4.0,
    "require_recent_photos_days": 90,
    "max_records": 300,
})

rows = []
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    rows.append({
        "name": item.get("name"),
        "vertical": item.get("vertical"),
        "phone": item.get("phone"),
        "address": item.get("address"),
        "owner_name": item.get("owner_name") or "",
        "google_rating": item.get("rating"),
        "review_count": item.get("review_count"),
        "web_presence_tier": item.get("web_presence_tier"),
        "evidence_url": item.get("evidence_url"),
        "lead_score": item.get("lead_score"),
        "gmb_url": item.get("gmb_url"),
    })

rows.sort(key=lambda r: r["lead_score"] or 0, reverse=True)

with open(OUTPUT_CSV, "w", newline="", encoding="utf-8") as f:
    writer = csv.DictWriter(f, fieldnames=list(rows[0].keys()))
    writer.writeheader()
    writer.writerows(rows)

print(f"Wrote {len(rows)} leads to {OUTPUT_CSV}")
print("Top 5 by score:")
for r in rows[:5]:
    print(f"  {r['lead_score']:.2f}  {r['name']:35s}  {r['web_presence_tier']:15s}  {r['phone']}")

A 300-record run at $0.020 per record is $6.00. Run it weekly for a single market and your lead-gen cost is $24/month. Run it across five markets and you are at $120/month with roughly 1,500 fresh leads. Compare to one Apollo seat at $588/year that does not even cover this category.

What you can do with this data

Eight concrete plays. Pick two or three.

1. The freelance "first site" funnel. Solo web designer, $1,500-$3,000 builds, two-week delivery. Pull 200 leads/month in one metro, work the top 50, close 3-5 a month. At $2,000 average ticket, that is $6,000-$10,000 MRR-equivalent for a one-person shop.

2. The local SEO agency upsell. Sell the site at near-cost ($800), bundle 6-month local SEO retainer at $400/month. LTV per client jumps from $1,500 to $3,200 and you stop being a one-and-done vendor.

3. The franchise-area-development play. A regional HVAC franchise needs 12 new dealer territories filled. Sell them a list of every independent HVAC operator with no website in their target markets. $5K-$15K per territory survey.

4. The directory-arbitrage SaaS. Build a niche directory ("BestPlumbers[City].com"), put no-website businesses on it free with a "claim this listing" CTA, and upsell hosting + a mini-site on claim.

5. The Google Business Profile setup service. Sell GMB optimization for $300-$500 as the foot in the door, then upsell the site at month two.

6. The done-with-you templated site. $99/month including hosting, domain, and a one-page Tailwind template. Volume play that closes well at the low end of the trades market.

7. Lead-list resale to web designers. Sell the filtered list to other web designers at $0.50-$1.00 per lead, 200-lead minimum orders. Wraps the $0.020 actor cost into a 25-50x markup.

8. Yellow-pages-style ad sales. Build a free directory site for a single town, sell premium placement on it. Still works in towns under 100K where the local paper is dying.

Use case Ideal vertical mix Pricing Notes
Freelance first sites Tier 1 trades $1,500-$3,000 one-time Highest hourly rate
Agency SEO upsell Trades + healthcare $800 + $400/mo Best LTV
Franchise territory survey Single trade $5K-$15K project Hardest to source
Niche directory SaaS One vertical / one DMA Freemium 6-12 mo to revenue
GMB optimization Any $300-$500 Easy yes
Done-with-you template Tier 2 trades $99/mo Volume
Lead-list resale Multi-vertical $0.50-$1/lead Lowest effort
Local directory ads Single DMA $50-$200/mo per advertiser Town < 100K

Honest limitations

This stack works. It is also not magic. The things to know before you run it on a real client.

Apple Maps coverage is not in v1. The actor queries Google Maps and a few public directories. Businesses that exist only in Apple Maps or only on TomTom-fed in-dash systems will be missed. For most trades and personal-care verticals in the US this is a rounding error; in a few categories (rural agriculture, marine) the miss rate is higher.

"Website not detected" is not proof of no website. A non-trivial number of businesses have a domain that is not linked from their GMB profile, never indexed by Google, or only printed on a truck. The actor returns a website_field_status so you know whether the absence is "Google has no record" (high confidence) or "Google has a record that points to Facebook" (highest confidence) or "Yelp listing has a website field that GMB does not." A small percentage of leads on your list will turn out to have a real site you missed.

CAN-SPAM and TCPA apply to B2B. CAN-SPAM applies to commercial email regardless of B2B or B2C status. TCPA restricts cold SMS and auto-dialer calls to mobile numbers. Walking in is unregulated. Phone calls to landline business numbers are mostly unregulated outside of state-level do-not-call lists. Cold email needs a valid physical address, a working unsubscribe link, and accurate sender info. Read the rules once.

Free Apify plan has a $5/month credit ceiling. A 250-record run uses your entire free credit. The paid plan starts at $39/month and includes $39 of platform credits, so the real per-record cost on the paid plan is the actor fee plus negligible platform overhead. Budget accordingly.

Lead freshness matters more than volume. A 90-day-old list of no-website businesses is half-dead. Run weekly per market and contact within two weeks.

Some "no-website" businesses are running a deliberate strategy. Instagram-DM bookings is a real strategy for some salons and personal trainers. Deprioritize categories where Instagram-native bookings are common.

FAQ

Q: Is it legal to scrape businesses without websites from Google Maps? A: Public Google Maps listings are publicly accessible business data. Scraping them at reasonable rate and using the output for B2B outreach is legal in the US (hiQ Labs v. LinkedIn, 9th Circuit, 2022). Do not bypass Google logins, do not violate the Maps API ToS if you use it, and respect CAN-SPAM / TCPA on the outreach side.

Q: What is the difference between this and Apollo? A: Apollo indexes companies that already exist in B2B databases, which by definition means companies with websites and a digital footprint. The local-leads-without-websites actor indexes the opposite: SMBs whose primary presence is a Google Maps pin and nothing else. Different category, different buyer, different price.

Q: How much does it cost per lead? A: $0.020 per record on the DIAMOND tier of the actor. A 250-lead run is $5.00. Compare to $0.50-$2.00 per lead on a Fiverr scraper of unverified quality or $4-$15 per contact on a B2B platform that does not even cover this category.

Q: Can I get email addresses too? A: The actor returns the email address from the GMB profile or business directory when available. Roughly 30-45% of no-website local businesses have a public email; the rest have only a phone number. Pair with seibs.co/email-verifier-batch before sending.

Q: How accurate is the no-website detection? A: The actor classifies each record into no_website, facebook_only, free_tier, expired_domain, or has_real_site. False-positive rate on no_website is roughly 5-10% (some businesses have a domain not linked from any directory). The facebook_only and free_tier tiers are near 100% accurate because they are positive detections, not absences.

Q: Can I use this without coding? A: Yes. Apify runs the actor in the browser. Fill in the input form (verticals, city, ZIP, filters), click Start, wait 2-8 minutes, download the CSV. No Python required.

Q: What is a "weak website" versus no website? A: Weak website = a free Wix/Weebly/business.site subdomain, an expired domain, a Facebook page in the website field, or a "coming soon" placeholder. No website = the Google Maps website field is completely empty. Both are sellable; weak websites typically close faster because the owner has already committed to needing one.

Q: How often is the data updated? A: Live at crawl time. The actor pulls fresh Google Maps results on every run. If a business built a site yesterday, the next run will reclassify them. Run weekly per market for best freshness.

Q: Do you offer a free tier? A: The Apify platform free tier ($5/month in credits) covers roughly 250 records. The actor itself has no separate free tier. For a real evaluation, the $39 Apify Starter plan gives you about 1,950 records of headroom after platform overhead.

Q: Can I get a sample? A: Run the actor with max_records: 10 against your own ZIP code. Total cost: $0.20. That is the sample.

Try the actor

Run local-leads-without-websites on Apify. Free Apify plan gets you 250 records to evaluate. Pair with:

  • home-services for deeper coverage of plumbers, HVAC, electricians, and roofers with revenue and crew-size signals.
  • salon-spa-lead-finder for the personal-care vertical with booking-system detection.
  • b2b-sales-triggers when you want to move upmarket from main-street SMBs to companies with funding events and hiring surges.

Related reading on this blog: B2B intent data on a budget for the upmarket version of this play, and the seibs.co portfolio for the full set of lead-finder actors.

About the author

I run a one-person MSP and build B2B web-scraping actors at apify.com/seibs.co when I am not on an incident bridge. The portfolio has 30+ live actors covering local lead-gen, intent data, regulatory filings, and AI agent wrappers, all pay-per-event so you only pay for what gets emitted. Reach me at seibs.co.

next step / 30 seconds

Not sure which actor matches your use case?

Answer 3 questions and we surface the 2-3 best matches in the portfolio. No email gate, no signup.