Bulk PageSpeed & Core Web Vitals Checker (PSI)
Pricing
from $6.40 / 1,000 url auditeds
Bulk PageSpeed & Core Web Vitals Checker (PSI)
Audit many URLs with Google PageSpeed Insights API v5. Returns performance score, LCP, CLS, INP/FID, FCP, TTFB and top opportunities for mobile, desktop or both. No API key needed (optional own key for heavy usage).
Pricing
from $6.40 / 1,000 url auditeds
Rating
0.0
(0)
Developer
Tesselyn
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
17 days ago
Last modified
Categories
Security
Limited permissionsShare
Audit many URLs at once with the official Google PageSpeed Insights API v5. Get the performance score, Core Web Vitals (LCP, CLS, INP/FID), FCP, TTFB and a short list of the top Lighthouse opportunities — for mobile, desktop, or both. No API key needed — the Actor uses a built-in Google key by default; you can add your own key for heavy usage. You pay only for audits that return a Lighthouse result.
⚠️ Automated, informational results, provided "as is". Not legal, compliance or SEO advice. Lab scores vary by run; a good score does not guarantee rankings, a Core Web Vitals "pass" in Search Console or more traffic. See Terms of use.
What does it do?
- Takes a list of public URLs (up to 200) and an optional strategy (
mobile/desktop/both). - Calls Google PageSpeed Insights API v5 for each URL × strategy.
- Returns, per audit: performance score (0–100), LCP, CLS, INP (or FID / max-potential-FID when INP is absent), FCP, TTFB, TBT, Speed Index, TTI, up to 10 opportunities with estimated savings, optional CrUX field categories when Google still returns them, and stable error codes when something fails.
- Optionally also requests Accessibility, Best Practices and SEO category scores.
- Writes a run-summary row with counts and the average performance score.
Who is it for?
SEO and performance agencies monitoring client sites, developers running pre-release checks, product teams watching Core Web Vitals over time, and AI / automation agents that need structured CWV data via the Apify API, MCP, Make, Zapier or n8n.
Google API key (optional)
No API key is needed by default. If you leave the secret input field googleApiKey empty, the Actor uses its built-in Google PageSpeed Insights API key.
The built-in key shares one Google daily quota across all users. If that quota runs out, affected audits come back as rows with error: "QUOTA_EXCEEDED" and charged: false (the rest of the run is skipped and also not charged). Try again later (Google resets the daily quota), or use your own key.
Heavy usage? Add your own key. If you set googleApiKey, your key is always used instead of the built-in one, and Google's quota for it is yours alone:
- Open Google Cloud Console and create or pick a project.
- Enable PageSpeed Insights API.
- Create an API key (Credentials). Restrict it to the PageSpeed Insights API if you can.
- Paste the key into
googleApiKey. Apify encrypts secret inputs at rest; this Actor never logs any key. The run log only says which key source was used (user keyorbuilt-in key).
With your own key, Google API usage and quotas belong to your own Google Cloud project.
How to use it
- Add the URLs to audit.
- Pick a strategy (start with
mobile). - Set Max audits to cap cost.
- Optional: paste your own Google API key into
googleApiKeyfor heavy usage. - Run, then open the Scores & Core Web Vitals dataset view or download CSV/JSON.
Input example
{"urls": [{ "url": "https://www.example.com/" },{ "url": "https://www.example.com/pricing" }],"strategy": "mobile","maxAudits": 20}
Output example
{"type": "url-result","url": "https://www.example.com/","strategy": "mobile","finalUrl": "https://www.example.com/","performanceScore": 87,"lcpMs": 2450.0,"cls": 0.05,"inpMs": 180.0,"fcpMs": 1200.0,"ttfbMs": 320.0,"tbtMs": 150.0,"opportunities": [{ "id": "unused-javascript", "title": "Reduce unused JavaScript", "savingsMs": 450.0 }],"error": null,"charged": true}
Failed audits (invalid URL, timeout, quota exhausted (QUOTA_EXCEEDED), bad key, non-public address) are written as rows with an error code and charged: false.
How much does it cost?
Pay per event: $0.008 per successful URL×strategy audit (url-audited, = $8 per 1,000 audits; both counts as two audits). Failed audits, input errors and the summary row are free. See the Actor's Monetization tab for the live price once published. Set Max audits (and optionally the run's maximum charge) to cap spend. There is no extra charge for using the built-in Google key. If you add your own key, Google's API usage for it counts against your Google Cloud project.
How we differ (honestly)
- No key needed to start — a built-in Google key works out of the box; add your own key any time to get your own quota.
- Bulk-first with
mobile/desktop/bothand a hard audit cap. - Clean CWV-focused schema (scores + vitals + top opportunities), not a raw Lighthouse dump.
- SSRF protection on every input URL, polite rate limits toward Google, and no charge on failures.
- We wrap Google's hosted PSI (same engine as PageSpeed Insights). We do not run a local Lighthouse browser, so we inherit Google's lab environment and quotas.
Integrations and API
Run from the Apify API, CLI, Schedules, Make, Zapier, n8n, LangChain or mcp.apify.com. The OUTPUT record and run-summary row are easy to pipe into sheets or alerts (e.g. webhook when average score drops).
Responsible use
The Actor identifies outgoing requests to Google as TesselynPageSpeedBot/1.0 (+https://apify.com/tesselyn). It only calls Google's PageSpeed Insights API. It does not crawl your site, does not execute JavaScript on Apify infrastructure, and does not use proxies to bypass bot protection. Input URLs must be public http/https on ports 80/443; private, loopback and cloud-metadata addresses are rejected. Default rate: 1 s between PSI calls, concurrency 2 (configurable, max 5).
Terms of use
These terms add to the Apify Standard Actor Contract, which governs your use of this Actor; they do not replace it.
- Only submit URLs you own, manage or otherwise have a legitimate interest and right to measure. You are responsible for complying with applicable laws, Google’s API Terms of Service and the target sites’ terms.
- Do not use the Actor to probe internal networks or to abuse Google’s API quotas. Abusive use may be blocked.
- Sanctions and restricted countries. You may not use this Actor if you are located in, ordinarily resident in, or acting on behalf of a person or organisation in a restricted country or region. Currently these are: Afghanistan, Belarus, Central African Republic, Cuba, Democratic Republic of the Congo, Haiti, Iran, Iraq, Lebanon, Libya, Mali, Myanmar, Nicaragua, North Korea, Russia, Somalia, South Sudan, Sudan, Syria, Venezuela, Yemen, Zimbabwe, Antarctica, and the Crimea, Sevastopol, Donetsk, Luhansk, Kherson and Zaporizhzhia regions of Ukraine. You also may not use it if you are on, or owned or controlled by someone on, any applicable sanctions list (including those of the United Nations, the United States (OFAC SDN), the European Union, the United Kingdom or Israel). We may block such use, and we may update this list when the law or our policy changes.
- Output is an automated, best-effort lab measurement from Google PageSpeed Insights / Lighthouse and is provided "as is". Scores and timings vary by run, location and Google’s lab environment. Field (CrUX) data, when present, reflects Chrome users and may be missing for low-traffic URLs. Check results before relying on them for important decisions.
- Informational only; no guarantee of outcomes. Output is not legal, regulatory, compliance, security, SEO or other professional advice, and using the Actor does not create an advisory relationship. Tesselyn does not promise any outcome, including rankings, Core Web Vitals assessments or traffic. You are responsible for checking results and for the changes and decisions you make based on them.
- No warranty; limitation of liability. To the maximum extent permitted by applicable law, the Actor and its output are provided "as is" and "as available", without warranties of any kind, express or implied (including accuracy, completeness, merchantability, fitness for a particular purpose and non-infringement), as set out in section 7 of the Apify Standard Actor Contract. The Actor creator (Tesselyn) is not liable for any indirect, incidental, special, consequential or punitive loss or damage, including lost traffic, rankings, revenue, profits or data, arising from use of or reliance on the Actor or its output. Any other liability is limited as set out in section 8 of that Contract, and nothing here limits liability that cannot be limited under applicable law. Output is for information only and is not SEO, legal or other professional advice.
Privacy notice
- What is processed: the URLs you submit, your own Google API key if you provide one (held only for the duration of the run, encrypted at rest by Apify as a secret input), and the public technical metrics Google returns (scores, timings, opportunity titles). No page HTML, cookies, emails or other personal data are stored by this Actor.
- Where it is stored: only in your own Apify run storage (default dataset,
OUTPUTrecord, run log and encrypted input), under your Apify account and Apify's retention settings. The Actor sends the audited URL and the API key in use (yours or the built-in one) to Google's PageSpeed Insights API as required to perform the measurement; it sends nothing else to third parties. - Roles: for any personal data in your input or output, you are the controller and the Actor creator acts as processor, as set out in section 5 of the Apify Standard Actor Contract. Run logs contain only counts, error codes and which key source was used — never any API key.
- Deletion: delete the run or dataset in Apify Console at any time. For questions or privacy requests, open an issue on the Actor's Issues tab.
FAQ
Do I need my own Google API key?
No. By default the Actor uses a built-in key. Google meters PageSpeed Insights API usage per Cloud project, and the built-in key's daily quota is shared by all users. For heavy or scheduled usage, add your own key in googleApiKey so you get your own quota; your key always takes priority.
What happens if the built-in key's quota runs out?
Audits come back as rows with error: "QUOTA_EXCEEDED" and charged: false, and the remaining audits in that run are skipped and not charged. Try again later or add your own key.
Is commercial use of PSI allowed?
Check Google's own terms: your use of the PageSpeed Insights API, including commercial use, is governed by the Google APIs Terms of Service and your Google Cloud project's terms. This is not legal advice.
Why is CrUX / field data missing?
Google only returns Chrome User Experience Report data for URLs/origins with enough traffic. Lab (Lighthouse) metrics are always attempted. Google has also announced plans to move CrUX out of this API toward the dedicated CrUX APIs.
Why was my URL rejected?
Only public http/https URLs on ports 80/443 are accepted. localhost, private IPs, link-local / cloud-metadata addresses and URLs with embedded credentials are blocked (SSRF protection).
Does a failed audit cost money?
No. Timeouts, quota errors (QUOTA_EXCEEDED), invalid keys, blocked URLs and malformed responses are free. Only rows with a Lighthouse result are charged as url-audited.
Related Tesselyn tools
- AI Crawler & llms.txt Checker: see which AI crawlers a site's robots.txt allows, check llms.txt and get a 0–100 GEO readiness score.
- Broken Link & Redirect Checker: crawl a site for broken links, redirect chains and missing #anchors.
- Domain Health Checker: domain expiry, DNS, SPF/DMARC/DKIM, SSL and HSTS in bulk.
- See all Tesselyn Actors on the Apify Store.
Support
Built and maintained by Tesselyn (a brand of HevraBest Group Ltd). Found a bug or a wrong result, or need a feature? Open an issue on the Actor's Issues tab. That is our support channel and the route Apify uses for credit compensation.
Failed runs and unexpected charges. Rows that the "How much does it cost?" section lists as free are not charged. Apify's small per-run "Actor start" charge, when it is listed on the Pricing tab, still applies. If you think a run charged you for work it didn't deliver, open an issue with the run link. If we confirm the problem, we ask Apify to compensate you. Apify gives compensation as platform credits, not money. Apify's General Terms (section 7.9) require charge disputes to be sent to Apify in writing within 15 days of the charge or invoice date, so please report problems promptly.