Core Web Vitals Auditor · Bulk Lighthouse for many URLs
Pricing
$60.00 / 1,000 url measureds
Core Web Vitals Auditor · Bulk Lighthouse for many URLs
Bulk Lighthouse for many URLs — no PageSpeed API key needed. Real Chrome runs measure LCP, CLS, TBT, performance/SEO/accessibility/best-practices scores and ranked fix opportunities, mobile and desktop. Optional real-user CrUX field data. URLs that fail to measure are free.
Pricing
$60.00 / 1,000 url measureds
Rating
0.0
(0)
Developer
Chris S
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 hours ago
Last modified
Categories
Share
Core Web Vitals Auditor — bulk Lighthouse for a whole list of URLs
Measure Core Web Vitals and full Lighthouse scores for many URLs in one run: LCP, CLS, TBT, plus performance, accessibility, best-practices and SEO scores, plus the ranked list of fixes with the milliseconds and kilobytes each one saves. Mobile, desktop, or both. Clean JSON per URL, ready for a schedule, the API, Make, Zapier or an MCP client.
Google ranks on Core Web Vitals, and PageSpeed Insights checks one URL at a time in a browser tab. This Actor is a bulk Lighthouse API for the job that isn't: 50, 500 or 5,000 URLs, on a schedule, with the results in a dataset you can diff against last week — and it works without a PageSpeed API key, because every measurement is a real Chrome run inside the Actor, not a call to Google's rate-limited endpoint.
What you get per URL
{"url": "https://example.com/pricing","strategy": "mobile","mobile": {"scores": { "performance": 87, "accessibility": 96, "best-practices": 100, "seo": 92 },"metrics": {"largestContentfulPaint": { "value": 3117, "unit": "millisecond", "display": "3.1 s", "rating": "needs-improvement" },"cumulativeLayoutShift": { "value": 0, "unit": "unitless", "display": "0", "rating": "good" },"totalBlockingTime": { "value": 0, "unit": "millisecond", "display": "0 ms", "rating": "good" },"firstContentfulPaint": { "value": 3117, "display": "3.1 s" },"speedIndex": { "value": 3117, "display": "3.1 s" },"timeToInteractive": { "value": 3117, "display": "3.1 s" },"serverResponseTime": { "value": 50, "display": "Root document took 50 ms" }},"opportunities": [{ "id": "unused-javascript", "title": "Reduce unused JavaScript", "savingsMs": 820, "savingsBytes": 152975 },{ "id": "render-blocking-resources", "title": "Eliminate render-blocking resources", "savingsMs": 300 }],"failedAudits": [{ "id": "color-contrast", "title": "Background and foreground colors do not have a sufficient contrast ratio" }],"lighthouseVersion": "12.8.2","finalUrl": "https://example.com/pricing"}}
rating follows Google's published thresholds — good / needs-improvement / poor — so you can
filter a dataset down to the pages that actually fail without knowing the cut-offs by heart.
Real-user data, optional and on your own key
Lighthouse is a lab measurement: reproducible, synthetic, one simulated device. What Google actually uses for ranking is field data from real Chrome users.
Put a free Chrome UX Report API key into
pageSpeedApiKey and each item additionally carries fieldData: the p75 values real visitors
experienced for LCP, CLS, INP and TTFB, with the full histogram and the collection period.
Deliberately your key, not ours: quotas stay yours, and nothing about your run depends on somebody
else's rate limit. Without a key nothing fails — you get the complete lab measurement and the
fieldData section is simply absent. URLs with too little real traffic return
{"available": false, "reason": "insufficient-real-user-data"}, which is a normal answer, not an
error.
Input
| Field | Meaning |
|---|---|
urls | The exact pages to measure. No crawling — what you list is what runs. |
strategy | mobile (what Google ranks on), desktop, or both. both measures twice and is still charged once. |
pageSpeedApiKey | Optional CrUX key for real-user field data. Stored as a secret. |
Example input
{"urls": ["https://example.com/","https://example.com/pricing","https://example.com/blog/launch"],"strategy": "mobile"}
Three URLs, measured on mobile (what Google ranks on), $0.18 total. Add "pageSpeedApiKey" to also
get real-user CrUX data per URL.
Pricing
$0.06 per URL measured. A URL that cannot be measured at all is delivered with
measurementFailed: true and is free — you never pay for a failed run.
Each measurement is a genuine Chrome run, not an API lookup, which is why this costs more than a plain HTML crawl and why a page takes ~15–20 seconds. Budget roughly 4 GB of memory.
Honest limits
- Lab numbers vary between runs. Throttling is simulated; ±10 % on LCP between two runs of the same page is normal. For trend lines, schedule the Actor and compare over days, not single runs.
- No crawling. This Actor measures the URLs you give it. To find the URLs, and for broken links, canonicals, structured-data errors and duplicate titles, use the SEO Health Auditor — the two are built to be run side by side.
- Contrast and screen-reader checks are Lighthouse's, which catches a meaningful subset of accessibility problems, not a full WCAG audit.
- Pages behind a login, a hard bot wall or a CAPTCHA cannot be measured; you get the error, free.
Typical uses
- Weekly regression watch over your 200 most important URLs — schedule it, diff the datasets, and see which release made LCP worse.
- Client reporting for agencies: one run per client site, scores and the top three fixes straight into a report.
- Pre-launch gate in CI: run the Actor via API against a staging list and fail the build if the performance score drops below your threshold.
- AI-agent workflows: an agent that maintains or reviews a site can measure it on demand — see below.
Use with AI agents (MCP)
This Actor is available as a tool through the Apify MCP server, so agents in Claude, ChatGPT or any MCP client can trigger measurements and read the results directly. Prompts that map onto this Actor:
- "Measure Core Web Vitals for these five URLs on mobile and tell me which ones fail Google's thresholds."
- "Which single fix would save the most milliseconds across my landing pages?"
- "Re-measure the pricing page and compare the performance score with the last run."
Every metric carries its own rating against Google's published thresholds and a human-readable
display value, so an agent doesn't need to know that 2.5 s is the LCP cut-off.
FAQ
Do I need a Google PageSpeed API key? No. Lighthouse runs in a real Chrome inside the Actor — no external API, no shared quota, no 429s. A key is only useful if you additionally want real-user CrUX field data.
What is the difference between the lab scores and fieldData?
Lab (Lighthouse) is a reproducible synthetic run on one simulated device — ideal for regression
testing. Field (CrUX) is what real Chrome users experienced over the last 28 days — it is what
Google actually ranks on. This Actor gives you lab always, field optionally on your key.
Why do two runs of the same page differ slightly? Throttling is simulated; ±10 % on LCP between runs is normal. For decisions, look at trends across scheduled runs, not at a single number.
How is strategy: "both" charged?
Once per URL, even though it measures twice (mobile + desktop). Mobile-only is the default because
mobile is what Google ranks on.
What happens with a URL that can't be measured?
It is delivered with measurementFailed: true and the error message — and it is free. You only
pay for URLs that produced a measurement.
Can I use this in CI? Yes — call the Actor via the Apify API from your pipeline against a list of staging URLs and fail the build if a score drops below your threshold. A run takes ~15–20 s per URL.
More from this publisher
- SEO Audit + AI Visibility — crawls your site, finds broken links, canonical contradictions and structured-data errors, and checks whether AI systems can cite you. Built to run alongside this Actor: audit there, measure here.
- TED Tender Scraper — search and monitor EU public procurement notices via the official TED API.
- E-Invoice Parser — XRechnung, ZUGFeRD/Factur-X and UBL e-invoices to clean, validated JSON.