Bulk Lighthouse Audit – No API Key Needed
Pricing
from $10.00 / 1,000 lighthouse audit (local engine)s
Bulk Lighthouse Audit – No API Key Needed
Run real Google Lighthouse on a list of URLs or a whole sitemap: Performance, Accessibility, Best Practices and SEO scores, LCP/CLS/TBT, top fixes with savings, failed audits and HTML reports. No PageSpeed API key or quota required. Export CSV or use in CI.
Pricing
from $10.00 / 1,000 lighthouse audit (local engine)s
Rating
0.0
(0)
Developer
Refill Flows
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
4 days ago
Last modified
Categories
Features
Share
Run real Google Lighthouse on a list of URLs or a whole sitemap, on mobile and desktop, with this Bulk Lighthouse Audit. No PageSpeed Insights API key and no shared quota. For every page you get:
- Performance, Accessibility, Best Practices and SEO scores (0–100)
- Core Web Vitals lab metrics: LCP, CLS and TBT, plus FCP, Speed Index, TTI, TTFB, page weight, DOM size and request count, each rated good, needs improvement or poor
- The top fixes, ranked by estimated time and bytes saved
- Failing accessibility, SEO and best-practice checks, listed by name
- The LCP element and LCP breakdown (TTFB vs render delay)
- An optional shareable HTML Lighthouse report for each page
- Optional real-user CrUX field data (p75 LCP, INP, CLS, FCP and TTFB, with pass or fail) when you add a free Google API key
- A site summary (
SUMMARY): average scores, the slowest pages and the Core Web Vitals pass rate
Try it with the prefilled https://example.com input, or point it at your sitemap.
Why this Lighthouse checker?
- No API key and no quota. Most bulk PageSpeed tools call Google's PageSpeed Insights API and break when its shared quota runs out. This Actor runs Lighthouse 13 inside its own Chrome, so it works on day one. If you have a key, you can switch to the PSI engine, which is cheaper, and add real-user CrUX data.
- Sitemap in, audit out. Paste
https://yoursite.com/sitemap.xml. Sitemap indexes and.gzfiles are handled for you. - Stable numbers. Set
runsPerUrl: 3and the Actor keeps the median run, as Google recommends. - Made for monitoring and CI. Set a
performanceThresholdbudget, getpassedThresholdper page, schedule daily runs and send results to Slack, Sheets or a webhook. - Easy for AI agents. A flat JSON schema and clear field names make it a simple MCP tool for "audit this site's speed".
Who is it for?
- SEO and web agencies running monthly client speed and SEO reports across hundreds of URLs.
- Ecommerce teams checking that every product template passes Core Web Vitals after a release.
- Developers who want a deploy pipeline to fail when performance drops below budget.
- Sales teams prospecting agencies who want to find slow sites to pitch speed work to.
How to run a bulk Lighthouse audit
- Open the Bulk Lighthouse Audit and click Try for free.
- Paste one or more URLs, or a sitemap URL. The form is prefilled with
https://example.com. - Keep Devices on
mobilefor a first run, or adddesktop. Leave Save full HTML Lighthouse reports off unless you need the shareable report. - Click Start. When the run finishes, open the dataset for scores and Core Web Vitals, and the key-value store for the
SUMMARYrecord. Export CSV or JSON, or pull results through the API.
A single mobile audit usually finishes in well under a minute.
How much does a Lighthouse audit cost?
| Event | Price |
|---|---|
| Actor start | $0.005 per run (charged per GB of memory; this Actor defaults to 2 GB, so $0.01) |
| Lighthouse audit (local engine, no key) | $0.01 per page per device |
| Audit with your PageSpeed API key | $0.003 per page per device |
So a 100-page site on mobile costs about $1.00, or $2.00 for mobile plus desktop. With your own Google key it is $0.30 per 100 pages. Platform usage is included. Pages that cannot load are reported with an error field and are not charged.
Input
{"sitemapUrls": ["https://crawlee.dev/sitemap.xml"],"urls": ["https://apify.com", "https://example.com"],"maxUrls": 50,"strategies": ["mobile", "desktop"],"performanceThreshold": 80,"runsPerUrl": 1,"saveHtmlReports": true}
Output
One page, mobile, shortened:
{"url": "https://www.python.org/","strategy": "mobile","engine": "local","finalUrl": "https://www.python.org/","lighthouseVersion": "13.6.0","scores": {"performance": 86,"accessibility": 75,"bestPractices": 100,"seo": 92},"metrics": {"firstContentfulPaintMs": 2189,"largestContentfulPaintMs": 3786,"totalBlockingTimeMs": 13,"cumulativeLayoutShift": 0.003,"speedIndexMs": 2189,"timeToInteractiveMs": 3786,"serverResponseTimeMs": 71,"totalByteWeight": 474666,"domSize": 913,"networkRequests": 23},"labCwv": {"lcp": "needs-improvement","cls": "good","tbt": "good"},"labCwvAssessment": "needs-improvement","opportunities": [{"id": "unused-css-rules","title": "Reduce unused CSS","displayValue": "Est savings of 129 KiB","savingsMs": 710,"savingsBytes": 131609}],"failedAudits": {"accessibility": ["Background and foreground colors do not have a sufficient contrast ratio."],"seo": ["Links do not have descriptive text"],"bestPractices": []},"passedThreshold": true,"fieldData": null,"runs": 1,"error": null,"auditedAt": "2026-11-10T20:23:47.897Z"}
The dataset has two views: Scores & Core Web Vitals, and Top fixes with one row per recommendation. The SUMMARY record in the key-value store holds the site-level averages.
How to run Lighthouse in bulk with Python
from apify_client import ApifyClientclient = ApifyClient("YOUR_APIFY_TOKEN")run = client.actor("refillflows/bulk-lighthouse-audit").call(run_input={"urls": ["https://example.com"],"strategies": ["mobile"],"saveHtmlReports": False,})for row in client.dataset(run["defaultDatasetId"]).iterate_items():print(row["url"], row["scores"], row["labCwv"])
Schedule it daily, set a performanceThreshold, and post passedThreshold: false rows to Slack or a webhook from a CI pipeline.
Notes and tips
- Lab scores come from a simulated mid-range phone on slow 4G, the same method PageSpeed Insights uses. They differ slightly between machines, so use
runsPerUrlof 3 or more when you need precise numbers. Real-user (CrUX) data needs a Google API key. - To get a free Google API key, open Google Cloud Console, go to APIs & Services, enable the PageSpeed Insights API and the Chrome UX Report API, and create an API key.
- Keep
maxConcurrencyat 1 for the most accurate local scores. Use 2–4 with 4 GB or more of memory when you need speed. - Pages that can't load (DNS errors, interstitials, no content painted) are reported with an
errorfield and aren't charged.
FAQ
Do I need a PageSpeed Insights API key?
No. The default local engine runs Lighthouse 13 in Chrome inside the Actor, so there is no Google quota to run out of. Add a key only if you want cheaper PSI-backed audits and real-user CrUX field data.
Can I audit a whole sitemap?
Yes. Paste your sitemap.xml (indexes and .gz files are fine) and set Max URLs. The Actor collects the loc entries, de-duplicates them, and audits each page.
How is this different from pagespeed.web.dev?
pagespeed.web.dev tests one URL at a time in your browser. This Actor does the same style of Lighthouse audit in bulk, on a schedule, and returns a dataset you can export to CSV, send to Sheets, or assert on in CI.
May I audit any website?
The Actor loads only the pages you give it, the same way a normal browser visit does. Only audit sites you own or are allowed to test.
Other tools by Refill Flows
- Luma Events Scraper — public Luma (lu.ma) events by city, category or calendar.
- Shopify App Store Scraper — app rankings, pricing plans and merchant reviews.
Support
Open an issue on the Issues tab. Maintained by Refill Flows.