Local Business Website Audit — Lead-Readiness Scanner avatar

Local Business Website Audit — Lead-Readiness Scanner

Under maintenance

Pricing

from $4.00 / 1,000 audits

Go to Apify Store
Local Business Website Audit — Lead-Readiness Scanner

Local Business Website Audit — Lead-Readiness Scanner

Under maintenance

Audit local business websites for lead-readiness — contact form, click-to-call, live chat, booking, mobile, HTTPS — and get a graded, sales-ready lead list. Paste sites or give a niche + city.

Pricing

from $4.00 / 1,000 audits

Rating

0.0

(0)

Developer

James Taylor

James Taylor

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

a day ago

Last modified

Categories

Share

This local business website audit scores how well a local business's homepage is set up to catch leads — and hands you back a graded, sales-ready hit-list. Point it at a list of sites, or give it a niche + location and it discovers the businesses for you, then grades each one: a 0–100 score, an A–F grade, a ranked list of what's missing, and a one-line headline naming the single biggest gap — phrased so you can drop it straight into an outreach email.

It's built for digital agencies, web designers, marketers, freelancers and SEO consultants who want to find local business leads that are visibly leaking enquiries — and walk in already knowing what to fix.

Why lead-readiness, not a generic Lighthouse audit

Most website audit tools on the Store are Lighthouse clones: they hand you a wall of performance metrics, render-blocking scripts and accessibility nits. None of that tells you whether the business is losing money. This is a website audit tool for agencies that scores the thing agencies actually get paid to fix: lead capture.

It checks whether a homepage gives a visitor any way to become a lead — a contact form, click-to-call, live chat, online booking, a mobile experience that works — and weights those signals heaviest. A site can ace Lighthouse and still score an F here because there's no way to contact the business. That gap is the pitch. The output is a list you can act on today, not a report you have to interpret.

What it does

  • Audits a local business's public homepage (one page, no crawl) and scores its lead-readiness 0–100.
  • Returns an A–F grade, a ranked missing list, and a single agency-ready headline calling out the biggest gap.
  • Detects seven signals: contact form, click-to-call, live chat, online booking, mobile-optimised, HTTPS, and meta description.
  • Pulls each business's public contact email and phone and a best-effort business name from the page.
  • Two ways in: grade a list of sites you already have, and/or give it a niche + location and it discovers local businesses via Google search, then grades them. Use either — or both in one run.
  • A maxScore hit-list filter so you can return only the weak sites — a ready-made prospect list of businesses doing it badly.

Who it's for

  • Digital & marketing agencies sourcing local prospects who are demonstrably losing leads — and opening with the fix.
  • Web designers & freelancers finding sites that need a contact form, booking widget or mobile rebuild.
  • SEO consultants layering lead-capture gaps on top of an organic pitch.
  • Sales teams building an outbound list where every row comes with a graded, quotable reason to reach out.

Input

Provide sites, or niche + location, or both. With neither, the run stops with a clear "nothing to audit" error.

FieldTypeDefaultDescription
sitesarray[]Sites to grade. Each item is a URL string or a {name, website} object. Use this, niche+location, or both.
nichestring""Business type to discover, e.g. "dentists". Needs location.
locationstring""City/area to discover in, e.g. "Leeds". Needs niche.
maxResultsPerQueryinteger20How many businesses to discover per niche+location query (1–50).
maxSitesinteger100Hard cap on total sites output/charged in the run (1–1000) — caps your spend. With a maxScore filter, more sites may be fetched than output, but you're only charged per output.
maxScoreinteger100Hit-list filter. Only output sites scoring ≤ this. 100 = output everything; lower it (e.g. 55) to return only weak sites = ready leads.
searchEnginestring"google"Discovery engine: google or bing. Google is default and auto-falls back to Bing if it returns nothing.
maxConcurrencyinteger5Parallel site fetches (1–10).
proxyConfigurationobjectGOOGLE_SERPDefaults to Apify's GOOGLE_SERP proxy for discovery; also used as a residential fallback when a homepage blocks the direct fetch.

Example input

Grade a list of sites you already have (sites mode):

{
"sites": [
{ "name": "Bright Smile Dental", "website": "brightsmiledental.co.uk" },
"https://example.com",
"acmeplumbing.co.uk"
]
}

Find and grade local businesses by niche + city (discovery mode), keeping only the weak ones:

{
"niche": "plumbers",
"location": "Manchester UK",
"maxResultsPerQuery": 20,
"maxScore": 55
}

You can pass both — the actor grades your sites and discovers the niche in the same run.

How to run

  1. Click Try for free (or open the actor in your Apify Console).
  2. Either paste your sites (URLs and/or {name, website} objects) or type a niche and location like dentists / Leeds.
  3. (Optional) Set maxScore below 100 to return only the weak sites — your ready lead list.
  4. Set maxSites to cap your spend.
  5. Click Start. When the run finishes, open the Dataset tab and export to JSON/CSV/Excel, or pull it via the API (below).

Run it on a schedule (Apify Schedules) to grade a fresh batch of a niche each week, or call it from Make / Zapier / n8n via the Apify integrations.

Output

Each item in the dataset is one audited business:

{
"type": "audit",
"businessName": "Bright Smile Dental",
"url": "https://brightsmiledental.co.uk",
"score": 45,
"grade": "D",
"headline": "No way to capture leads on the homepage — visitors leave without a trace.",
"missing": ["No contact form", "No live chat", "No booking widget"],
"leadReadiness": {
"contactForm": false,
"clickToCall": true,
"liveChat": false,
"booking": false,
"mobileOptimized": true,
"https": true,
"metaDescription": false
},
"contactEmail": "hello@brightsmiledental.co.uk",
"contactPhone": "+44 113 496 0000",
"source": "discovered",
"query": "plumbers Manchester UK"
}

Field notes:

  • score is 0–100 — the sum of the lead-capture signals the homepage has. The weights are: contact form 25, click-to-call 20, live chat 15, online booking 15, mobile-optimised 15, HTTPS 5, meta description 5. A missing contact form alone costs 25 points, which is why form-less sites grade low.
  • grade maps the score to a letter: A ≥ 85, B 70–84, C 55–69, D 40–54, F < 40. The lower the grade, the warmer the lead.
  • missing lists the signals the homepage lacks, ranked by weight (heaviest first) — e.g. ["No contact form", "No live chat", "No booking widget"]. This is your fix-list for the pitch.
  • headline is the single biggest gap rewritten as a one-line, agency-ready opener — e.g. "No click-to-call — mobile visitors can't reach them in one tap." When a site is already strong, it reads "Solid lead capture — only minor quick wins left."
  • leadReadiness is the raw boolean for each of the seven signals, if you want to filter or chart them yourself.
  • contactEmail / contactPhone are the public business details lifted from the page — null when the homepage doesn't expose them. businessName comes from the page title (or the domain) when you don't supply a name.
  • source is "discovered" (found via search) or "provided" (from your sites); query holds the discovery query in discovery mode and is null for provided sites.

A run that audits nobody doesn't return a silent blank dataset — it sets a clear status message with tips (add sites, broaden niche+location, or raise maxScore).

Export & API

# Last run's dataset items as JSON
curl "https://api.apify.com/v2/datasets/<DATASET_ID>/items?format=json&token=<APIFY_TOKEN>"

Or use the run-sync-get-dataset-items endpoint to run-and-wait in a single call — handy for embedding the actor in your own backend.

Limitations

  • Homepage-only (no crawl). It reads one page per business and never follows links. Widgets that load purely via client-side JavaScript on large SPA-style sites may not appear in the static HTML, so they can be missed — but real small-business sites almost always carry their form, chat and booking markup in the HTML, so detection works well on the local sites this is built for.
  • Discovery is search-snippet based. A niche+location query returns a focused ~10–25 businesses — a hit-list, not a 1,000-row Maps dump. Run more niches and locations (or add them to sites) for broader coverage.
  • Location precision. A bare city name can match the wrong country — "Manchester" may surface Manchester, USA. Qualify it ("Manchester UK") for accurate local results.

Compliance

This actor fetches public homepages only, identifies itself with a normal browser User-Agent, reads a single page (no crawl, no login, no cookies), and uses Apify's SERP proxy for discovery at modest concurrency. The contact email and phone it returns are public business details published on the page. You are responsible for using the output in line with any privacy and outreach laws that apply to you (GDPR, PECR, CAN-SPAM, and the rest).

FAQ

How do I find local business leads with this? Give it a niche and location (e.g. dentists / Leeds) and it discovers local businesses via Google, grades each homepage, and returns them ranked by how badly they're set up to capture leads. Set maxScore below 100 to get back only the weak ones — that's your ready-to-pitch lead list.

What does the grade mean? The grade is the lead-readiness score as a letter: A ≥ 85, B 70–84, C 55–69, D 40–54, F under 40. A high grade means the homepage gives visitors plenty of ways to become a lead; a low grade means it's leaking enquiries — which makes it a warmer prospect for an agency.

Can it find leads by niche and city? Yes. That's discovery mode — niche + location finds the businesses and grades them in one run, no list required. Discovery returns a focused ~10–25 businesses per query, so run several niches or cities for more.

Does it find contact emails and phone numbers? Yes, when they're public on the homepage. Each result includes contactEmail and contactPhone lifted from the page (mailto:/tel: links and text patterns). They're null when the site doesn't publish them — we never fabricate a detail.

How is it priced and how do I control cost? Apify Pay-Per-Event — you're charged per site audited. You're only charged for sites that are actually output, so when you set a maxScore filter, weak sites you keep are charged and the strong ones filtered out are not. Unreachable sites are skipped and never charged. Set maxSites to cap the run.

How do I get only the weak sites? Lower maxScore. Leave it at 100 to output every site graded; set it to 55 to return only sites scoring 55 or below (grade C and worse), or 40 for the worst offenders only. The filter runs before billing, so you only pay for the leads you asked for.

Does it work on JavaScript-heavy sites? It reads the homepage's static HTML, so anything present there — including the script tags and markup that chat, booking and form widgets inject — is detected. On large SPA sites that render everything client-side, a widget loaded purely by JS can be missed. Real small-business sites usually ship that markup in the HTML, so detection is reliable on the local sites this is designed for.

What's the difference between sites mode and discovery mode? Use sites mode when you already have a list of businesses to grade — paste URLs or {name, website} objects. Use discovery mode (niche + location) when you want the actor to find the businesses first. You can combine both in a single run.

What if a run audits nobody? You'll get a clear status message (not a silent empty dataset) suggesting fixes — add sites, broaden your niche+location, or raise maxScore.


Want to turn these graded leads into booked calls?

This actor finds the businesses leaking leads and tells you exactly why. If you'd like the whole loop — discovery, contact enrichment, AI-personalised outreach that opens with their grade, and reply handling — done for you, that's what we build at SignalEngine. It's speed-to-lead in a box: this actor is a taste of the engine that powers it.

Need named decision-makers and their work emails instead of a website grade? See our LinkedIn Profile & Email Finder.