# Slow Website Leads: PageSpeed & Lighthouse Audit, No API Key (`aiden_boudreau/slow-website-leads-pagespeed-audit`) Actor

Find local businesses with slow websites: bulk website speed test & performance audit with Lighthouse / PageSpeed Insights, no API key. Mobile score, Core Web Vitals (LCP, CLS, TBT), top 3 fixes and a pitch line per site. Input: a Google Maps dataset or a list of URLs.

- **URL**: https://apify.com/aiden_boudreau/slow-website-leads-pagespeed-audit.md
- **Developed by:** [Aiden Boudreau](https://apify.com/aiden_boudreau) (community)
- **Categories:** SEO tools, Lead generation
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $20.00 / 1,000 website speed-audited (no key needed)s

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

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

## Slow Website Leads: PageSpeed & Lighthouse Audit, No API Key

Find local businesses whose websites are slow on a phone, and get a sales-ready reason to call them. For each
business website it runs **Google Lighthouse** (the engine behind PageSpeed Insights, mobile) and returns the score, how long the main content takes
to appear (LCP), the **top 3 fixes in plain English** and a **pitch line** you can paste into an email.

**No API key needed:** Lighthouse runs in the Actor's own Chrome. Have a free Google API key? Add it and the
audit runs on Google's PageSpeed Insights API instead, which is faster and 10x cheaper per site.

Built for web designers, local SEO agencies and freelancers who sell speed and redesign work:

- Feed it the dataset from a **Google Maps scraper** run (or our Web Design Leads Actor): business name, phone,
  address and Maps link are carried over, so every row is a lead.
- Or paste a list of websites.
- One row per site: duplicates (same domain, with or without www) are checked once.
- Sites that fail to load are listed with the error and **not charged**.
- Flags listed websites that now **redirect to a different site** (often an expired or sold domain: a strong lead).

### Example output

![Slow websites of plumbers in Boise, ID: real output, keyless Lighthouse mode](https://api.apify.com/v2/key-value-stores/VsOADrgiznRqRejDw/records/speedaudit-output.png)

| Business | Mobile score | LCP | Pitch line |
|---|---|---|---|
| Plumber, Boise ID | 29 | 13.5 s | Your homepage takes 13.5 s to show its main content on a phone (Google calls under 2.5 s good) and scores 29/100 on Google Lighthouse. Biggest fix: remove render-blocking scripts and styles. |
| Coffee shop, Bozeman MT | 76 | 4.8 s | Your homepage takes 4.8 s to show its main content on a phone (Google calls under 2.5 s good) and scores 76/100 on Google PageSpeed. Biggest fix: remove render-blocking scripts and styles (~1.7 s faster). |
| Cocktail lounge, Bozeman MT | 65 | 7.6 s | The website listed for this business now sends visitors to another site (bigbrother247.com). Your homepage takes 7.6 s ... Biggest fix: cut the redirects before the page loads (~1.6 s faster). |

(Real results, October 2026. A no-key run on 10 Boise plumbers: 6 slow, 1 needs work, 1 fast, 2 did not load.)

### Two ways to run it

- **No key (default):** Lighthouse runs in our own Chrome with Google's standard simulated mobile network, about
  30-50 s per site, one site per CPU core (Apify gives 1 core per 4 GB of memory: run with 8 GB to audit 2 at once).
  Sites behind a bot check (captcha page) are reported and not charged.
- **Your own Google API key (optional):** the audit runs on the PageSpeed Insights API, 4 sites at a time, 10-40 s
  each, and adds Chrome UX Report field data (`realUserSpeed`) when Google has it.

#### Get a key in 3 minutes (free, no billing account)

The PageSpeed Insights API is free: 25,000 checks a day per key.

1. Open https://console.cloud.google.com/projectcreate and create a project (any name).
2. Enable the API: https://console.cloud.google.com/apis/library/pagespeedonline.googleapis.com > **Enable**.
3. Create the key: https://console.cloud.google.com/apis/credentials > **Create credentials > API key**. Under
   "API restrictions", restrict it to **PageSpeed Insights API**.
4. Paste it into **Your Google API key**. It is stored as a secret input.

### Input

- **Your Google API key** (optional): see above.
- **Websites**, or **Dataset** from a Google Maps / lead Actor run (items with a `website` field).
- **Device**: mobile (default; what Google ranks on) or desktop.
- **Output only slow sites**: drop fast sites (score 90+, LCP under 2.5 s) from the output. They are not charged.
- **Max sites**, **Parallel checks**.

### Output

One row per unique website: `businessName`, `website`, `finalUrl`, `verdict` (slow / needs work / fast / error),
`engine` (lighthouse / pagespeed), `performanceScore` (0-100), `lcpSeconds`, `fcpSeconds`, `speedIndexSeconds`, `totalBlockingTimeMs`,
`cumulativeLayoutShift`, `pageWeightKb`, `topFixes` (fix, estimated savings in ms), `realUserSpeed` (Chrome UX Report
category when Google has field data), `redirectsToOtherSite`, `pitch`, plus `phone`, `address`, `city`, `category`,
`rating`, `reviewsCount`, `googleMapsUrl` when they came from a dataset. A `SUMMARY` record counts the verdicts.

**Verdicts:** slow = score under 50 or LCP over 4 s; needs work = score under 90 or LCP over 2.5 s (Google's
Core Web Vitals thresholds); fast = everything else.

### Pricing

- **No key: $0.02 per website audited** (we run the browser), so 100 sites cost $2.
- **With your Google key: $0.002 per website audited**, so 1,000 sites cost $2. Google charges nothing for PageSpeed
  checks.

No start fee. Sites that don't load or show a bot check, and fast sites you filter out, are free.

### FAQ

**Why is my score different from pagespeed.web.dev?** Lighthouse scores vary a few points from run to run (network,
server load). Re-check a borderline site before you pitch.

**How long does it take?** No key: 30-50 s per site per 4 GB of memory, so 100 sites take about 1 hour at 4 GB or
15 minutes at 16 GB. With a key: 100 sites take about 10-15 minutes.

**Is this allowed?** It only loads public home pages, once each, like a visitor would. With a key it uses Google's
official PageSpeed Insights API.

### Related Actors

- [Web Design Leads: Bad & No-Website Business Finder](https://apify.com/aiden_boudreau/website-redesign-leads):
  audits local business websites for dead, outdated or broken sites.
- [Google Maps No-Website Leads: Businesses Without Website](https://apify.com/aiden_boudreau/google-maps-businesses-without-website)
- [GBP Audit Leads: Unclaimed & Incomplete Google Business Profile](https://apify.com/aiden_boudreau/google-business-profile-audit-leads)
- [Local SEO Keyword Finder](https://apify.com/aiden_boudreau/local-seo-keyword-finder)

# Actor input Schema

## `googleApiKey` (type: `string`):

Optional. A Google Cloud API key with "PageSpeed Insights API" enabled (25,000 free checks a day, no billing account; see the README). With a key: PageSpeed Insights API, $0.002 per site. Without: Lighthouse runs in our own Chrome, $0.02 per site.

## `websites` (type: `array`):

Business websites to check, one per line. Duplicates of the same site are skipped.

## `datasetId` (type: `string`):

The dataset ID of a Google Maps Scraper, Web Design Leads or Google Business Profile Audit Leads run. Each item's website is checked; name, phone, address and Maps link are copied to the output.

## `strategy` (type: `string`):

Google uses the mobile result for ranking, so mobile is the better pitch.

## `onlySlowSites` (type: `boolean`):

Leave fast sites (score 90+ and LCP under 2.5 s) out of the output. They are not charged.

## `maxSites` (type: `integer`):

Stop after this many unique sites.

## `concurrency` (type: `integer`):

With a key only: parallel PageSpeed checks (each takes 10-40 s on Google's side; 4 keeps you under Google's per-minute limit). Without a key the Actor runs one site per 4 GB of memory.

## Actor input object example

```json
{
  "websites": [
    "https://mainstreetovereasy.com"
  ],
  "strategy": "mobile",
  "onlySlowSites": false,
  "maxSites": 100,
  "concurrency": 4
}
```

# Actor output Schema

## `leads` (type: `string`):

One row per unique website.

## `summary` (type: `string`):

Counts of slow / needs-work / fast sites.

# 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 = {
    "websites": [
        "https://mainstreetovereasy.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("aiden_boudreau/slow-website-leads-pagespeed-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 = { "websites": ["https://mainstreetovereasy.com"] }

# Run the Actor and wait for it to finish
run = client.actor("aiden_boudreau/slow-website-leads-pagespeed-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 '{
  "websites": [
    "https://mainstreetovereasy.com"
  ]
}' |
apify call aiden_boudreau/slow-website-leads-pagespeed-audit --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,aiden_boudreau/slow-website-leads-pagespeed-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/eudE3x9OjMhfmlNOl/builds/JVWIsnIyiUjRDqzkA/openapi.json
