Page Speed Analyzer — Lighthouse & Web Vitals
Pricing
from $100.00 / 1,000 page speed reports
Page Speed Analyzer — Lighthouse & Web Vitals
Run Google Lighthouse audits at scale — Core Web Vitals, performance scores, SEO analysis. Track site speed across all pages. No API key. Pay per record.
Pricing
from $100.00 / 1,000 page speed reports
Rating
0.0
(0)
Developer
NexGenData
Maintained by CommunityActor stats
0
Bookmarked
134
Total users
11
Monthly active users
2 days ago
Last modified
Share
⚡ Page Speed Analyzer — Lighthouse & Web Vitals scores for any URL, one page or a whole list
Get Google's official Lighthouse performance score and Core Web Vitals (LCP, FCP, TBT, CLS, Speed Index, Time to Interactive) for any public web page, as clean JSON you can put in a spreadsheet, a dashboard, a client report or an agent workflow. The audit runs on Google's PageSpeed Insights infrastructure, so the numbers are the same ones Google Search Console and PageSpeed Insights show — not a local emulation that drifts with server load.
Built for SEO and CRO consultants who report on client sites, agencies that audit prospects before a pitch, developers who want a performance regression check on every deploy, and anyone who is tired of pasting URLs into the PageSpeed Insights page one at a time. Send one url for a single report, or a urls list to score every page in one run — one record per page, priced per report delivered.
Unit of output: one report per URL. Pay-per-event: $0.10 per report plus a negligible start fee; two optional add-ons at $0.02 each. A page that cannot be reached is not charged.
📊 Sample Output

Real rows from a bulk run made for this README on 2026-09-19 (run I3kim0oBB3v5WdHPd, build 1.0.61, mobile strategy, PERFORMANCE category):
| url | device | performance | LCP | FCP | TBT | CLS | requests |
|---|---|---|---|---|---|---|---|
| https://www.python.org/ | mobile | 78 | 4.8 s | 2.7 s | 0 ms | 0.003 | 26 |
| https://www.shopify.com/ | mobile | 60 | 4.4 s | 2.9 s | 760 ms | 0.024 | 145 |
| https://apify.com/ | mobile | 33 | 14.8 s | 3.3 s | 1,740 ms | 0.001 | 249 |
| https://github.com/ | mobile | 29 | 22.0 s | 13.4 s | 1,340 ms | 0.072 | 157 |
Notice the url you send versus the finalUrl Google actually audited (redirects are followed and recorded), and that mobile scores are the throttled-4G Lighthouse view — the same page on desktop scores higher (shopify.com: 60 mobile, 73 desktop in the same session).
✅ What you get
One record per audited page:
url— the URL you sent (normalised to includehttps://).finalUrl— the URL Lighthouse ended on after redirects.strategy—mobileordesktop.fetchTime— ISO timestamp of the audit.lighthouseVersion— Lighthouse version Google ran (13.4.1 at the time of writing).source—psi-api(Google PageSpeed Insights, the normal path) orlighthouse-local(only when a run has 2 GB+ memory and Google could not audit the page).scores— object keyed by category (performance,accessibility,best-practices,seo,pwa— whichever you requested), each{score: 0–100, title}.metrics— object keyed by metric id:first-contentful-paint,largest-contentful-paint,total-blocking-time,cumulative-layout-shift,speed-index,interactive,server-response-time; each{displayValue, numericValue, score}.numericValueis milliseconds (CLS is unitless).opportunities— array of Lighthouse "opportunity" audits that did not score a perfect 100:{id, title, description, score, savingsMs}. Empty array when the page has none.totalRequestCount— number of network requests the page made during the audit;nullwhen Lighthouse did not report it.page_meta— only withaddonPageMetaExtracted: true:title,description,canonical,robots, Open Graph and Twitter-card tags.tech_stack— only withaddonTechStackDetected: true:technologies(detected CMS, framework, analytics and hosting signatures) andtech_count.
Fields that Google does not return for a page are null, never invented.
⚙️ Sample inputs
1. Quick start — one page, mobile, performance only (the Store example):
{"url": "https://www.example.com","strategy": "mobile","categories": "PERFORMANCE","addonPageMetaExtracted": false,"addonTechStackDetected": false}
Returns 1 report. Cost: 1 × $0.10 + start fee = $0.10.
2. Full audit of one page on desktop, all categories:
{"url": "https://www.shopify.com/pricing","strategy": "desktop","categories": "PERFORMANCE,ACCESSIBILITY,BEST_PRACTICES,SEO"}
Returns 1 report with four category scores. Cost: $0.10.
3. Bulk — score a whole list in one run (one run instead of one run per page):
{"urls": ["https://www.wikipedia.org","https://www.shopify.com","https://www.apify.com","https://www.github.com","https://www.python.org"],"strategy": "mobile","categories": "PERFORMANCE"}
Returns one report per reachable URL (5 here). Cost: 5 × $0.10 = $0.50. Two pages are audited at a time; about 10–15 pages fit the default 5-minute run timeout, so raise the run timeout under Run options for longer lists — pages the run could not start are named in the status message and are not charged.
🧾 JSON sample record
{"url": "https://www.shopify.com","finalUrl": "https://www.shopify.com/","strategy": "mobile","fetchTime": "2026-09-19T18:21:23.601Z","lighthouseVersion": "13.4.1","source": "psi-api","scores": { "performance": { "score": 60, "title": "Performance" } },"metrics": {"first-contentful-paint": { "displayValue": "2.9 s", "numericValue": 2859.5, "score": 54 },"largest-contentful-paint": { "displayValue": "4.4 s", "numericValue": 4434.6, "score": 38 },"total-blocking-time": { "displayValue": "760 ms", "numericValue": 761, "score": 39 },"cumulative-layout-shift": { "displayValue": "0.024", "numericValue": 0.024, "score": 100 },"speed-index": { "displayValue": "4.1 s", "numericValue": 4127.8, "score": 79 },"interactive": { "displayValue": "12.8 s", "numericValue": 12758.1, "score": 13 },"server-response-time": { "displayValue": "Root document took 20 ms", "numericValue": 16, "score": 100 }},"opportunities": [{ "id": "unused-javascript", "title": "Reduce unused JavaScript", "score": 0, "savingsMs": 300 }],"totalRequestCount": 145}
🔧 How it works
- Reachability check. The actor fetches the URL once (10-second limit). A DNS failure, connection refusal or HTTP 404/410 stops the run for that page immediately — in about two seconds, with nothing charged — and tells you why.
- Google PageSpeed Insights. The page is submitted to Google's PageSpeed Insights API with the strategy and categories you chose. Google runs Lighthouse on its own servers (typically 15–60 seconds, heavy pages up to two minutes) and returns the full Lighthouse report. Transient Google errors (HTTP 500 "unable to process", 429 rate limit) are retried up to four times with increasing waits.
- Parse. Category scores, the seven core metrics and the improvement opportunities are lifted from the Lighthouse JSON into the flat record above. Nothing is computed locally; nothing is estimated.
- Add-ons (only when switched on): the page's
<head>is fetched for meta tags, and response headers plus HTML signatures are matched for technology detection. Each add-on is charged only when it produced a value. - Charge and push. One dataset item is pushed per report, and that push is the charge. In bulk mode pages are audited two at a time, each pushed as it completes, and the run status message keeps a running count.
Not done: no login, no CAPTCHA bypass, no scraping of pages behind authentication, no local Chrome at the default memory size (a local Lighthouse fallback exists only for runs started with 2 GB or more, and is slower and less stable than Google's result).
⏰ Set it on a schedule
Performance regresses quietly — a new tag manager script, a marketing hero video, a CDN change. Put the actor on a schedule in the Apify Console (Schedules → Create) with your key pages in urls:
- Weekly report:
0 8 * * 1(Mondays 08:00 UTC) — one run, one row per page, ready for a Monday client email. - Daily deploy watch:
0 6 * * *— comparescores.performance.scoreday over day in a sheet or a Slack integration.
Each run is independent; nothing is stored between runs, so the dataset is a clean snapshot every time.
💰 Pricing example
Live prices for this actor (pay-per-event):
apify-default-dataset-item— $0.10 per report delivered.apify-actor-start— $0.00005 per run start (effectively free).addon-page-meta-extracted— $0.02 per page, only whenaddonPageMetaExtractedis on and meta was extracted.addon-tech-stack-detected— $0.02 per page, only whenaddonTechStackDetectedis on and a stack was detected.
Worked examples:
- One page, no add-ons: 1 × $0.10 + $0.00005 = $0.10.
- 25-page site audit in one bulk run, no add-ons: 25 × $0.10 = $2.50 (set the run timeout to 20 minutes for a list this size).
- 10 pages with both add-ons: 10 × ($0.10 + $0.02 + $0.02) = $1.40.
If a run returns 0 reports (unreachable page, or Google could not audit it), you pay the start fee only — a fraction of a cent.
Yield note. Live, public pages come back with a report; the ones that do not are pages Google's crawler cannot render (bot walls, login redirects, pages over ~60 s to load) or pages that return HTTP 4xx/5xx. Google's audit is a single lab run under throttled conditions, so the score can move a few points between runs on the same page; for trend reporting, compare the same strategy over time and read numericValue, not just the rounded score.
⚖️ Legal & ToS
The actor requests public web pages exactly as a browser would and submits the URL to Google's PageSpeed Insights API, subject to Google's API terms. It reads no private data, sets no cookies, submits no forms and does not attempt to bypass access controls. Use it on sites you own, sites you have been engaged to audit, or public pages for competitive benchmarking — the same use PageSpeed Insights itself is built for. Lighthouse and PageSpeed Insights are Google products; this actor is an independent NexGenData tool and is not affiliated with Google.
❓ FAQ
Do I need a Google API key? No. The actor carries its own PageSpeed Insights access. If you have your own key and want your own quota, pass it in googleApiKey.
Why is the mobile score so much lower than desktop? Lighthouse mobile simulates a mid-range phone on a throttled 4G connection; desktop does not. Both are Google's standard profiles. Pick the one your stakeholders look at (Search Console reports mobile).
Why does my score differ from what I saw in PageSpeed Insights a minute ago? Same engine, single lab run — network conditions on Google's side and third-party scripts on the page vary run to run. Differences of a few points are normal; differences of 20+ points mean the page itself changed (A/B test, consent banner, personalisation).
How is this different from the Lighthouse Bulk Checker? Both use Google's PageSpeed Insights. This actor returns the full metric set and improvement opportunities per page, one report per URL, single or list. The Bulk Checker is the sibling built around large URL lists — see its README for its own fields and price. For up to a few dozen pages with full detail, use this one with urls.
Can it audit pages behind a login? No — Google has to be able to fetch the page anonymously.
What happens on a dead URL in a bulk list? It is skipped, named in the run's status message and log, and not charged. The other pages are still delivered.
Which categories can I request? PERFORMANCE, ACCESSIBILITY, BEST_PRACTICES, SEO, PWA, comma-separated. Requesting more categories does not change the price.
🆘 Troubleshooting
- Run failed: "URL unreachable" / "HTTP 404" → the address is wrong or the page is gone. Nothing charged. Check the URL in a browser and re-run.
- "Google PageSpeed Insights could not analyze … right now (API error after retries)" → Google's audit backend returned errors for about a minute (this happens in bursts). Nothing charged. Re-run in a few minutes; if it persists for one specific page, the page is likely blocking Google's crawler.
- Bulk run says "N not started (run time limit)" → the list did not fit the run timeout. Raise Run options → Timeout (about 20 s per page, two in parallel) and re-run with the remaining URLs.
- Scores look "too good" / everything 100 → check
finalUrl; a redirect to a lightweight placeholder or consent page will score high. Audit the page you meant. totalRequestCountis null → Lighthouse did not report network records for that page; the scores are still valid.- Add-on fields missing → the add-on toggle is off (default), or the page exposed no meta tags / no recognisable stack; add-ons are charged only when they returned a value.
🔗 Related Actors
- Lighthouse Bulk Checker — the sibling for large URL lists.
- WCAG Accessibility Auditor — axe-core accessibility violations per page, for the same client audit.
- Wappalyzer Replacement — Tech Stack Detector — full technology fingerprint per site (deeper than the add-on here).
- Contact Info Scraper — emails, phones and social links from the sites you just audited, for outreach.
- Website Email Extractor — email addresses only, at volume.
🏢 About NexGenData — structured business, market, regulatory, IP and web-intelligence datasets from public sources, built as pay-per-result Apify actors. Browse the full catalog at apify.com/nexgendata.
⭐ Found this useful?
A rating on the Store helps other buyers find it — thank you.