# Google PageSpeed Insights > The PageSpeed Insights API runs Lighthouse audits against a URL and returns performance, > accessibility, best-practices and SEO scores, Core Web Vitals lab metrics, and Chrome User > Experience Report field data, plus the ranked opportunities and diagnostics behind each score. > One GET operation, API-key authenticated, no request body, no write surface. Generated by API Evangelist from the repo's own artifacts and Google's published documentation. Google does not serve an llms.txt on developers.google.com or pagespeed.web.dev (both 404 on /llms.txt, probed 2026-08-13), so this file is generated, not harvested. ## APIs - [Google PageSpeed Analysis API](https://developers.google.com/speed/docs/insights/v5/get-started): single-operation REST API at https://www.googleapis.com/pagespeedonline/v5 (also reachable at https://pagespeedonline.googleapis.com/pagespeedonline/v5) - [runPagespeed reference](https://developers.google.com/speed/docs/insights/v5/reference/pagespeedapi/runpagespeed): the one operation — GET /runPagespeed?url=...&strategy=MOBILE|DESKTOP&category=PERFORMANCE|ACCESSIBILITY|BEST_PRACTICES|SEO&locale=... ## Specs - [OpenAPI 3.1](https://raw.githubusercontent.com/api-evangelist/google-pagespeed/refs/heads/main/openapi/google-pagespeed-analysis-api-openapi.yml): API Evangelist refined OpenAPI - [Google Discovery document](https://pagespeedonline.googleapis.com/$discovery/rest?version=v5): Google's own machine-readable contract, revision 20260811, 20 schemas - [JSON Schema](https://raw.githubusercontent.com/api-evangelist/google-pagespeed/refs/heads/main/json-schema/google-pagespeed-result-schema.json): result schema - [Postman collection](https://raw.githubusercontent.com/api-evangelist/google-pagespeed/refs/heads/main/postman/google-pagespeed-analysis-api.postman_collection.json) ## Docs - [About PageSpeed Insights](https://developers.google.com/speed/docs/insights/v5/about) - [Get started](https://developers.google.com/speed/docs/insights/v5/get-started) - [API reference](https://developers.google.com/speed/docs/insights/v5/reference) - [Release notes](https://developers.google.com/speed/docs/insights/release_notes) - [Client libraries](https://developers.google.com/speed/docs/insights/libraries) - [Supported locales](https://developers.google.com/speed/docs/insights/languages) - [APIs Explorer (try it)](https://developers.google.com/apis-explorer#p/pagespeedonline/v5/) - [PageSpeed Insights web UI](https://pagespeed.web.dev/) ## Auth - API key on the `key` query parameter. Get one at https://console.cloud.google.com/apis/credentials - The API also accepts unkeyed calls in principle, but the anonymous quota is exhausted in practice: an unkeyed request observed 2026-08-13 returned HTTP 429 RESOURCE_EXHAUSTED with `quota_limit_value: "0"`. Treat a key as required. - The Discovery document declares one OAuth 2.0 scope, `openid`; the API key path is what the documentation actually instructs callers to use. ## Runtime semantics agents should know - Errors use the Google API (google.rpc) envelope, not RFC 9457: `{"error":{"code","message","status","errors":[],"details":[]}}` with a `type.googleapis.com/google.rpc.ErrorInfo` detail. - Quota exhaustion is HTTP 429, `status: RESOURCE_EXHAUSTED`, `reason: RATE_LIMIT_EXCEEDED`. - An invalid key is HTTP 400, `status: INVALID_ARGUMENT`, `reason: API_KEY_INVALID`. - No `X-RateLimit-*`, `RateLimit-*` or `Retry-After` headers are returned. Back off on 429 blind. - Analysis is slow — the request runs a real Lighthouse audit; the documented maximum timeout is 120 seconds. - `fields` gives partial responses (sparse fieldsets); `prettyPrint`, `alt`, `quotaUser`, `callback` are the other standard Google API system parameters. - There is no pagination, no idempotency-key contract, no webhook or event surface, and no write operation. ## Deprecation notice - Google states it plans to discontinue including real-world Chrome User Experience Report field data in this API, and recommends the CrUX API or CrUX History API instead. Agents depending on `loadingExperience` / `originLoadingExperience` should plan to migrate.