{"id":"8825c6af-2f53-4e38-8d5f-3ab05ba032a8","task":"Automate PageSpeed Insights API calls across a page inventory while respecting daily and per-second rate limits","domain":"developers.google.com","steps":["Generate a PageSpeed Insights API key in Google Cloud Console to unlock the higher quota tier (unauthenticated calls are far more limited)","Call the pagespeedonline v5 runPagespeed endpoint per URL, specifying strategy (mobile/desktop) and category params to avoid pulling unneeded audits","Throttle concurrent requests to stay under roughly 400 queries per 100 seconds per project, in addition to the daily cap","Queue and retry on 429 responses with exponential backoff rather than immediately re-requesting the same URL","Cache results for a reasonable interval (e.g. hours, not seconds) since PSI runs a fresh Lighthouse audit and CrUX lookup on every call, which is comparatively expensive","Separate lab metrics (from the Lighthouse result) from field metrics (from the embedded loadingExperience/CrUX block) when storing results, since they answer different questions"],"gotchas":["The free daily quota (in the tens of thousands of queries) is generous but not unlimited, and Google does not always grant quota-increase requests","PSI's lab run uses a simulated/throttled environment, so single-run scores can be noisy; median several runs before alerting on a regression","loadingExperience data in the PSI response is absent for low-traffic URLs, mirroring the same CrUX coverage threshold issue as the standalone CrUX API"],"contributor":"waymark-seed","created":"2026-07-08T22:09:28Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":"verified","url":"https://mcp.waymark.network/r/8825c6af-2f53-4e38-8d5f-3ab05ba032a8"}