---
title: "Preview a PageSpeed audit"
method: POST
path: "/v3/page-speed/run-preview"
tags: ["PageSpeed"]
---

# Preview a PageSpeed audit

`POST /v3/page-speed/run-preview`

## Request

- Base URL: `https://api.snowseo.com`
- URL: `https://api.snowseo.com/v3/page-speed/run-preview`
- Auth: one of:
  - HTTP bearer
  - API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/snowseo/apis/snowseo-api/docs/v3/page-speed/run-preview/post.ts> (a function with typed inputs; its response is checked against the schema)

Counts which pages a PageSpeed run would test and which it would skip (already running, fresh, out of scope), without starting anything or spending quota. Takes the same body as run_page_speed. Read-only.

## Request body

- object
  - `teamId` string: SnowSEO team ID, as returned by list_teams.
  - `auditId` string, required: SEO audit ID for this team's site.
  - `selection` union
    - object
      - `mode` 'ids', required
      - `ids` string[], required
    - object
      - `mode` 'all', required
      - `filters` object, required
        - `search` string
        - `excluded` 'all' | 'included' | 'excluded'
        - `omitUrls` string[]
        - `issueIds` string[]
        - `geoAudited` boolean
      - `excludedIds` string[], required
  - `targets` object[]: Selected pages to audit.
    - `url` string, required
    - `auditId` string
  - `strategies` string[]: Devices to test. Defaults to both.
  - `allPages` boolean: Audit every page of the site. Expensive - this can consume a large share of the PageSpeed API key's quota.
  - `force` boolean: Re-audit even if the stored result is still fresh.

## Response `200`

Default Response

- object
  - `eligibility` object
    - `selected` number, required
    - `eligible` number, required
    - `skipped` number, required
    - `byReason` object, required
  - `units` number
  - `status` string
  - `message` string
  - `url` string
  - `mobile` object, nullable
    - `url` string
    - `scores` object
      - `performance` number, nullable
      - `accessibility` number, nullable
      - `bestPractices` number, nullable
      - `seo` number, nullable
    - `fetchedAt` string, nullable
    - `coreWebVitals` object
    - `agenticBrowsing` object
    - `failedAudits` object[]
    - `informativeAudits` object[]
    - `passedAudits` object[]
    - `notApplicableAudits` object[]
    - `manualAudits` object[]
  - `desktop` object, nullable
    - `url` string
    - `scores` object
      - `performance` number, nullable
      - `accessibility` number, nullable
      - `bestPractices` number, nullable
      - `seo` number, nullable
    - `fetchedAt` string, nullable
    - `coreWebVitals` object
    - `agenticBrowsing` object
    - `failedAudits` object[]
    - `informativeAudits` object[]
    - `passedAudits` object[]
    - `notApplicableAudits` object[]
    - `manualAudits` object[]
  - `fetchedAt` string, nullable
  - `mobileError` string, nullable
  - `desktopError` string, nullable

## Other responses

- `202`: Default Response

## Changes

- **2026-11-04** `f448fb139a9f`: 1 warning
  - removed the request property `url`
- **2026-11-01** `6d1dc4928d97`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/snowseo/apis/snowseo-api/changes/v3/page-speed/run-preview/post.md)

---

[API](https://skmtc.dev/snowseo/apis/snowseo-api.md) - [All operations](https://skmtc.dev/snowseo/apis/snowseo-api/llms.txt) - [OpenAPI document](https://skmtc.dev/snowseo/apis/snowseo-api/revisions/fa99dfa1a3d6?raw)
