Bulk PageSpeed Insights, Lighthouse & Core Web Vitals avatar

Bulk PageSpeed Insights, Lighthouse & Core Web Vitals

Pricing

$20.00 / 1,000 page testeds

Go to Apify Store
Bulk PageSpeed Insights, Lighthouse & Core Web Vitals

Bulk PageSpeed Insights, Lighthouse & Core Web Vitals

Bulk PageSpeed Insights & Lighthouse performance audit / site speed test for a list of URLs (mobile, desktop or both): scores, LCP, CLS, TBT, FCP, SI, TTI and top fix opportunities. Add a free Google API key for real-user CrUX Core Web Vitals.

Pricing

$20.00 / 1,000 page testeds

Rating

0.0

(0)

Developer

Forever Tools

Forever Tools

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

an hour ago

Last modified

Share

Bulk PageSpeed Insights & Core Web Vitals Checker

Paste a list of URLs and get Lighthouse / PageSpeed results for every page, on mobile, desktop or both, in one table: Lighthouse scores (performance, plus optional SEO / accessibility / best-practices), lab metrics (LCP, CLS, TBT, FCP, Speed Index, TTI), real-user Core Web Vitals from the Chrome UX Report when you add a free Google API key (LCP, INP, CLS at p75 with FAST / AVERAGE / SLOW ratings) and the top 5 opportunities ranked by estimated savings.

Two modes, picked automatically:

  • No API key (default): the actor runs Lighthouse 12 itself in its own headless Chrome. You get Lighthouse scores, lab metrics and opportunities with zero setup, but no real-user field data (all field* values are null) and pages are tested one at a time. Rows have "source": "lighthouse-local".
  • With your free Google API key: it calls the official PageSpeed Insights v5 API (the same data as pagespeed.web.dev), which adds CrUX real-user Core Web Vitals and runs up to 3 tests in parallel. Rows have "source": "psi".

Local lab numbers come from a different machine and network than Google's, so they will not exactly match pagespeed.web.dev; compare runs made in the same mode.

Use it to: audit every template of a site before and after a release, track Core Web Vitals across client sites on a schedule, find which pages fail CWV (and why), or feed performance data into a spreadsheet, BI tool or LLM report.

Output (one row per URL × strategy)

{
"url": "https://example.com/",
"strategy": "mobile",
"finalUrl": "https://example.com/",
"performanceScore": 67,
"seoScore": 92,
"accessibilityScore": null,
"bestPracticesScore": null,
"lcpMs": 4124, "cls": 0.104, "tbtMs": 412, "fcpMs": 1890, "speedIndexMs": 3890, "ttiMs": 6013,
"fieldDataSource": "url",
"fieldLcpP75Ms": 2890, "fieldLcpCategory": "AVERAGE",
"fieldInpP75Ms": 180, "fieldInpCategory": "FAST",
"fieldClsP75": 0.12, "fieldClsCategory": "AVERAGE",
"fieldFcpP75Ms": 1700, "fieldTtfbP75Ms": 820,
"fieldOverallCategory": "AVERAGE",
"originField": { "lcpP75Ms": 2500, "clsP75": 0.05, "overallCategory": "FAST", "...": "..." },
"opportunities": [
{ "id": "unused-javascript", "title": "Reduce unused JavaScript", "displayValue": "Potential savings of 212 KiB", "savingsMs": 1200, "savingsBytes": 217000 },
{ "id": "render-blocking-resources", "title": "Eliminate render-blocking resources", "savingsMs": 780, "savingsBytes": 0 }
],
"lighthouseVersion": "12.8.2",
"fetchTime": "2026-09-29T10:00:00.000Z",
"source": "psi",
"error": null
}
  • Scores are 0–100 (null for categories you didn't request).
  • Lab metrics come from a single Lighthouse run (on Google's servers with a key, inside the actor without one); they vary a little between runs.
  • source is psi (PageSpeed Insights API) or lighthouse-local (no key; field data always null).
  • Field data (field*) is real Chrome user data over the last 28 days. fieldDataSource is url when the page itself has enough traffic, origin when Google falls back to whole-site data, and null when the site has too little traffic to be in CrUX (common for small sites; lab data is still returned).
  • Opportunities are the 5 failing audits with the largest estimated time (then byte) savings.
  • Errors never stop the run. A page that can't be loaded, an invalid URL or an exhausted quota produces a row with error set and the actor moves on. A SUMMARY record in the key-value store counts successes and errors.

Google API key (optional: adds real-user field data)

No key is needed: without one the actor runs Lighthouse locally (lab data only). Add a key if you want CrUX real-user Core Web Vitals and faster parallel runs. A key is free and gives about 25,000 requests/day:

  1. Open Google Cloud console → Credentials and create an API key.
  2. Enable the PageSpeed Insights API for that project.
  3. Paste the key into the Google API key input. It is stored as a secret input and only sent to Google.

Input

{
"urls": ["https://example.com", "https://example.com/pricing"],
"strategy": "both",
"categories": ["performance", "seo"],
"apiKey": "YOUR_GOOGLE_API_KEY"
}
FieldDefaultNotes
urls–Public URLs; https:// is added if missing.
strategymobilemobile, desktop or both (two rows per URL).
categories["performance"]Add seo, accessibility, best-practices as needed.
apiKey–Optional. Omit to run Lighthouse locally (lab only, no field data, concurrency 1); set to use the PSI API (adds field data).
localeenLanguage for audit titles.
maxConcurrency3Parallel PSI API requests, max 3 (each test takes 10–40 s). Local mode always runs 1 at a time.
maxRetries4PSI API mode only: retries on 429 rate limits and Google 5xx errors, with exponential backoff. Daily-quota errors are not retried.

Pricing

Pay per result: $0.02 per successfully tested URL × strategy (so one URL on mobile + desktop = $0.04). Rows that end in an error are not charged. Set a max charge on the run to cap spend; the actor stops cleanly when it is reached.

Use cases

  • Pre/post-release checks: run your key templates (home, category, product, article) on both devices and compare.
  • Performance monitoring & speed regression checks: re-run after each deploy to catch slow pages and page-weight regressions before users notice.
  • Agency reporting: schedule weekly runs across client sites and export to Google Sheets / CSV.
  • Find CWV failures: filter rows by fieldOverallCategory = SLOW or fieldInpCategory != FAST, then read opportunities.
  • SEO audits: add the seo category for a quick score alongside performance.

FAQ

Why do my lab numbers differ from pagespeed.web.dev? Lighthouse runs vary by a few points between runs. In API-key mode the data source is the same API; in the default local mode the test runs on a different machine and network, so compare runs made in the same mode. Why is field data empty? Without an API key the actor runs Lighthouse locally, which has no field data. With a key: the page/site doesn't have enough Chrome traffic to appear in the Chrome UX Report. Can it test pages behind a login or on localhost? No. The page must be publicly reachable. How long does it take? Roughly 20–40 seconds per test: one at a time in local mode, 3 in parallel with an API key.

Notes

  • Default mode runs the open-source Lighthouse engine locally. API-key mode uses the official Google PageSpeed Insights API, subject to Google's API terms.
  • Not affiliated with Google. Built and maintained with AI assistance. Problems or requests: use the Issues tab.

Other actors by the same developer (same flat pay-per-result pricing, no subscription):

Integrations

Run it from the Apify API, a schedule, or no-code tools: the Apify apps for Zapier, Make and n8n can start any public actor ("Run Actor") and read its dataset. AI agents can call it through the Apify MCP server.