Website Performance Analyzer — Speed Test & Core Web Vitals avatar

Website Performance Analyzer — Speed Test & Core Web Vitals

Pricing

from $5.00 / 1,000 analyzed urls

Go to Apify Store
Website Performance Analyzer — Speed Test & Core Web Vitals

Website Performance Analyzer — Speed Test & Core Web Vitals

Test website speed for any list of URLs: TTFB, load time, page weight, compression, redirects, caching and security headers — with a transparent 0-100 score and findings. Optionally adds the Google Lighthouse score and Core Web Vitals (FCP, LCP, CLS, TBT) via PageSpeed Insights.

Pricing

from $5.00 / 1,000 analyzed urls

Rating

0.0

(0)

Developer

Nicolas van Arkens

Nicolas van Arkens

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 days ago

Last modified

Share

Test the performance of any list of websites in one run. For every URL this actor measures real server response time (TTFB), full load time, page weight, compression, HTTP version, redirects, resource counts, caching and security headers — and turns them into a transparent 0–100 performance score with a graded A–F rating and the exact reason for every lost point.

Optionally, each URL is also run through the official Google PageSpeed Insights API, adding the Lighthouse performance score, lab metrics (FCP, LCP, CLS, TBT, Speed Index) and real-user Core Web Vitals field data from the Chrome UX Report.

Perfect for agencies auditing client sites, SEO monitoring, competitor benchmarking, and bulk performance checks across hundreds of URLs — no browser, no setup, results as a clean dataset you can export to JSON, CSV, or Excel.

What data you get

FieldDescription
url / finalUrlThe URL you asked for and where it ended up after redirects
performanceScoreTransparent 0–100 score from direct measurements
gradeA–F rating (A ≥ 90, B ≥ 80, C ≥ 70, D ≥ 55, F below)
findingsHuman-readable list of every issue that cost points
ttfbMsTime to first byte — real server response time in ms
totalTimeMsTime to download the full document in ms
htmlBytesDocument size (decoded)
httpVersionHTTP/1.1, HTTP/2 … (HTTP/1.1 is flagged)
redirectsNumber of redirect hops before the final URL
contentEncodingCompression in use (gzip / br) — missing compression is flagged
resourcesCounts of scripts, external scripts, stylesheets, images, iframes, approximate DOM size, viewport meta presence
cachingCache-Control, ETag, Last-Modified, Expires headers
securityHeadersPresence of HSTS, CSP, X-Content-Type-Options, X-Frame-Options, Referrer-Policy, Permissions-Policy
serverServer header (e.g. cloudflare, nginx)
pagespeedOptional Google Lighthouse score, lab metrics (FCP/LCP/CLS/TBT/Speed Index) and Core Web Vitals field data

Input

{
"urls": ["https://example.com", "https://www.wikipedia.org"],
"strategy": "mobile",
"runPagespeed": true
}
  • urls — one URL per line; bare domains work too (https:// is added).
  • strategymobile or desktop, used for the Lighthouse run.
  • runPagespeed — set false to skip Google and rely on direct measurements only (faster).
  • googleApiKey — optional, free (get one here, 25,000 requests/day). Without a key the Lighthouse part uses Google's shared anonymous quota, which is often busy — the direct measurements always work regardless.

Output sample (real run)

{
"url": "https://example.com",
"finalUrl": "https://example.com",
"success": true,
"statusCode": 200,
"performanceScore": 98,
"grade": "A",
"findings": [
"Missing Strict-Transport-Security header"
],
"ttfbMs": 181,
"totalTimeMs": 181,
"htmlBytes": 559,
"httpVersion": "HTTP/2",
"redirects": 0,
"contentType": "text/html",
"contentEncoding": "br",
"resources": {
"scripts": 0,
"externalScripts": 0,
"stylesheets": 0,
"images": 0,
"iframes": 0,
"domNodesApprox": 12,
"hasViewportMeta": true
},
"caching": {
"cacheControl": null,
"etag": null,
"lastModified": "Tue, 09 Jun 2026 21:01:00 GMT",
"expires": null
},
"securityHeaders": {
"strict-transport-security": false,
"content-security-policy": false,
"x-content-type-options": false,
"x-frame-options": false,
"referrer-policy": false,
"permissions-policy": false
},
"server": "cloudflare"
}

A slow page looks like this instead (nytimes.com, mobile): score 69 (D) with findings such as "33 external scripts referenced (target < 15)", "Very large DOM (~4100 nodes)", and "One redirect before the final URL".

Use cases

  • Agency site audits — run a client's whole sitemap through it and hand over a prioritized findings list per page.
  • Competitor benchmarking — score your site against competitors on identical, objective measurements.
  • Continuous monitoring — schedule it on Apify and diff scores week over week; integrate with Make/Zapier/webhooks.
  • Pre-launch checks — catch missing compression, redirect chains, HTTP/1.1, missing caching or security headers before going live.

FAQ

How is the 0–100 score computed? It starts at 100 and deducts points for measurable issues (slow TTFB, missing compression, heavy HTML, HTTP/1.1, redirect chains, excessive scripts/images/DOM size, missing viewport/caching/HSTS). Every deduction appears in findings, so the score is fully explainable — no black box.

Is this the same as Lighthouse? The direct score is its own measurement of server- and document-level performance. If you enable runPagespeed, you also get the official Google Lighthouse score and Core Web Vitals alongside it.

Do I need a Google API key? No — but Lighthouse enrichment is much more reliable with one (it's free). Without a key, the actor shares Google's anonymous quota with everyone else; when that quota is busy you still get all direct measurements.

Does it render JavaScript? No — that's why it's fast and cheap. Rendering metrics (LCP, CLS, TBT) come from the optional Lighthouse integration instead.

What happens with unreachable URLs? They produce an error row (success: false) with the reason, and you are not charged for them — you pay only for successful results.

How is it priced? Pay per event: a small fee per successfully analyzed URL. Failed URLs are free.