Bulk PageSpeed Audit - Lighthouse & Core Web Vitals
Pricing
from $5.00 / 1,000 page auditeds
Bulk PageSpeed Audit - Lighthouse & Core Web Vitals
Run Google Lighthouse on up to 500 URLs or a whole XML sitemap in one run. One row per page with performance, accessibility, best-practices and SEO scores, Core Web Vitals lab metrics and the top failing audits.
Pricing
from $5.00 / 1,000 page auditeds
Rating
0.0
(0)
Developer
Cuantic Data
Maintained by CommunityActor stats
0
Bookmarked
3
Total users
2
Monthly active users
a day ago
Last modified
Categories
Share
Bulk PageSpeed Audit - Lighthouse & Core Web Vitals for Many URLs
Run Google Lighthouse on a whole list of pages in one run. Paste up to 500 URLs, or just give a sitemap URL, and get one dataset row per page with the four Lighthouse category scores, the Core Web Vitals lab metrics and the top failing audits. A summary record ranks every page from worst to best, so the pages that need work first are obvious.
Need a single page only? Use the sibling actor page-speed-lighthouse-audit.
What it does
- Audits every URL with real Chrome and the official
lighthousenpm package (the same engine behind PageSpeed Insights lab data). - Accepts a list of URLs or an XML sitemap (a sitemap index is followed one level deep).
- Removes duplicate URLs (keeping the original order) and caps the run at 500 pages.
- Runs several audits in parallel (1 to 4), each in its own Chrome process.
- Isolates failures: a page that times out, returns 404 or cannot be resolved gets a row with an
errormessage, and the run continues. - Writes a summary to the key-value store record
OUTPUTwith counts and a worst-first ranking.
Who it is for
- SEO and migration audits: capture a baseline of every page before a redesign or platform migration, then compare after.
- Agencies: audit a client's whole site in one run and hand over a sortable table instead of one PageSpeed report per page.
- Whole-site Core Web Vitals checks: find the templates and sections with the worst LCP, CLS and TBT instead of guessing from the homepage.
Input
| Field | Type | Default | Description |
|---|---|---|---|
urls | array of strings | - | Pages to audit (http/https). Deduplicated, max 500. |
sitemapUrl | string | - | XML sitemap or sitemap index. All <loc> page URLs are audited, max 500. |
device | mobile | desktop | mobile | Lighthouse form factor. |
categories | array | all four | Any of performance, accessibility, best-practices, seo. |
timeoutMs | integer | 90000 | Per-URL timeout, 15000 to 300000 ms. |
maxConcurrency | integer | 2 | Parallel audits, 1 to 4. |
At least one of urls or sitemapUrl is required. If both are given, urls is used, the sitemap is ignored and a warning is logged.
Example input:
{"sitemapUrl": "https://www.example-shop.com/sitemap.xml","device": "mobile","categories": ["performance", "accessibility", "best-practices", "seo"],"timeoutMs": 90000,"maxConcurrency": 2}
Output
One dataset item per URL:
{"url": "https://www.example-shop.com/collections/summer","device": "mobile","categories": ["performance", "accessibility", "best-practices", "seo"],"scores": {"performance": 41,"accessibility": 88,"bestPractices": 78,"seo": 92},"metrics": {"firstContentfulPaint": "2.9 s","largestContentfulPaint": "7.4 s","totalBlockingTime": "1,120 ms","cumulativeLayoutShift": "0.214","speedIndex": "6.8 s","timeToFirstByte": "Root document took 640 ms"},"topOpportunities": [{ "id": "render-blocking-resources", "title": "Eliminate render-blocking resources", "score": 0, "displayValue": "Est savings of 1,430 ms" },{ "id": "layout-shifts", "title": "Avoid large layout shifts", "score": 0, "displayValue": "4 layout shifts found" },{ "id": "unused-javascript", "title": "Reduce unused JavaScript", "score": 0.12, "displayValue": "Est savings of 412 KiB" },{ "id": "image-alt", "title": "Image elements do not have [alt] attributes", "score": 0 },{ "id": "modern-image-formats", "title": "Serve images in modern formats", "score": 0.5, "displayValue": "Est savings of 238 KiB" }],"error": null}
scoresare 0 to 100 integers. A category you did not select isnull.metricsare Lighthouse display values (lab data). They arenullwhenperformanceis not selected.topOpportunitieslists up to 5 audits with a score below 0.9, worst score first (ties broken by estimated savings). The metric audits themselves (LCP, CLS, ...) are left out because they are already inmetrics.errorisnullon success. On failure it holds the reason (for exampleLighthouse audit timed out after 90000 msorERRORED_DOCUMENT_REQUEST: ... (Status code: 404)), and all scores and metrics arenull.
Dataset rows are written as each audit finishes (so a run that is aborted keeps what it already did), which means their order follows completion, not input. To see the worst pages first, sort the table by scores.performance, or read the OUTPUT record:
{"total": 137,"ok": 134,"failed": 3,"skipped": 0,"device": "mobile","categories": ["performance", "accessibility", "best-practices", "seo"],"rankedBy": "performance","worstFirst": [{ "url": "https://www.example-shop.com/collections/summer", "score": 41 },{ "url": "https://www.example-shop.com/blog/lookbook", "score": 47 }]}
The ranking uses the performance score, or the first selected category when performance is not selected.
Combine with sitemap-url-extractor
Extract every URL from a sitemap with sitemap-url-extractor, filter the list (for example only /products/ pages), then audit them all here. Or skip that step and pass the sitemap URL directly in sitemapUrl.
Limitations
- Lab data only. Scores and metrics come from a Lighthouse run in a data center, not from real users. There is no Chrome UX Report (CrUX) field data.
- Scores vary from run to run. Lighthouse performance scores commonly move by several points between runs of the same page. Running more audits in parallel adds CPU contention and more variance; use
maxConcurrency: 1when you need the most stable numbers. - Desktop mode is simplified.
desktopchanges the form factor and screen size; network and CPU throttling stay at Lighthouse's default (mobile) profile, so desktop numbers are more conservative than PageSpeed Insights' desktop tab. - No logged-in pages. Each audit starts a fresh browser with no cookies or credentials.
- Heavy pages can time out. Such pages get an error row; raise
timeoutMsif needed. - Runtime grows linearly with the number of URLs. A typical audit takes 10 to 40 seconds, so 500 URLs at concurrency 2 can take one to three hours. Set the run timeout in Apify accordingly, and give the actor about 1 GB of memory per parallel audit.
- Max 500 URLs per run. Extra URLs are dropped with a warning. Split larger sites across several runs.
- Plain XML sitemaps only. Gzipped (
.xml.gz) sitemaps are not supported, and a sitemap index is followed one level deep (up to 50 child sitemaps).
Pricing
Pay-per-event: $0.005 USD per successfully audited page ($5.00 per 1,000 pages). Pages that end with an error are not charged. Apify platform usage is included in this price; there is no separate platform-usage charge.
An Actor Start event costs $0.00005 USD. One start event is charged per GB of Actor memory, with a minimum of one event per run.
If the maximum charge you set for a run is reached, the actor stops starting new audits and finishes the ones in progress.
Support
Cuantic Data - cuanticwindows@gmail.com
Terms of use: see Terms of use below.).
Terms of use
Provided by Cuantic Data (cuanticwindows@gmail.com).
1. What the actor does
The actor runs Google Lighthouse, through the open-source lighthouse npm package and a headless Chrome browser, against the URLs you provide, either directly or through a sitemap you point it to. It loads each page as a regular browser would and stores the resulting scores, metrics and failing audits in your Apify dataset.
2. Your responsibility
- You are responsible for having the right to audit the sites and pages you submit. Only submit URLs of sites you own, manage, or are otherwise allowed to test.
- Each audit loads the full page with all its resources. Running many audits against one site generates real traffic on that site; choose the number of URLs and the concurrency accordingly.
- You must comply with the terms of service of the audited sites and with the Apify Terms of Service.
3. About the results
- Scores, metrics and audit results come from Lighthouse and carry its known run-to-run variability. They are lab measurements from the Apify infrastructure, not measurements of real users.
- Results are provided "as is", for informational purposes, without warranty of accuracy, completeness or fitness for a particular purpose. They are not a certification of performance, accessibility or search ranking.
- Lighthouse, Chrome and PageSpeed Insights are products of Google. This actor is not affiliated with or endorsed by Google.
4. Data
The actor stores only what it produces (the dataset rows and the summary record) in your own Apify storage. It does not keep copies of the audited pages or results elsewhere.
5. Liability
To the extent permitted by law, Cuantic Data is not liable for any damage arising from the use of the actor or its results, including decisions made based on the scores, or any effect of the audit traffic on the audited sites.
6. Changes
These terms may be updated together with the actor. The version published with the actor is the one that applies.