# Website Audit Leads | From $7/1K | SEO, Speed & Contacts (`apivault_labs/website-audit-leads`) Actor

Find potential clients in 2.1M+ audited WordPress sites, with new leads added every minute. Discover who may need SEO, speed, accessibility, security or redesign help, understand why and export available contacts. Built for freelancers, agencies, consultants, Apify API and MCP agents.

- **URL**: https://apify.com/apivault\_labs/website-audit-leads.md
- **Developed by:** [Apivault Labs](https://apify.com/apivault_labs) (community)
- **Categories:** Lead generation, Marketing, SEO tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $7.00 / 1,000 audited website leads

This Actor is paid per event and usage. You are charged both the fixed price for specific events and for Apify platform usage.
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

## Website Audit Leads | From $7/1K | SEO, Speed & Contacts

![2.1M+ audited website leads with new leads added every minute](https://api.apify.com/v2/key-value-stores/u4YZtIlXXYEybGzl4/records/website-audit-leads-hero-v4.png)

Find potential clients among more than **2.1 million successfully audited
WordPress websites**. New leads are added every minute as websites are collected
and audited, so you can return regularly to discover fresh opportunities instead
of treating this as a one-time lead list.

This Actor is built for freelancers, agencies, consultants and anyone looking
for website-related client work. It automatically identifies businesses whose
sites show measurable opportunities in SEO, speed, accessibility, security or
design. You can see what may need improvement, choose the businesses that match
your skills and export available contact details to offer relevant help.

Use it to turn technical website signals into a practical prospecting workflow:

1. choose the service you provide, such as SEO, performance or redesign;
2. narrow the audience by location, technology, company profile and severity;
3. review the reason each website may need help;
4. export available email, phone or social contacts;
5. come back later for newly added and newly audited opportunities.

Every result is one successfully audited website. Results can include:

- website and company name;
- emails, phone numbers and social profiles;
- Overall, SEO, Performance, Accessibility and Security/Best Practices scores;
- recommended scope: minor fixes, targeted fixes, targeted redesign or broad redesign;
- specific weak areas and audit confidence;
- website structure: one-page, multi-page, SPA or unknown, with confidence and evidence;
- country, city, industry, employees and estimated revenue;
- ecommerce, CMS, CRM, marketing, payments, hosting and detected AI technologies.
- a ranked Lead Score, primary weakness, recommended service and ready-to-personalize pitch angle.

The Actor searches a growing database of previously audited WordPress websites;
it does not run a new live audit during each export. New data is added through
the ongoing collection and audit process. Use the freshness filter when your
campaign requires recently checked scores, and run the Actor again over time to
find newly available prospects.

### Popular lead-generation use cases

- SEO leads for technical SEO, content and search-visibility services;
- website speed and Core Web Vitals prospects;
- website security and best-practices audit leads;
- accessibility remediation opportunities;
- website redesign leads, including one-page and outdated sites;
- WooCommerce and WordPress technology-based prospecting;
- email, phone and LinkedIn lead lists by country and company size;
- recent website audit leads for time-sensitive outreach.

### Quick start

The default Balanced preset returns websites with an Overall Score of 74 or lower
and an available email address, with the weakest opportunities first. Specialist
presets target weak SEO, performance, security or redesign opportunities without
silently applying an unrelated Overall threshold.

Choose **Preview audience size** first when planning a campaign. It returns the
exact number of matching successful audits without creating lead rows. Switch to
**Export leads** with the same filters when the audience looks right.

Automation quickstarts:

- [Python SDK](https://github.com/apivault-labs/website-audit-leads-python) and
  [`website-audit-leads` on PyPI](https://pypi.org/project/website-audit-leads/);
- [n8n community node](https://www.npmjs.com/package/n8n-nodes-apivault-website-audit-leads)
  with a ready-to-import review-queue workflow;
- [review-first prospecting guide](https://github.com/apivault-labs/website-audit-leads-python/blob/main/guides/review-first-prospecting.md).

The processed-site counter and the matching-lead counter are intentionally
different. A processed site can be unreachable, blocked or missing a complete
score, while every delivered row must contain a successful audit. Campaign and
contact filters narrow that successful set further. Choose **All successful
audits** and **Any contact data** to view the largest currently available audience.

```json
{
  "runMode": "export",
  "opportunityPreset": "balanced",
  "contactRequirement": "email",
  "maxItems": 50
}
```

Target weak website security and best practices:

```json
{
  "opportunityPreset": "security",
  "securityScoreMax": 60,
  "contactRequirement": "email",
  "country": ["US", "GB"],
  "maxItems": 5000
}
```

Target WooCommerce redesign opportunities:

```json
{
  "auditScopes": ["targeted_redesign", "broad_redesign"],
  "technologies": ["WooCommerce"],
  "contactRequirement": "email",
  "sortBy": "Overall Score",
  "sortDesc": false
}
```

Target confidently detected one-page websites:

```json
{
  "siteTypes": ["one_page"],
  "siteTypeConfidence": ["high"],
  "contactRequirement": "email",
  "maxItems": 1000
}
```

Target established companies that do not already use a competing platform:

```json
{
  "opportunityPreset": "performance",
  "contactRequirement": "email",
  "requireLinkedIn": true,
  "employeesMin": 10,
  "salesRevenueMin": 1000000,
  "excludeTechnologies": ["HubSpot"],
  "maxItems": 1000
}
```

### Score meaning

Scores are normalized to 0–100. Lower scores indicate more room for improvement.
They are discovery signals for prioritizing outreach, not a warranty, security
certification or substitute for a full manual audit.

`Best Practices` is displayed as Security / Best Practices because it includes
web-security and implementation hygiene signals. The `AI` field lists detected
AI technologies. `AI Search Readiness` is a transparent prioritization heuristic
derived from the SEO score and findings such as missing structured data, weak
headings, weak titles and thin content. It is not a certification or a measurement
of search-engine inclusion.

### Lead prioritization

`Lead Score` combines the size of the audit opportunity with available email,
phone, LinkedIn, company and firmographic data. `Primary Opportunity`,
`Recommended Service` and `Pitch Angle` translate raw scores into an outreach
starting point. They are deterministic suggestions and should be personalized
before contacting a prospect.

### Billing and count preview

The Actor is designed for pay-per-result billing: one delivered dataset row is
one lead. Paid Apify plans are charged **$7 per 1,000 delivered leads**; the Free
plan rate is **$12 per 1,000**. A small Actor-start charge may also apply.

`runMode: "preview"` stores the audience size in `COUNT_SUMMARY`
without writing billable dataset rows. The older `countOnly: true` input remains
supported for existing API clients. Platform usage may still apply.

Keep `includeCountryBreakdown` enabled to also receive a ranked
`COUNTRY_BREAKDOWN` record. Country selection uses a searchable list of common
markets; the exact filtered count is shown after the preview run.

Empty, failed and partial audits are never returned or billed as leads.

### Reliable bulk exports

Results are merged into one global order across all available data segments and
can be deduplicated by root domain. When a page fills or the run reaches its
charge limit, `EXPORT_CONTINUATION` contains a copy-ready `nextInput` with the
correct offset. `RUN_SUMMARY` reports returned rows, skipped duplicates and
segment health. `ERRORS` contains neutral error codes without database addresses
or credentials.

For large exports, start with 1,000 rows, review the output, and continue in
pages. Dataset exports are available from Apify as JSON, CSV, Excel, XML and RSS.

### API and AI agents

The Actor declares explicit input, output and dataset schemas. Through Apify API
or MCP, use `runMode: "preview"` to size a segment, then run the same filters with
`runMode: "export"`. Read `MCP_RESPONSE` as the stable machine response. It reports
`complete` or `partial`, the number of queried and failed segments, matching or
returned rows, and a copy-ready `nextInput` when more results are available.

Minimal MCP preview:

```json
{
  "runMode": "preview",
  "opportunityPreset": "seo",
  "contactRequirement": "email",
  "country": ["US"]
}
```

### Data freshness

Use `checkedWithinDays` to require a recent audit. The database grows as new
sites are audited, so match counts can increase between runs. Use a stable sort
and `offset` for paginated exports.

### Responsible use

Use contact data in accordance with applicable privacy, marketing and anti-spam
laws. Scores should support relevant, personalized outreach rather than bulk spam.

# Changelog

This Actor's version history is a separate document: https://apify.com/apivault\_labs/website-audit-leads/changelog.md

# Actor input Schema

## `runMode` (type: `string`):

Use Preview audience to count matches without creating paid lead rows. Use Export leads to return the selected websites.

## `opportunityPreset` (type: `string`):

Select the website weakness your offer solves. General improvement is a good agency prospecting list.

## `contactRequirement` (type: `string`):

Only return leads that contain the selected contact information.

## `country` (type: `array`):

Choose one or more markets. Leave empty to include every country.

## `companySize` (type: `string`):

Choose a simple employee range. Exact ranges remain available in Advanced filters.

## `sortBy` (type: `string`):

Choose how matching leads are prioritized.

## `countOnly` (type: `boolean`):

Backward-compatible API field. New integrations should set runMode to preview or export.

## `includeCountryBreakdown` (type: `boolean`):

Preview mode only. Also returns matching lead counts grouped by country.

## `maxItems` (type: `integer`):

Export mode only. Start with 50 to inspect quality; preview mode counts the full audience and ignores this limit.

## `vertical` (type: `string`):

Optional industry text such as Dental, Fashion, SaaS or Real Estate.

## `technologies` (type: `array`):

Every entered technology must be present, for example WooCommerce, Stripe or Klaviyo.

## `excludeTechnologies` (type: `array`):

Useful for replacement campaigns, for example exclude HubSpot.

## `requireLinkedIn` (type: `boolean`):

Return only websites with an available LinkedIn profile.

## `overallScoreMax` (type: `integer`):

Override the campaign's maximum Overall Score.

## `overallScoreMin` (type: `integer`):

Optional lower boundary for Overall Score.

## `seoScoreMax` (type: `integer`):

Optional exact maximum SEO score.

## `performanceScoreMax` (type: `integer`):

Optional exact maximum Performance score.

## `securityScoreMax` (type: `integer`):

Optional exact maximum Security / Best Practices score.

## `accessibilityScoreMax` (type: `integer`):

Optional exact maximum Accessibility score.

## `auditScopes` (type: `array`):

Optionally require one or more opportunity classes.

## `auditIssues` (type: `array`):

Optionally require specific detected weaknesses.

## `issueMatchMode` (type: `string`):

Require any selected problem or all selected problems.

## `auditConfidence` (type: `array`):

Optional audit-confidence filter.

## `siteTypes` (type: `array`):

Choose one-page sites, multi-page sites, JavaScript app shells, or sites whose structure could not be classified.

## `siteTypeConfidence` (type: `array`):

Optional confidence filter for the website-structure classification.

## `hasAiTechnology` (type: `boolean`):

Filter the detected AI-technology field. This is not an AI-readiness score.

## `checkedWithinDays` (type: `integer`):

Set 0 to include every audit date.

## `employeesMin` (type: `integer`):

Overrides the lower boundary of Company size.

## `employeesMax` (type: `integer`):

Overrides the upper boundary of Company size.

## `salesRevenueMin` (type: `number`):

Optional minimum reported or estimated annual sales revenue.

## `salesRevenueMax` (type: `number`):

Optional maximum reported or estimated annual sales revenue.

## `technologySpendMin` (type: `number`):

Optional minimum estimated annual technology spend.

## `technologySpendMax` (type: `number`):

Optional maximum estimated annual technology spend.

## `sortDesc` (type: `boolean`):

API override for descending order. Common business-first options are handled automatically.

## `offset` (type: `integer`):

Skip the first N unique matches. Prefer EXPORT\_CONTINUATION for pagination.

## `dedupeByDomain` (type: `boolean`):

Return each normalized root domain only once across all data segments.

## `columns` (type: `array`):

Leave empty for the recommended audit, contact, company and technology fields.

## Actor input object example

```json
{
  "runMode": "export",
  "opportunityPreset": "balanced",
  "contactRequirement": "email",
  "companySize": "any",
  "sortBy": "Overall Score",
  "countOnly": false,
  "includeCountryBreakdown": true,
  "maxItems": 50,
  "requireLinkedIn": false,
  "issueMatchMode": "any",
  "hasAiTechnology": false,
  "checkedWithinDays": 0,
  "offset": 0,
  "dedupeByDomain": true
}
```

# Actor output Schema

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

Delivered lead rows. Intentionally empty in Preview mode.

## `mcpResponse` (type: `string`):

Read this first in an agent workflow. It reports completion, row counts, segment health and the next input.

## `countSummary` (type: `string`):

Exact matching audience size for preview runs, or guidance when the current run is an export.

## `countryBreakdown` (type: `string`):

Matching audience grouped by country, or guidance when this output was not requested.

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

Detailed statistics for the completed run.

## `errors` (type: `string`):

Neutral error codes for unavailable data segments; contains no credentials.

## `continuation` (type: `string`):

Copy-ready continuation input when more matching leads are available, otherwise an explicit no-more-results message.

# 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 = {
    "runMode": "export",
    "opportunityPreset": "balanced",
    "maxItems": 50
};

// Run the Actor and wait for it to finish
const run = await client.actor("apivault_labs/website-audit-leads").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 = {
    "runMode": "export",
    "opportunityPreset": "balanced",
    "maxItems": 50,
}

# Run the Actor and wait for it to finish
run = client.actor("apivault_labs/website-audit-leads").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 '{
  "runMode": "export",
  "opportunityPreset": "balanced",
  "maxItems": 50
}' |
apify call apivault_labs/website-audit-leads --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,apivault_labs/website-audit-leads"
        }
    }
}
```

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/4tbFN8UyTf5qVmnLT/builds/B7eqwCwiwmQUJUg9e/openapi.json
