Bulk PageSpeed & Lighthouse Checker: Core Web Vitals Monitor
Pricing
from $4.00 / 1,000 url checkeds
Bulk PageSpeed & Lighthouse Checker: Core Web Vitals Monitor
Bulk-check URLs or a whole sitemap with Google's official PageSpeed Insights API. Lighthouse scores, real-user Core Web Vitals (LCP, INP, CLS) from CrUX and top fixes. Schedule it for regression alerts. $4 per 1,000 checks.
Pricing
from $4.00 / 1,000 url checkeds
Rating
0.0
(0)
Developer
Datawell
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
12 days ago
Last modified
Categories
Features
Share
Bulk PageSpeed Insights & Core Web Vitals Checker
Run Google PageSpeed Insights on hundreds of URLs, or a whole sitemap, in one run. For every page you get the four Lighthouse scores (performance, accessibility, best practices, SEO), Core Web Vitals (LCP, INP, CLS, FCP, TTFB) from both the Lighthouse lab test and real Chrome users (CrUX), and the top fixes with estimated savings. Export to CSV, Excel or JSON, or schedule it weekly and get flagged when a page gets slower.
- ✅ Official Google APIs: PageSpeed Insights API v5 + Chrome UX Report (CrUX) API. No scraping.
- ✅ Bulk: paste a URL list or an XML sitemap (sitemap index and
.xml.gzsupported), mobile, desktop or both. - ✅ Real-user data: 28-day p75 field data from CrUX, with whole-site fallback when a page has too little traffic.
- ✅ Monitor mode: compares each run with the last one and flags score drops and Core Web Vitals that go from pass to fail.
- ✅ $4 per 1,000 checks, failed checks free, try it without a Google key (10 checks per run).
Built by Datawell.
What does the PageSpeed & Core Web Vitals Bulk Checker do?
It sends each URL to Google's PageSpeed Insights API, the same service behind pagespeed.web.dev. Google's servers run Lighthouse on the page and return the report; the Actor adds real-user Core Web Vitals from the CrUX API, flattens everything into one row per URL and device, and ranks the biggest fixes. It's a bulk Lighthouse / PageSpeed Insights API runner you don't have to build, host or rate-limit yourself.
Use it as a bulk PageSpeed test, a Core Web Vitals checker for multiple URLs, a sitemap speed audit, or a scheduled Core Web Vitals monitor for client sites.
Who uses it
- SEO and web agencies: weekly Core Web Vitals checks for every client site, with regression alerts sent to Slack or email.
- Technical SEO audits: load a sitemap, sort by worst performance score, and hand developers the top fixes per page.
- Developers: run it after a deploy through the API or a webhook to make sure a release didn't slow pages down.
- Competitor benchmarking: compare Lighthouse scores and real-user Core Web Vitals across competitors' homepages.
- Lead generation: find businesses whose sites fail Core Web Vitals.
How much does it cost?
Pay per result. No subscription, no monthly minimum.
| Event | Price |
|---|---|
| Run start | $0.01 per run |
| URL checked (1 URL × 1 device, successful checks only) | $0.004 |
| Example | Checks | Cost |
|---|---|---|
| Free trial without a key: 10 URLs, mobile | 10 | $0.05 |
| 100 URLs from a sitemap, mobile | 100 | $0.41 |
| 10 client homepages, mobile + desktop, weekly | 20 per run | $0.09 per week |
| 500 URLs, mobile + desktop | 1,000 | $4.01 |
Failed checks are never charged (unreachable pages, Google errors, quota limits). Monitor mode and regression alerts cost nothing extra. Set Maximum cost per run in the run options and the Actor stops before going over it. Google's APIs are free within your key's quota.
How to use it
- Paste your URLs (full URLs or bare domains) and/or a sitemap URL.
- Pick mobile, desktop or both and the Lighthouse categories you need.
- Optional: paste your own Google API key for unlimited runs (see below). Leave it empty to try 10 checks per run on Datawell's shared key.
- Click Start, then download the dataset as CSV, Excel or JSON, or use it through the Apify API, integrations (Google Sheets, Slack, Zapier, Make, n8n) or webhooks.
Free trial and adding your own Google API key
- Without a key: each run checks up to 10 URL × device combinations (10 URLs on mobile, or 5 on both) using Datawell's shared key. Anything above 10 is skipped and not charged, and the log tells you so. The shared key is used by everyone trying the Actor, so on busy days it can run out; those checks come back with
errorCode: SHARED_KEY_QUOTAand are not charged. - With your own key: no Actor limit; only Google's quota on your key applies. Getting one takes about 2 minutes, no billing needed:
- Open the Google Cloud credentials page, create or pick a project, and click Create credentials → API key.
- Enable the PageSpeed Insights API and, for real-user data, the Chrome UX Report API in that project.
- Optional but recommended: restrict the key to those two APIs.
- Paste the key into Google API key. It's a secret input: encrypted, sent to Google in a request header, never logged or saved to the dataset.
Example inputs
Sitemap audit (100 pages, mobile, performance + SEO):
{"apiKey": "YOUR_GOOGLE_API_KEY","urls": ["https://docs.apify.com/"],"sitemapUrl": "https://docs.apify.com/sitemap.xml","maxSitemapUrls": 100,"maxUrls": 100,"strategy": "mobile","categories": ["performance", "seo"]}
Monitor 10 client sites weekly (mobile + desktop, regression alerts): create a schedule that runs weekly with this input.
{"apiKey": "YOUR_GOOGLE_API_KEY","urls": ["https://client-one.com/", "https://client-two.com/", "...up to 10 sites"],"strategy": "both","maxOpportunities": 3,"monitorMode": true,"monitorStateKey": "agency-clients-weekly","minScoreDrop": 5}
Quick multi-URL check (no key needed, 5 checks = $0.03):
{"urls": ["https://www.wikipedia.org/", "https://web.dev/", "https://developer.mozilla.org/", "https://www.gov.uk/", "https://github.com/"],"strategy": "mobile"}
Output: what you get for each URL
One dataset row per URL and device:
| Field | What it is |
|---|---|
performanceScore, accessibilityScore, bestPracticesScore, seoScore | Lighthouse category scores, 0–100 |
passesCoreWebVitals | Real-user assessment: LCP, INP and CLS all "good" at p75 |
fieldLcpMs, fieldInpMs, fieldCls | Real-user 75th percentile values (28-day CrUX data) |
labLcpMs, labCls, labTbtMs | Lighthouse lab values from this run |
coreWebVitals | Full detail: lab + field LCP, INP, CLS, FCP, TTFB with pass/fail, field data source (page or origin) and collection period |
opportunities | Biggest improvements with estimated savings in ms and bytes, e.g. "Reduce unused JavaScript" |
finalUrl, fetchTime, lighthouseVersion | Where the page ended up after redirects, and when Google tested it |
status, errorCode, errorMessage | ok, or a clear error (page unreachable, rate limited, invalid key). Failed checks are free. |
regression, regressionReasons, previous | Monitor mode: what got worse since the last run |
Pass/fail uses Google's "good" thresholds: LCP ≤ 2.5 s, INP ≤ 200 ms, CLS ≤ 0.1, FCP ≤ 1.8 s, TTFB ≤ 0.8 s. Lighthouse can't measure INP in a lab, so lab TBT ≤ 200 ms is used as the lab stand-in.
Sample output item (shortened)
{"url": "https://www.example-shop.com/","strategy": "mobile","status": "ok","performanceScore": 41,"accessibilityScore": 92,"bestPracticesScore": 96,"seoScore": 100,"passesCoreWebVitals": false,"fieldLcpMs": 3100,"fieldInpMs": 150,"fieldCls": 0.05,"fieldDataSource": "crux-api:url","labLcpMs": 7862,"opportunities": [{ "id": "unused-javascript", "title": "Reduce unused JavaScript", "estimatedSavingsMs": 1350, "estimatedSavingsBytes": 412000 }],"regression": false}
Monitor mode: scheduled Core Web Vitals monitoring
Turn on Monitor mode, give the set a state key (for example client-acme), and schedule the Actor daily or weekly. Each run compares with the previous run for the same key and flags a regression when:
- any Lighthouse category score drops by at least N points (default 5), or
- a Core Web Vital (field or lab) goes from pass to fail.
Regressed rows get regression: true with plain-English reasons. The list is also saved as REGRESSIONS in the key-value store, so an Apify integration can post it to Slack or email it. Use one state key per client to keep their histories separate.
Integrations and API
- Apify API / SDKs: start runs and read results from your own code (JavaScript, Python, REST).
- Schedules: run weekly or daily with no server to maintain.
- Integrations: Google Sheets, Slack, Zapier, Make, n8n, webhooks.
- AI agents: callable through the Apify MCP server.
Google quotas: read this before large runs
- PageSpeed Insights: Google doesn't publish a fixed number; your per-minute and per-day limits are in your Cloud project under APIs & Services → PageSpeed Insights API → Quotas. The Actor rate-limits itself (default 60 requests/min, configurable), retries with exponential backoff on
429, and stops cleanly if your daily quota runs out. Checks that didn't happen aren't charged. - CrUX API: free, 150 queries per minute per project. If it isn't enabled on your key, the Actor falls back to the field data inside the PageSpeed response.
- Speed: each check takes Google about 10–30 seconds. With 4 parallel checks expect roughly 10–20 URLs per minute.
FAQ
Why do my scores differ from pagespeed.web.dev? Lighthouse lab scores vary from run to run with network and server load. Field data (passesCoreWebVitals, field*) is a 28-day real-user aggregate and is what Google uses as a Search signal.
A page has no field data. CrUX only covers pages and sites with enough Chrome traffic. With origin fallback on, the whole-site value is used and fieldDataSource ends in :origin.
Can I check pages behind a login or on localhost? No. Google's servers must be able to reach the page publicly.
Do I need a Google API key? Not to try it: runs without a key check up to 10 URL × device combinations. For anything bigger, add your own free key.
Is my API key safe? It's a secret input, encrypted at rest, sent to Google in a request header, and never written to logs or the dataset.
Disclaimer
This is an unofficial tool by Datawell. It is not affiliated with, endorsed by, or sponsored by Google. PageSpeed Insights, Lighthouse, Chrome UX Report and Core Web Vitals are Google products and terms; data comes from Google's public APIs under the applicable API key and Google's terms of service. Results are provided as-is, without warranty; lab scores can vary between runs.