Open-Source Cold Email & Warmup Platform
Warmbly는 메일함을 예열하고 캠페인 전송·답변 triage를 지원하는 오픈소스 콜드 이메일 플랫폼입니다
Google PageSpeed Insights API로 URL을 대량 검사, Lighthouse·LCP·CLS·INP·필드 데이터 제공
Bulk-audit URLs with Google's official PageSpeed Insights API: Lighthouse scores, LCP, CLS, INP and field data for mobile and desktop. Pay per audited p...
마케팅TypeScript · DockerfileGitHub @josh99smith온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기Audit hundreds of URLs with Google's official PageSpeed Insights API: Lighthouse performance, SEO and accessibility scores plus LCP, INP and CLS for mobile and desktop. Built-in API key, pay per page, failures free. Runs on Apify Store: https://apify.com/josh99smith/pagespeed-insights-audit
저장소 README에서 가져옴
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Audit any list of pages with the official PageSpeed Insights API and get back Core Web Vitals plus the Lighthouse performance, accessibility, best-practices and SEO scores, the lab metrics behind them (LCP, CLS, TBT, FCP, Speed Index, TTI) and real-user field data, for mobile and desktop, in one downloadable dataset.
Built for SEO agencies, web developers and site owners who need the same numbers as pagespeed.web.dev for dozens or thousands of URLs at once. You pay a flat price per audited page; pages Google cannot audit are reported free of charge.README 전문 보기 ↗Audit any list of pages with the official PageSpeed Insights API and get back Core Web Vitals plus the Lighthouse performance, accessibility, best-practices and SEO scores, the lab metrics behind them (LCP, CLS, TBT, FCP, Speed Index, TTI) and real-user field data, for mobile and desktop, in one downloadable dataset.
Built for SEO agencies, web developers and site owners who need the same numbers as pagespeed.web.dev for dozens or thousands of URLs at once. You pay a flat price per audited page; pages Google cannot audit are reported free of charge.
For every URL and device strategy the Actor calls the official PageSpeed Insights API v5, exactly as pagespeed.web.dev does. Google runs Lighthouse on the page in its own data centre; nothing is scraped and no browser runs inside the Actor. The Actor reduces the large report to category scores (0 to 100), lab metrics, field data (when Google has enough real-user traffic for the page or its origin) and, optionally, the top failing audits.
Each audit takes Google roughly 10 to 30 seconds, so 100 URLs at the default concurrency finish in about 10 minutes. Two Lighthouse runs of the same page can differ by a few points.
{
"urls": ["https://example.com", "https://www.wikipedia.org"],
"strategy": "both",
"categories": ["performance", "accessibility", "best-practices", "seo"],
"includeAuditDetails": true
}
Audit a few URLs and get the results back in one HTTP call:
curl -X POST "https://api.apify.com/v2/acts/josh99smith~pagespeed-insights-audit/run-sync-get-dataset-items?token=<YOUR_API_TOKEN>" \
-H "Content-Type: application/json" \
-d '{"urls": ["https://example.com"], "strategy": "mobile"}'
Python, with the apify-client package:
from apify_client import ApifyClient
client = ApifyClient("<YOUR_API_TOKEN>")
run = client.actor("josh99smith/pagespeed-insights-audit").call(
run_input={"urls": ["https://example.com", "https://www.wikipedia.org"], "strategy": "both", "includeAuditDetails": True}
)
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item["url"], item["strategy"], item.get("scores"))
JavaScript or TypeScript, with the apify-client package:
import { ApifyClient } from "apify-client";
const client = new ApifyClient({ token: "<YOUR_API_TOKEN>" });
const run = await client.actor("josh99smith/pagespeed-insights-audit").call({
urls: ["https://example.com", "https://www.wikipedia.org"],
strategy: "mobile",
categories: ["performance", "seo"],
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);
The Actor is exposed as a tool by the Apify MCP server, so an AI agent can call it by name. Add this to your MCP client configuration (Claude Desktop, Claude Code, Cursor, VS Code, Windsurf and others):
{
"mcpServers": {
"apify": {
"url": "https://mcp.apify.com?tools=josh99smith/pagespeed-insights-audit",
"headers": { "Authorization": "Bearer <YOUR_API_TOKEN>" }
}
}
}
Then ask, for example: "Audit https://example.com on mobile with josh99smith/pagespeed-insights-audit and list the top opportunities." The agent fills in the input, runs the Actor and reads the dataset back; you pay the same per-result price as in the Console.
The Actor can also be scheduled, or connected to Zapier, Make, n8n and Google Sheets in the Integrations tab.
One record per URL and strategy. A successful record (trimmed):
{
"url": "https://example.com",
"finalUrl": "https://example.com/",
"strategy": "mobile",
"success": true,
"scores": { "performance": 72, "accessibility": 88, "bestPractices": 96, "seo": 100 },
"labMetrics": { "fcpMs": 2144, "lcpMs": 3413, "cls": 0.042, "tbtMs": 420, "speedIndexMs": 3187, "ttiMs": 4902 },
"fieldData": {
"lcpMs": { "percentile": 2371, "category": "FAST" },
"inpMs": { "percentile": 214, "category": "AVERAGE" },
"cls": { "percentile": 0.05, "category": "FAST" },
"fcpMs": { "percentile": 1312, "category": "FAST" },
"ttfbMs": { "percentile": 612, "category": "FAST" },
"overallCategory": "FAST",
"originFallback": false
},
"opportunities": [
{
"id": "render-blocking-resources",
"title": "Eliminate render-blocking resources",
"savingsMs": 780,
"savingsBytes": null,
"displayValue": "Est savings of 780 ms"
},
{
"id": "unused-javascript",
"title": "Reduce unused JavaScript",
"savingsMs": 450,
"savingsBytes": 120832,
"displayValue": "Est savings of 118 KiB"
}
],
"failedAudits": [
{
"id": "color-contrast",
"title": "Background and foreground colors do not have a sufficient contrast ratio.",
"category": "accessibility",
"score": 0,
"displayValue": "3 failing elements"
}
],
"lighthouseVersion": "12.8.2",
"analysisTimestamp": "2026-09-18T20:41:07.512Z",
"fetchedAt": "2026-09-18T20:41:21.203Z"
}
Pages that could not be audited are still recorded, so nothing silently disappears from your list:
{
"url": "https://this-domain-does-not-exist.example",
"strategy": "mobile",
"success": false,
"errorType": "dns",
"error": "Lighthouse could not audit the page (DNS_FAILURE): ...",
"statusCode": 500,
"fetchedAt": "..."
}
| Field | Description |
|---|---|
url / finalUrl | The URL you supplied and the URL Lighthouse ended on after redirects. |
strategy | mobile or desktop. |
success | true when Google returned a usable Lighthouse report. Only these records are billed. |
scores | Lighthouse category scores as integers from 0 to 100 (null for categories you did not request). 90+ is "good", 50 to 89 "needs improvement". |
labMetrics | Lighthouse lab measurements from Google's test device: FCP, LCP, CLS, TBT, Speed Index and TTI. Times in milliseconds. |
fieldData | Real-user Core Web Vitals from the Chrome UX Report (28-day 75th percentile): LCP, INP, CLS, FCP and TTFB, each with percentile and category (FAST, AVERAGE, SLOW), plus Google's overallCategory. null when the page has too little traffic; originFallback marks origin-level data. |
opportunities[] | With Include audit details: failing performance audits with estimated savingsMs / savingsBytes, largest first, up to 15. |
failedAudits[] | With Include audit details: failing accessibility, best-practices and SEO audits, most heavily weighted first, up to 15. |
lighthouseVersion / analysisTimestamp | The Lighthouse version Google used and when the analysis ran. |
errorType | For failures: invalid-url, rate-limited, http-error, dns, timeout, network, missing-api-key or other. |
You pay a flat price per successfully audited URL and strategy (see the price next to the Start button). Auditing 100 URLs on mobile is 100 events; on both mobile and desktop it is 200. Invalid URLs, pages Google cannot load and quota errors cost nothing. There is no charge for Actor start-up, and the Actor stops automatically when it reaches the maximum cost you set for a run, so a large list never produces a surprise bill.
How it compares (September 2026). Actors that run their own headless Lighthouse charge $0.04 to $0.10 per page and, per Apify's public stats, fail on a quarter of runs; the cheapest alternative relies on an undocumented Google endpoint. This Actor calls the official PageSpeed Insights API at $0.004 per audit, handles many URLs per run on mobile and desktop, and never bills quota errors or pages Google could not load.
By default the Actor uses a built-in Google API key shared by all its users. The PageSpeed Insights API is free but rate limited (25,000 requests per day and a few hundred per minute per key). For large or scheduled workloads, create your own free key in the Google Cloud Console (enable the "PageSpeed Insights API", then create an API key) and paste it into the Google API key field. The key is stored encrypted and never written to the log or dataset. When a quota is exhausted you get free rate-limited failure records; retry later or use your own key.
desktop when the audience is mostly desktop.fieldData.overallCategory reflects real users, scores.performance is a lab estimate. Fix field data first.timeout records and finishes normally, so you keep everything already audited.Yes: same API, same Lighthouse run in Google's data centre, subject only to the usual run-to-run variance.
Google only publishes Chrome UX Report data for pages and origins with enough real-user traffic. Low-traffic pages have lab data only.
No. Google's servers must be able to fetch the page publicly; protected or localhost pages fail with http-error.
No scraping is involved. The Actor uses Google's official, documented PageSpeed Insights API under its terms of service and audits only the public pages you specify.
There is no hard limit on list size; the shared key allows a few hundred audits per minute and 25,000 per day across all users, and your own key gives you that quota to yourself. When a quota is exhausted, affected URLs are reported as free rate-limited failures and the run finishes normally.
No. Output fields are stable: existing fields are never renamed or removed without a major version bump announced in the changelog, and new fields are only ever added. You can build integrations on the schema without checking it after every run.
Best Damn PageSpeed Insights Audit plugs into the tools you already use through Apify integrations, so results can flow on without anyone downloading a file. Ready-made connectors include:
You can also attach webhooks to trigger your own endpoint whenever a run succeeds, fails or times out. For example, alert Slack when a page drops below your performance threshold, or log every audit to a Google Sheet for trend charts.
Found a page that fails unexpectedly, or a field you are missing? Open a ticket in the Issues tab of this Actor. If this Actor saved you time, a review on its Store page helps other people find it.
This Actor is open source under the MIT licence. PageSpeed Insights and Lighthouse are trademarks of Google LLC; this Actor is not affiliated with Google.
The full source code is on GitHub: josh99smith/pagespeed-insights-audit. Stars and pull requests are welcome.