# Web Design Lead Finder & Website Audit (`overbifrost/web-design-lead-finder-website-audit`) Actor

Find local web design leads from Google Maps by business type and location, or audit your own prospect list. WIE checks each business website for evidence-backed technical opportunities, returns the exact reason and checked scope, and bills only conclusive evaluations. Inconclusive results are free.

- **URL**: https://apify.com/overbifrost/web-design-lead-finder-website-audit.md
- **Developed by:** [Lasse](https://apify.com/overbifrost) (community)
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $1.29 / 1,000 business evaluateds

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.
Since this Actor supports Apify Store discounts, the price gets lower the higher subscription plan you have.

Learn more: https://docs.apify.com/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

### Find web design leads with evidence-backed website checks

Find local **web design leads** from Google Maps by business type and location, or audit your own prospect list. WIE checks each business website for concrete technical opportunities and returns the exact finding, supporting evidence, checked scope, and known limitations.

Use it for web design prospecting, website-maintenance leads, local SEO or marketing prospect qualification, and API-driven agency workflows. WIE does not hide failed or blocked checks behind a lead score: uncertain evaluations remain explicit.

### Quick start

#### Find local business leads automatically

1. Choose **Find businesses automatically**.
2. Enter a **Business type** such as `plumber`, `dentist`, `electrician`, or a local-language equivalent.
3. Enter a **Location** such as `London, UK` or `Austin, Texas`.
4. Choose the maximum number of businesses.
5. Run the Actor and review the **Opportunities** Dataset view.

Discovery runs inside this Actor through WIE's first-party Maps capability. There is no separate child-Actor discovery charge.

#### Audit your own prospect list

Choose **Analyze my own list** and either:

- add business websites directly in the form; or
- select an Apify Dataset whose rows contain `website`.

Optional `businessName` and `externalId` values are carried through to the results. Selected Dataset access is READ-only.

### What website opportunities WIE checks

WIE uses bounded HTTP checks and deterministic rules. Qualifying findings can include:

| Checked signal | What WIE can report |
| --- | --- |
| Maps source has no website link | `SOURCE_ONLY_OPPORTUNITY` with an explicit source-level limitation |
| Homepage still fails after the required confirmation | Confirmed homepage HTTP error |
| HTTPS is unavailable while HTTP is reachable | Confirmed HTTPS availability opportunity |
| Selected contact page remains unavailable after confirmation | Confirmed contact-page availability issue |
| A sampled internal link repeatedly fails | Confirmed broken sampled internal link |
| Homepage title is missing or empty | Confirmed missing-title finding |

WIE also returns lower-severity advisories for missing viewport metadata, HTTP not redirecting to HTTPS where safely testable, and mixed-content references visible in served HTML.

A missing website link in Google Maps means only that the checked source record did not provide a website. WIE does **not** claim that the business has no website elsewhere.

### Opportunity statuses

| Status | Meaning |
| --- | --- |
| `CONFIRMED_OPPORTUNITY` | At least one qualifying deterministic finding was confirmed with evidence. |
| `NO_CONFIRMED_OPPORTUNITY_IN_CHECKED_SCOPE` | Required checks completed over their bounded scope and no qualifying finding was confirmed. |
| `SOURCE_ONLY_OPPORTUNITY` | The checked Maps source record supplied no website link. This is not proof that no website exists elsewhere. |
| `INCONCLUSIVE` | Required coverage was insufficient because of blocking, network failure, unsupported content, or another explicit limitation. |

WIE does not promise that a technical opportunity will convert into a customer.

### Why use WIE for web design prospecting

- **Evidence instead of guesses.** Findings link back to what was actually observed.
- **Explicit unknowns.** Blocked, failed, partial, or unsupported checks do not silently become a pass or a negative result.
- **No opaque global lead score.** Qualification comes from inspectable deterministic reasons.
- **Two workflows.** Discover local businesses automatically or qualify a list you already own.
- **Machine-readable output.** Use the Dataset, Apify API, exports, schedules, or MCP-compatible workflows around the Actor.

This makes WIE useful when you want a smaller list of prospects with reasons you can inspect rather than another raw business-data dump.

### Pricing

Pay per event, with platform usage included. **All prices below are USD per event**, not per 1,000 events.

| Event | Free | Starter | Scale | Business |
| --- | ---: | ---: | ---: | ---: |
| `business-evaluated` | $0.00199 | $0.00176 | $0.00152 | $0.00129 |
| `apify-actor-start` | $0.00005 | $0.00005 | $0.00005 | $0.00005 |

Apify charges one start event at up to 1 GB of memory; higher memory adds start events. The start event also applies when no business evaluation is chargeable. The minimum allowed maximum-cost-per-run cap is $0.005; this is a spending cap, not a minimum bill.

A persisted conclusive result may be charged for:

- `CONFIRMED_OPPORTUNITY`;
- `NO_CONFIRMED_OPPORTUNITY_IN_CHECKED_SCOPE`;
- `SOURCE_ONLY_OPPORTUNITY`.

`INCONCLUSIVE` does not incur a `business-evaluated` charge.

First-party Maps discovery is part of this Actor run. WIE does not start a separate Maps Actor and does not add a separate discovery event charge. The [Pricing tab](https://apify.com/overbifrost/web-design-lead-finder-website-audit/pricing) is authoritative for the active rate on your plan.

### Output

The default Dataset stores one normalized business per row with:

- business and source context;
- website input and observed URL information;
- qualification status;
- confirmed findings and advisories;
- coverage and explicit gaps;
- diagnostics and limitations;
- chargeability;
- bounded inline evidence and provenance.

Useful Dataset views include the business-level opportunity overview, confirmed findings, and advisories.

KVS records include:

- `RUN_SUMMARY`;
- `EVIDENCE_MANIFEST`;
- `CHARGE_JOURNAL`.

Evidence is bounded inline rather than stored as arbitrary full-site snapshots.

### Website checks and limits

For a supplied or discovered website, WIE can check:

- homepage retrieval, redirects, and status;
- HTTPS/TLS acquisition and safe HTTP -> HTTPS behavior where testable;
- missing or empty title;
- viewport meta presence;
- mixed-content references in served HTML;
- up to two deterministic contact-page candidates;
- a deterministic sample of up to ten same-site internal links;
- selected repeat confirmation before high-value failure findings.

A CAPTCHA, anti-bot interstitial, timeout, or materially partial check cannot be used as evidence that a page or feature is absent.

#### Not included

WIE is a prospect-qualification Actor, not a complete SEO or visual-design audit. It does not currently provide:

- visual design grading or screenshots;
- browser rendering of the business website;
- Lighthouse or Core Web Vitals;
- complete SEO or accessibility certification;
- form submission;
- guesses such as "bad design", "outdated website", or "lost leads";
- contact enrichment, cold outreach, or CRM actions;
- AI-generated pitches.

### API fields

| Field | Mode | Notes |
| --- | --- | --- |
| `mode` | both | `discover` or `direct` |
| `searchTerm` | discover | one business type, 2–100 chars |
| `location` | discover | one city, region, or area, 2–200 chars |
| `maxPlaces` | discover | 1–200, runtime default 50 |
| `discoveryLanguage` | discover | locale such as `en`, `nb-NO`, `de-DE` |
| `discoveryProxyStrategy` | discover | AUTO, NONE, datacenter, or explicit residential |
| `targets` | direct | up to 500 `{website, businessName?, externalId?}` rows |
| `sourceDatasetId` | direct | READ-only selected Dataset |
| `maxConcurrentlyAnalyzedBusinesses` | both | 1–20 website analyses in parallel |

### FAQ

#### Can WIE find businesses without websites?

It can find Google Maps business records where the checked source provides no website link. That is a useful web design prospecting signal, but it is not proof that the business has no website elsewhere.

#### Is this a full website or SEO audit?

No. WIE performs a bounded set of technical checks designed for prospect qualification. It deliberately avoids claiming full SEO, accessibility, performance, or visual-design coverage.

#### Can I analyze leads I already have?

Yes. Use direct mode with inline website rows or a selected Apify Dataset.

#### Does WIE find emails or send outreach?

No. WIE currently focuses on evidence-backed qualification. It does not enrich contacts, send messages, submit forms, or generate AI pitches.

#### Why can a result be inconclusive?

Some websites block automated checks, fail temporarily, return unsupported content, or cannot be checked with enough coverage. WIE keeps those cases explicit instead of turning uncertainty into a false negative.

# Actor input Schema

## `mode` (type: `string`):

The Store example opens direct mode for a fast first run. Switch to automatic discovery to find local prospects by business type and location.

## `searchTerm` (type: `string`):

Business type or search term for web design prospecting, for example plumber, dentist, electrician, or accountant.

## `location` (type: `string`):

City, region, or area where you want to find local business leads.

## `maxPlaces` (type: `integer`):

Maximum number of businesses to discover and evaluate (1-200). Runtime default: 50.

## `targets` (type: `array`):

Add one prospect per row. Only Website is required. A single Example Domain row is prefilled so the first run stays fast; replace it with your own prospects. Maximum 500 entries.

## `sourceDatasetId` (type: `string`):

Select an Apify Dataset whose rows contain 'website'; optional 'businessName' and 'externalId' are carried through.

## `maxConcurrentlyAnalyzedBusinesses` (type: `integer`):

Maximum number of business websites checked in parallel (1-20).

## `discoveryLanguage` (type: `string`):

Optional Maps locale such as en, en-GB, nb-NO, de-DE, or fr-FR. Runtime default: en.

## `discoveryProxyStrategy` (type: `string`):

AUTO uses the normal configured Apify proxy route and never silently selects residential traffic. Residential is explicit.

## Actor input object example

```json
{
  "mode": "direct",
  "searchTerm": "dentist",
  "location": "London, UK",
  "maxPlaces": 5,
  "targets": [
    {
      "website": "https://example.com/",
      "businessName": "Example Domain"
    }
  ],
  "maxConcurrentlyAnalyzedBusinesses": 8,
  "discoveryLanguage": "en"
}
```

# Actor output Schema

## `results` (type: `string`):

Default Dataset containing one evidence-backed qualification row per normalized business.

## `runSummary` (type: `string`):

Run-level counts, discovery status, analysis telemetry, charge counts, and diagnostics.

## `evidenceManifest` (type: `string`):

Manifest for bounded evidence and any referenced artifacts produced by the run.

## `chargeJournal` (type: `string`):

Audit journal for WIE pay-per-event charging decisions made during the run.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "mode": "direct",
    "searchTerm": "dentist",
    "location": "London, UK",
    "maxPlaces": 5,
    "targets": [
        {
            "website": "https://example.com/",
            "businessName": "Example Domain"
        }
    ],
    "maxConcurrentlyAnalyzedBusinesses": 8
};

// Run the Actor and wait for it to finish
const run = await client.actor("overbifrost/web-design-lead-finder-website-audit").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "mode": "direct",
    "searchTerm": "dentist",
    "location": "London, UK",
    "maxPlaces": 5,
    "targets": [{
            "website": "https://example.com/",
            "businessName": "Example Domain",
        }],
    "maxConcurrentlyAnalyzedBusinesses": 8,
}

# Run the Actor and wait for it to finish
run = client.actor("overbifrost/web-design-lead-finder-website-audit").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print(f"💾 Check your data here: https://console.apify.com/storage/datasets/{run.default_dataset_id}")
for item in client.dataset(run.default_dataset_id).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "mode": "direct",
  "searchTerm": "dentist",
  "location": "London, UK",
  "maxPlaces": 5,
  "targets": [
    {
      "website": "https://example.com/",
      "businessName": "Example Domain"
    }
  ],
  "maxConcurrentlyAnalyzedBusinesses": 8
}' |
apify call overbifrost/web-design-lead-finder-website-audit --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,overbifrost/web-design-lead-finder-website-audit"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/Atvr00LOlFsCg99Vb/builds/UZwlt7fgdDJB6eTpW/openapi.json
