# Bulk PageSpeed & Core Web Vitals Checker - No API Key (`cuddly_wattle/pagespeed-lighthouse-bulk-auditor`) Actor

Audit hundreds of URLs with Google Lighthouse: Performance, SEO, Accessibility and Best-Practices scores, LCP, CLS, TBT, FCP and top fixes on mobile and desktop. No API key needed; add your free Google key for real-user Core Web Vitals.

- **URL**: https://apify.com/cuddly_wattle/pagespeed-lighthouse-bulk-auditor.md
- **Developed by:** [Kyle Duncan](https://apify.com/cuddly_wattle) (community)
- **Categories:** SEO tools, Developer tools
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

from $12.00 / 1,000 successful page audits

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

## Bulk PageSpeed & Core Web Vitals Checker — Google Lighthouse, No API Key

Test **hundreds of pages at once** with **Google Lighthouse** — the same engine behind PageSpeed Insights — and get **Performance, SEO, Accessibility and Best-Practices scores**, **Core Web Vitals** (LCP, CLS, TBT/INP), FCP, Speed Index, TTFB, page weight, request count and the **top fixes** for every URL, on **mobile, desktop or both**.

**No API key required**: Lighthouse runs right inside the Actor. Optionally add your **free Google PageSpeed Insights API key** to also get **real-user Chrome UX Report (CrUX) field data** — the data Google uses for rankings — plus faster parallel audits.

### Why use it

- ✅ Works out of the box — no Google Cloud setup needed
- ✅ Bulk: audit a whole sitemap, a client list, or competitors in one run
- ✅ Every metric as clean numbers → Google Sheets, Looker Studio, Airtable, Slack alerts
- ✅ Top 10 performance opportunities (estimated savings in ms/bytes) and failed SEO checks per page
- ✅ Real-user **Core Web Vitals pass/fail** (with your free API key)
- ✅ Schedule weekly to track speed over time and catch regressions after deploys
- ✅ Failed pages (DNS errors, timeouts) are reported clearly and are **not charged**

### Who uses it

- **SEO agencies & freelancers** — audit prospect sites in bulk and send reports that win clients
- **Developers & site owners** — monitor speed after every release
- **E-commerce teams** — find slow product and category pages
- **Lead generation** — find businesses with slow sites that need help

### Input examples

**Quick bulk audit (no key)**

```json
{ "urls": ["https://www.example.com", "https://www.allbirds.com"], "strategy": "mobile" }
```

**Mobile + desktop with real-user Core Web Vitals**

```json
{ "urls": ["https://www.example.com/", "https://www.example.com/pricing"], "strategy": "both", "engine": "psi", "googleApiKey": "YOUR_FREE_KEY" }
```

### Output example

```json
{
  "url": "https://www.allbirds.com/",
  "strategy": "mobile",
  "engine": "local",
  "performanceScore": 28,
  "accessibilityScore": 100,
  "bestPracticesScore": 79,
  "seoScore": 100,
  "fcpMs": 10662,
  "lcpMs": 34615,
  "tbtMs": 1857,
  "cls": 0.008,
  "speedIndexMs": 14396,
  "ttfbMs": 10,
  "totalByteWeight": 7892248,
  "requestCount": 473,
  "opportunities": [
    {"id": "unused-javascript", "title": "Reduce unused JavaScript", "savingsMs": 6010, "savingsBytes": 922888}
  ],
  "failedSeoAudits": [],
  "coreWebVitalsPassed": null,
  "lighthouseVersion": "12.8.2",
  "auditDurationSec": 23.1,
  "error": null,
  "auditedAt": "2026-11-01T16:08:48.599Z"
}
```

With an API key you also get `fieldLcpP75Ms`, `fieldInpP75Ms`, `fieldClsP75`, `fieldFcpP75Ms`, `fieldTtfbP75Ms`, their FAST/AVERAGE/SLOW categories, `fieldDataScope` (url or origin) and `coreWebVitalsPassed`.

### Get a free Google API key (optional, 2 minutes)

1. Open Google Cloud Console → APIs & Services → Library → enable **PageSpeed Insights API**.
2. APIs & Services → Credentials → **Create credentials → API key**.
3. Paste it into **Google PageSpeed Insights API key**. Google's free quota is about 25,000 audits per day.

### Notes

- Lab scores vary by a few points between runs. That's normal for Lighthouse.
- Built-in Lighthouse audits one page at a time for consistent results (about 6–30 s per page). The API engine runs up to 8 in parallel.
- By default, URLs disallowed by robots.txt are skipped. Turn this off for sites you own.

### How much does it cost?

**$0.012 per successful audit** (+ $0.00005 per run start). Failed audits are free.
You set a maximum charge per run, so you never pay more than you allow. Apify's free plan includes monthly credit, enough to try this Actor at no cost.

### FAQ

**Do I need a Google API key?**

No. By default the Actor runs Lighthouse itself. Add your free Google key to also get real-user (CrUX) Core Web Vitals.

**Mobile or desktop?**

Both. Choose the strategy in the input.

**Are failed audits charged?**

No. Pages that time out or error are saved with the error for free.

**Is it legal?**

It only reads public data that the site or platform publishes openly (no login, no bypassing). You are responsible for using the data in line with applicable laws such as GDPR.

**Something broke or a field is missing?**

Open an issue on the Issues tab; we fix reported problems fast.

### More tools from this developer

**Jobs & recruiting:** [Career Page Jobs Scraper: Greenhouse, Lever, Ashby + 3 more](https://apify.com/cuddly_wattle/ats-jobs-monitor) · [Greenhouse Jobs Scraper & New Jobs Monitor](https://apify.com/cuddly_wattle/greenhouse-jobs-scraper) · [Lever Jobs Scraper & New Jobs Monitor](https://apify.com/cuddly_wattle/lever-jobs-scraper) · [Ashby Jobs Scraper & New Jobs Monitor](https://apify.com/cuddly_wattle/ashby-jobs-scraper) · [Workable Jobs Scraper & New Jobs Monitor](https://apify.com/cuddly_wattle/workable-jobs-scraper) · [SmartRecruiters Jobs Scraper & New Jobs Monitor](https://apify.com/cuddly_wattle/smartrecruiters-jobs-scraper)

**E-commerce:** [Shopify & WooCommerce Scraper + Price & Stock Monitor](https://apify.com/cuddly_wattle/shopify-woocommerce-price-monitor)

**Websites & SEO:** [Sitemap & RSS New Page Monitor](https://apify.com/cuddly_wattle/sitemap-rss-new-page-monitor) · [Bulk Domain WHOIS, DNS & SSL Checker (RDAP)](https://apify.com/cuddly_wattle/domain-whois-dns-ssl-lookup) · [Tech Stack Detector](https://apify.com/cuddly_wattle/website-tech-stack-detector)

**Apps, data & research:** [App Store Reviews Scraper & Monitor + App Details](https://apify.com/cuddly_wattle/app-store-reviews-monitor) · [Hacker News Scraper](https://apify.com/cuddly_wattle/hacker-news-scraper)

# Changelog

This Actor's version history is a separate document: https://apify.com/cuddly_wattle/pagespeed-lighthouse-bulk-auditor/changelog.md

# Actor input Schema

## `urls` (type: `array`):

Pages to test, one per line (https:// is added if missing).

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

Lighthouse device emulation and throttling profile.

## `categories` (type: `array`):

Lighthouse categories to score.

## `engine` (type: `string`):

Built-in Lighthouse runs in this Actor (lab data, no key). The PageSpeed Insights API adds real-user CrUX field data and runs faster with more parallelism.

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

Free key from Google Cloud Console (APIs & Services → Credentials, enable 'PageSpeed Insights API'). Unlocks real-user Core Web Vitals (CrUX) and faster parallel audits. Leave empty to use built-in Lighthouse.

## `includeOpportunities` (type: `boolean`):

Add the top 10 performance opportunities (estimated savings) and failed SEO checks.

## `respectRobotsTxt` (type: `boolean`):

Skip URLs that the site's robots.txt disallows. You may turn this off for sites you own.

## `maxUrls` (type: `integer`):

Safety cap on the number of URLs.

## `maxConcurrency` (type: `integer`):

Used only with the PageSpeed API engine; built-in Lighthouse audits one page at a time for accurate results.

## Actor input object example

```json
{
  "urls": [
    "https://www.example.com",
    "https://www.allbirds.com"
  ],
  "strategy": "mobile",
  "categories": [
    "performance",
    "accessibility",
    "best-practices",
    "seo"
  ],
  "engine": "auto",
  "includeOpportunities": true,
  "respectRobotsTxt": true,
  "maxUrls": 1000,
  "maxConcurrency": 4
}
```

# Actor output Schema

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

One Lighthouse audit per URL and device

# 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 = {
    "urls": [
        "https://www.example.com",
        "https://www.allbirds.com"
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("cuddly_wattle/pagespeed-lighthouse-bulk-auditor").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 = { "urls": [
        "https://www.example.com",
        "https://www.allbirds.com",
    ] }

# Run the Actor and wait for it to finish
run = client.actor("cuddly_wattle/pagespeed-lighthouse-bulk-auditor").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 '{
  "urls": [
    "https://www.example.com",
    "https://www.allbirds.com"
  ]
}' |
apify call cuddly_wattle/pagespeed-lighthouse-bulk-auditor --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,cuddly_wattle/pagespeed-lighthouse-bulk-auditor"
        }
    }
}
```

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/lj6gQTulVhTyswyRU/builds/OJqXbLfRg7pYswKkP/openapi.json
