Bulk PageSpeed & Lighthouse Audit (Core Web Vitals)
Pricing
Pay per event
Bulk PageSpeed & Lighthouse Audit (Core Web Vitals)
Audit many URLs or a whole sitemap with Google Lighthouse in one run: mobile + desktop, Core Web Vitals PASS/FAIL, top 5 fixes as columns, failed SEO/accessibility checks, and score changes vs your last run. No API key needed.
Pricing
Pay per event
Rating
0.0
(0)
Developer
Jacob
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 hours ago
Last modified
Categories
Share
Bulk PageSpeed & Lighthouse Audit (Core Web Vitals, mobile + desktop)
Paste a list of URLs or a sitemap (up to 500 pages per run) and get a Google Lighthouse audit for every page, on mobile and desktop in the same run. Each row is one URL and one device, flattened so it drops straight into a spreadsheet or CSV:
- Scores: Performance, Accessibility, Best Practices and SEO (0 to 100)
- Core Web Vitals PASS/FAIL, plus LCP, CLS and TBT with good / needs-improvement / poor ratings
- The top 5 fixes as columns (
fix1…fix5), each with estimated ms and KB saved - Failed SEO, accessibility and best-practice checks, listed by name
- Changes since your last run (optional): score deltas, LCP change, and a
regressionflag
You don't need an API key or a Google account. The actor runs the open-source Lighthouse engine in its own headless Chrome on Apify.
Who it's for
- SEO and web agencies: audit every client page (or the whole sitemap) and send a CSV of what to fix first.
- Developers and site owners: schedule it weekly with Compare with my previous run to catch regressions after a deploy.
- Lead generation / prospecting: spot which sites in a list fail Core Web Vitals.
What you get in one run
- A list of URLs or a sitemap (sitemap index files are followed). Up to 500 URLs per run; see How many URLs per run? below.
- Mobile and desktop audited in the same run, one row each.
- Flat, CSV-ready columns: scores, Core Web Vitals values with ratings, a
cwvLabStatusPASS/FAIL verdict, andfix1…fix5with estimated savings. - Week-over-week compare (optional): deltas against your previous run and a
regressionflag. Before flagging, it re-checks the page (median of 3 runs) to filter out lab noise. - Failed audits are not billed. You still get an error row with the reason.
- No Google API key or quota. Lighthouse runs inside the actor.
It's the same Lighthouse engine PageSpeed Insights uses, but the numbers won't match PSI exactly, because the machine and network are different. If you only need to check a few URLs now and then, the free PageSpeed Insights website is fine. This actor is for lists, sitemaps, CSV exports and scheduled checks.
How many URLs per run?
Audits run one at a time. That's deliberate: running several Lighthouse audits in parallel on one machine makes them compete for CPU and drags scores down. In our cloud tests, 10 audits took 248 s including start-up, which works out to about 140 audits per hour. Heavy pages (60+ s each) are slower.
| URLs × devices | Audits | Typical time |
|---|---|---|
| 25 × 2 (default) | 50 | ~20–25 min |
| 100 × 2 | 200 | ~1.5 h |
| 250 × 2 | 500 | ~3.5–4 h (near the default 4 h timeout) |
If a run gets close to its timeout, it stops cleanly, saves results and history, and lists the pages it didn't reach in SUMMARY.notAudited. For bigger lists, raise the run timeout or split the list across runs.
Input example
{"urls": ["https://www.python.org", "https://apify.com"],"sitemapUrl": "https://apify.com/sitemap.xml","maxSitemapUrls": 20,"devices": ["mobile", "desktop"],"compareToPrevious": true,"minPerformanceScore": 80}
Output example (one row, trimmed)
Real result from an Apify cloud run on Oct 26, 2026. With Compare with my previous run turned on, rows also get performanceDelta, lcpDeltaMs and regression.
{"url": "https://www.python.org/","device": "mobile","performanceScore": 49,"accessibilityScore": 75,"bestPracticesScore": 100,"seoScore": 83,"cwvLabStatus": "FAIL","lcpMs": 6114, "lcpRating": "poor","cls": 0, "clsRating": "good","tbtMs": 941, "tbtRating": "poor","fcpMs": 3451, "ttfbMs": 60, "pageWeightKb": 504, "requestCount": 23,"fix1": "Eliminate render-blocking resources", "fix1SavingsMs": 2066,"fix2": "Reduce unused CSS", "fix2SavingsMs": 840, "fix2SavingsKb": 129,"fix3": "Reduce unused JavaScript", "fix3SavingsMs": 420, "fix3SavingsKb": 59,"failedSeoChecks": ["Links do not have descriptive text", "Links are not crawlable"],"lighthouseVersion": "12.8.2", "source": "lighthouse"}
There are two dataset views: Scores & Core Web Vitals (key columns) and All fields (everything, ready for CSV).
Pricing
You pay per completed audit, where one audit = one URL on one device. Mobile + desktop for 10 pages is 20 audits. Failed audits (site down, blocked, timeout) still get an error row but are never billed. There's also a small per-run start fee. Current prices are shown on the Pricing tab. To cap spend, set Max URLs per run or a maximum charge on the run. Confirmation re-runs for suspected regressions are not billed extra.
Good to know
- Lab data, not field data, and it's noisy. Scores come from a real Chrome run in the Apify cloud with Lighthouse's standard mobile throttling. Light pages are stable: example.com scored 99 to 100 every time. Heavy pages swing a lot. In our own two 4 GB cloud runs about 10 minutes apart, with no site change, python.org mobile scored 72, then 49 (a 23-point swing) and desktop scored 83, then 90. Treat a single run as a snapshot, not a verdict. For monitoring, keep the regression threshold at 10–15 points (default 10) and leave Confirm regressions on. It re-audits a flagged page twice and uses the median.
cwvLabStatususes Google's "good" thresholds: LCP ≤ 2.5 s, CLS ≤ 0.1, and TBT ≤ 200 ms (TBT stands in for INP in lab tests).- Your own PSI key (untested beta): there's an optional mode that sends audits through Google's PageSpeed Insights API under your key and adds real-user (CrUX) fields (
fieldLcpMs,fieldInpMs,fieldCls,fieldCwvStatus). It hasn't been verified end-to-end yet, so leave it empty unless you want to try it. Failed audits are not billed. - Typical speed is 10 to 60 seconds per audit, depending on how heavy the page is. Pages behind a login, private/internal addresses and bot-walled sites can't be audited and return an unbilled error row.
- The actor defaults to 4 GB of memory, which gives Chrome a full CPU and makes scores more stable. We don't recommend going lower.
More tools from Ikas
- Workday Jobs Scraper & New-Job Monitor: clean job rows from any Workday career site, with only-new-jobs monitoring.
- Business Entity Lookup: NJ, KY, ND Secretary of State: official registry status, type and dates for KYB checks.
Reliability
A daily canary audit checks that every metric still comes back, so breaking changes get caught the same day.