Bulk Website Speed & Quality Auditor (Lighthouse CWV) avatar

Bulk Website Speed & Quality Auditor (Lighthouse CWV)

Pricing

$40.00 / 1,000 page auditeds

Go to Apify Store
Bulk Website Speed & Quality Auditor (Lighthouse CWV)

Bulk Website Speed & Quality Auditor (Lighthouse CWV)

Run Google's own open-source Lighthouse against a list of URLs in a real headless Chrome. Get Performance, Accessibility, Best Practices, and SEO scores plus Core Web Vitals (LCP, CLS, TBT, FCP) per URL, with top opportunities and a hosted full report.

Pricing

$40.00 / 1,000 page auditeds

Rating

0.0

(0)

Developer

Inn Corp

Inn Corp

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

4 days ago

Last modified

Share

Bulk Website Speed & Quality Auditor (Lighthouse Core Web Vitals)

Give it a list of URLs, get back real Google Lighthouse scores and Core Web Vitals for each one: Performance, Accessibility, Best Practices, SEO, plus LCP, CLS, TBT, and FCP with their real units. Every audit runs in an actual headless Chrome, the same engine behind Chrome DevTools' own Lighthouse panel, not a headless-HTTP approximation. Built because the store's cheapest real competitor charges about $0.04/page and clears roughly 100 users a month, proving people will pay for this; the only free alternative sits at a fraction of that demand despite costing nothing, which says the gap isn't price, it's whether the tool actually works reliably run after run. That reliability gap is what this Actor is built to close.

What it does

  • Launches a real, isolated headless Chrome browser context per URL (via Puppeteer) and drives Google's own open-source lighthouse npm package against it, exactly the tool built into Chrome DevTools.
  • Scores whichever of Lighthouse's four real categories you ask for: performance, accessibility, best-practices, seo (0-100 each).
  • Reports Core Web Vitals straight from Lighthouse's own audit output: LCP, CLS, TBT, and FCP, each with the real unit Lighthouse itself reports (milliseconds or unitless). See "About INP" below for why Interaction to Next Paint is reported as null here rather than guessed.
  • Surfaces the top scoring opportunities (Lighthouse's own savings-estimated audits, e.g. "reduce unused JavaScript") and top diagnostics (other failing audits) per URL, so you get a usable summary without downloading the full report.
  • Hosts the complete Lighthouse report, JSON and HTML, in the run's key-value store and links it from fullReportUrl.
  • Runs mobile (Lighthouse's own default, matching how Core Web Vitals field data is conventionally reported) or desktop, with realistic network/CPU throttling on by default, exactly matching Lighthouse's own defaults, both switchable per run.

What it deliberately does not do

  • No content scraping. This Actor never reads, stores, or returns page text, images, or markup. It measures how the page performs when loaded, the same thing Chrome DevTools measures locally on your own machine.
  • No invented numbers. Every score and every metric comes straight out of Lighthouse's own report object (the lhr). A category you did not request, or a metric Lighthouse itself could not compute for that page, is null, never a guess or a zero standing in for "unknown."
  • No silent hangs. Each URL gets a wall-clock budget (timeoutPerUrlSecs); a page that will not finish loading gets a clean timeout record instead of stalling the whole run. Verified against a server that never responds: the run continues cleanly to the next URL.

About INP

Real-world Core Web Vitals report INP (Interaction to Next Paint), which needs an actual user interaction to measure. Lighthouse's own interaction-to-next-paint audit only runs in a "timespan" user-flow mode built around simulated interactions; a single-page navigation audit (what every run of this Actor does, and what the Lighthouse CLI and PageSpeed Insights' lab data both do too) never triggers it. This Actor reports INP as null and reports TBT (Total Blocking Time) instead, which is Lighthouse's own lab-metric proxy for responsiveness and the one that actually carries scoring weight in the Performance category. That is not a shortcut; it is what Lighthouse itself does.

About run-to-run variance

Lighthouse scores are not perfectly deterministic. Network jitter, the Chrome process's own background work, and DNS timing can move the same page's score by a few points between two runs seconds apart, even with simulated throttling. This is a known, expected property of Lighthouse itself (Google documents it), not a bug in this Actor. For scores you plan to track over time, run more than once and look at the trend, not a single number.

Output example

A real record from an actual desktop run against https://www.apify.com/ (timeoutPerUrlSecs: 90, throttling on, all four categories):

{
"url": "https://www.apify.com/",
"device": "desktop",
"scores": { "performance": 61, "accessibility": 100, "bestPractices": 54, "seo": 92 },
"coreWebVitals": {
"LCP": { "value": 2229.379, "unit": "millisecond" },
"CLS": { "value": 0.003442, "unit": "unitless" },
"TBT": { "value": 474.5, "unit": "millisecond" },
"FCP": { "value": 1273.448, "unit": "millisecond" },
"INP": null
},
"topOpportunities": [
{ "id": "redirects", "title": "Avoid multiple page redirects", "savingsMs": 434, "description": "Redirects introduce additional delays before the page can be loaded. ..." },
{ "id": "unused-javascript", "title": "Reduce unused JavaScript", "savingsMs": 200, "description": "Reduce unused JavaScript and defer loading scripts until they are required ..." },
{ "id": "server-response-time", "title": "Initial server response time was short", "savingsMs": 126, "description": "Keep the server response time for the main document short ..." }
],
"topDiagnostics": [
{ "id": "errors-in-console", "title": "Browser errors were logged to the console", "score": 0, "description": "Errors logged to the console indicate unresolved problems. ..." },
{ "id": "deprecations", "title": "Uses deprecated APIs", "score": 0, "description": "Deprecated APIs will eventually be removed from the browser. ..." }
],
"fullReportUrl": "https://api.apify.com/v2/key-value-stores/<storeId>/records/report-www-apify-com-desktop.json",
"status": "ok",
"error": null,
"fetchedAt": "2026-08-25T23:35:40.997Z"
}

The same run scored https://www.wikipedia.org/ at a real 100 and https://developer.mozilla.org/en-US/ at a real 99 on desktop performance; apify.com's 61 came from real third-party tracking scripts and redirects Lighthouse actually flagged, not a placeholder. A malformed URL (e.g. "not-a-real-url") or an unreachable host each return a clean status: "error" record with scores and coreWebVitals all null and zero charge; a URL that never finishes loading returns status: "timeout", also null fields, also zero charge.

Input

FieldMeaning
urlsPages to audit. Required. Each gets its own Chrome run and its own record.
devicemobile (default, Lighthouse's own default) or desktop.
categoriesWhich of Lighthouse's four real categories to score: performance, accessibility, best-practices, seo. Default all four. Fewer categories run faster since Lighthouse only executes the audits each one needs.
throttlingDefault on: throttlingMethod is Lighthouse's own default, "simulate" (mid-tier mobile device, throttled connection). Off sets throttlingMethod to "provided": no simulation, Lighthouse measures the page under this Actor's own real network/CPU.
timeoutPerUrlSecsWall-clock budget per URL, default 90s (min 30, max 180). A full 4-category simulated-throttling run typically finishes in 20-60s; heavy pages can take longer.

Typical uses

  • Audit every page on a client site before a launch, in one run, instead of opening DevTools tab by tab.
  • Track Core Web Vitals for a set of competitor or portfolio URLs on a schedule and watch the trend.
  • Feed topOpportunities straight into a report or ticket queue instead of reading the full Lighthouse HTML report for every page.
  • Gate a CI/CD pipeline on a performance-score floor using the dataset's scores.performance field.

Fair pricing

Pay per URL successfully audited (page-audited), once pay-per-event pricing is enabled. A URL that errors (malformed, unreachable, blocked) or times out is never charged; you only pay for a real, completed audit. No subscription.