Bulk Lighthouse & Core Web Vitals Audit
Pricing
Pay per event
Bulk Lighthouse & Core Web Vitals Audit
Run Google Lighthouse on hundreds of URLs. Get performance, accessibility, best practices and SEO scores, Core Web Vitals (LCP, CLS, TBT, INP), top fixes and full HTML reports. Mobile and desktop. Optional CrUX field data with your own PageSpeed Insights key.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Rod Services
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
What does Bulk Lighthouse & Core Web Vitals Audit do?
Bulk Lighthouse & Core Web Vitals Audit runs Google Lighthouse on hundreds or thousands of URLs and returns one clean JSON row per page and device. You get the four Lighthouse scores (Performance, Accessibility, Best Practices, SEO), Core Web Vitals (LCP, CLS, TBT, INP), FCP, TTFB, Speed Index, the top improvement opportunities with estimated savings, and a link to the full Lighthouse HTML report for every URL.
It is a bulk PageSpeed Insights tool at $1.50 per 1,000 audits. By default it calls the official Google PageSpeed Insights API with your own free key, so you get Google's own Lighthouse numbers plus real user CrUX field data (p75 LCP, CLS, INP, FCP, TTFB). No browser runs, so it is fast and cheap. No key or no Google quota? Switch to the local engine, which runs Lighthouse in real Google Chrome inside the Actor.
Run it on the Apify platform with API access, scheduling, webhooks, integrations (Make, Zapier, n8n, Google Sheets, Slack) and monitoring. Press Start with the prefilled example to try it.
Why use this Lighthouse bulk audit tool?
- SEO agencies. Audit every client page in one run. Send reports with scores, Core Web Vitals and fixes per URL.
- Web performance monitoring. Schedule daily or weekly runs. Track LCP, CLS and TBT over time and alert on regressions with webhooks.
- Core Web Vitals checks before release. Audit staging and production URLs, mobile and desktop, in one run.
- Competitor benchmarking. Compare page speed and SEO scores of your site against competitors.
- Accessibility and SEO audits at scale. Count failed audits per page and find the worst pages first.
- AI agents and LLM tools. One predictable JSON schema with numbers, not screenshots. Agents can call it through the Apify API or MCP and reason about the top fixes.
How to get a free PageSpeed Insights API key (2 minutes)
- Open the PageSpeed Insights API page in Google Cloud Console. Sign in and create a project if asked.
- Click Enable.
- Open Credentials, click Create credentials and pick API key.
- Copy the key. Optional: click Restrict key and allow only the PageSpeed Insights API.
The key is free. Google's quota is 25,000 requests per day. The Actor stores it encrypted as a secret input.
If the key is wrong, or the API is not enabled for its project, the run stops after the first request. It ends with one error item and Google's error message in the status. Only the run start is charged.
How to run a bulk Lighthouse audit
- Open the Input tab.
- Paste URLs into URLs to audit, one per line.
example.comworks, https is added. - Paste your PageSpeed Insights API key. Without a key the run stops right away with the setup guide above and nothing is charged for audits.
- Pick Device: mobile, desktop or both.
- Press Start. PSI audits take 10 to 60 seconds each and run 20 at a time.
- Open the Output tab. Switch views: Overview, Core Web Vitals, Opportunities, CrUX field data. Click Report to open the full Lighthouse report.
Local engine, no key needed
Set Engine to local and set Memory to 8 GB in Run options. Chrome needs about 2 CPU cores for credible scores. The Actor warns in the log when memory is under 4 GB.
Input
Only urls is required.
| Field | Default | Description |
|---|---|---|
urls | Pages to audit. Duplicates are removed. | |
strategy | mobile | mobile, desktop or both. Both means two audits per URL. |
categories | all four | performance, accessibility, best-practices, seo. |
throttling | simulate | simulate like PageSpeed Insights, devtools applied throttling, none raw speed. |
cpuSlowdown | auto | Mobile CPU slowdown. Auto calibrates to the cloud CPU. 4 is the plain Lighthouse default. |
engine | psi | psi calls the Google PageSpeed Insights API with your key. local runs Chrome in the Actor. |
psiApiKey | Your free Google API key. Secret, stored encrypted. Needed for psi, adds CrUX to local. | |
maxConcurrency | 20 or 1 | Parallel audits. 20 for PSI, 1 for local. |
includeFullReport | true | Save the full HTML report to the key-value store. |
includeJsonReport | false | Also save the raw Lighthouse JSON, linked in reportJsonUrl. |
maxOpportunities | 10 | Top opportunities per audit. |
timeoutSecs | 90 | Hard limit per audit. Failed audits are retried once and never charged. |
{"urls": ["https://apify.com", "https://web.dev"],"strategy": "both","categories": ["performance", "seo"],"engine": "psi","psiApiKey": "YOUR_GOOGLE_API_KEY"}
Output example
You can download the dataset in various formats such as JSON, HTML, CSV, or Excel.
{"url": "https://web.dev/","finalUrl": "https://web.dev/","strategy": "mobile","engine": "local","performanceScore": 37,"accessibilityScore": 90,"bestPracticesScore": 100,"seoScore": 92,"lcpMs": 5427,"cls": 0.001,"tbtMs": 3584,"inpMs": null,"fcpMs": 5127,"ttfbMs": 230,"speedIndexMs": 5347,"opportunities": [{"id": "render-blocking-insight","title": "Render-blocking requests","savingsMs": 1600,"savingsBytes": null}],"failedAuditsCount": 19,"fieldData": null,"reportUrl": "https://api.apify.com/v2/key-value-stores/<id>/records/lh-web-dev-da1284d15fd0-mobile.html?signature=...","lighthouseVersion": "13.5.0","cpuSlowdownMultiplier": 1.8,"durationSecs": 27.1,"error": null}
With a PSI key, fieldData holds CrUX data, for example { "scope": "url", "overallCategory": "AVERAGE", "lcpMs": 2400, "lcpCategory": "FAST", "cls": 0.12, "inpMs": 180, "inpCategory": "FAST", ... }, and inpMs is filled from it.
Data fields
| Field | Meaning |
|---|---|
performanceScore ... seoScore | Lighthouse category scores, 0 to 100 |
lcpMs, cls, tbtMs, fcpMs, speedIndexMs | Lab metrics from Lighthouse |
ttfbMs | Server response time of the main document |
inpMs | Interaction to Next Paint, p75 from CrUX. Lab audits cannot measure INP |
opportunities | Top failing performance audits sorted by estimated time savings |
failedAuditsCount, failedAudits | Audits scoring under 0.9 in the selected categories |
fieldData | CrUX real user data, URL level or origin fallback |
reportUrl, reportJsonUrl | Full HTML report, and raw JSON when includeJsonReport is on |
error | Why an audit failed, for example DNS error or HTTP 404 |
How much does a Lighthouse audit cost?
Pay per event. You pay only for successful audits. Failed and unreachable URLs are free.
- PSI audit with your own free key: $0.0015 per URL and device ($1.50 per 1,000).
- Local Lighthouse audit in Chrome, premium, no key needed: $0.07 per URL and device ($70 per 1,000).
- Run start: $0.001 per run.
The Apify free plan's $5 monthly credit covers about 3,000 PSI audits.
Tips for accurate and cheap audits
- Use the PSI engine for large lists. 512 MB memory is enough. It runs 20 audits in parallel by default. Lower it if Google answers with quota errors.
- Local engine: 8 GB memory and concurrency 1. Chrome needs about 2 CPU cores. Less CPU inflates TBT and lowers scores.
- Local engine: keep
cpuSlowdown: auto. Cloud CPUs are slower than the machines Lighthouse assumes. Auto measures the CPU at start and scales the 4x mobile slowdown so numbers stay closer to PageSpeed Insights. Set4to match plain Lighthouse CLI. - Scores vary run to run. This is normal for Lighthouse. For monitoring, compare medians of several runs.
- Only need speed? Select only
performanceto save a few seconds per audit.
FAQ, limitations and support
Is this the same as PageSpeed Insights? The PSI engine returns exactly what the PageSpeed Insights API returns, normalized into one row. The local engine uses the same Lighthouse and simulated throttling on different hardware, so its lab numbers will not match PSI exactly.
What happens without a key? With the default PSI engine the run finishes right away with one dataset item that explains how to get a key. No audits are charged.
Why is INP empty? INP needs real user interactions. Lab tests cannot measure it. The PSI key adds INP from CrUX. TBT is the lab proxy for INP.
Why did a page fail with HTTP_ERROR_STATUS? The page answered with an HTTP error such as 403 or 404, often a bot blocker. Lighthouse would only score the error page, so the audit is reported as failed and not charged. HTTP 429 from PSI means Google throttles tests of that site for a while, or the site blocks Google. It is not charged. Retry later.
Why is fieldData null with a key? The page or origin has too little Chrome traffic to appear in the CrUX dataset.
Can it audit pages behind a login? No. Only public URLs.
Is it legal? You audit pages you choose, like running Lighthouse in your own browser. Lighthouse is open source under Apache 2.0. Audit only sites you are allowed to test and respect their terms.
Found a bug or need a custom version, for example budgets, sitemaps or Slack alerts? Open an issue in the Issues tab.