> ## Documentation Index
> Fetch the complete documentation index at: https://developers.scrunch.com/llms.txt
> Use this file to discover all available pages before exploring further.

# List Page Audit Scores

> The latest AI-visibility score per page for a brand — retrievability and citability, each page's `url`, when it was scored (`generated_at`), its headroom (open work by severity), and the sitemap page it maps to (`mapped_page_id`, null when unmatched).

Page through the whole brand with `limit` (max 1000) and `offset`. Ordered by page `url` (stable for pagination), not by score.



## OpenAPI

````yaml /api-reference/openapi.json get /{brand_id}/audit-scores/pages
openapi: 3.1.0
info:
  title: Scrunch Data API
  version: 0.1.0
servers:
  - url: https://api.scrunchai.com/v1
security: []
paths:
  /{brand_id}/audit-scores/pages:
    get:
      tags:
        - audit-scores
      summary: List Page Audit Scores
      description: >-
        The latest AI-visibility score per page for a brand — retrievability and
        citability, each page's `url`, when it was scored (`generated_at`), its
        headroom (open work by severity), and the sitemap page it maps to
        (`mapped_page_id`, null when unmatched).


        Page through the whole brand with `limit` (max 1000) and `offset`.
        Ordered by page `url` (stable for pagination), not by score.
      operationId: listPageAuditScores
      parameters:
        - name: brand_id
          in: path
          required: true
          schema:
            type: integer
            title: Brand Id
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            maximum: 1000
            minimum: 1
            default: 200
            title: Limit
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
            title: Offset
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponse_PageScoreModel_'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      security:
        - HTTPBearer:
            - query
components:
  schemas:
    CollectionResponse_PageScoreModel_:
      properties:
        total:
          type: integer
          title: Total
        offset:
          type: integer
          title: Offset
          default: 0
        limit:
          anyOf:
            - type: integer
            - type: 'null'
          title: Limit
        items:
          items:
            $ref: '#/components/schemas/PageScoreModel'
          type: array
          title: Items
        metadata:
          anyOf:
            - $ref: '#/components/schemas/TimeSeriesMetadata'
            - type: 'null'
      type: object
      required:
        - total
        - items
      title: CollectionResponse[PageScoreModel]
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    PageScoreModel:
      properties:
        url:
          type: string
          title: Url
        model_version:
          type: string
          title: Model Version
        generated_at:
          type: string
          format: date-time
          title: Generated At
        score:
          $ref: '#/components/schemas/DisplayedScore'
        mapped_page_id:
          anyOf:
            - type: integer
            - type: 'null'
          title: Mapped Page Id
        headroom:
          anyOf:
            - $ref: '#/components/schemas/PageHeadroomModel'
            - type: 'null'
      type: object
      required:
        - url
        - model_version
        - generated_at
        - score
      title: PageScoreModel
      description: One page's latest score for the brand.
    TimeSeriesMetadata:
      properties:
        aggregation_granularity:
          $ref: '#/components/schemas/AggregationGranularity'
          description: 'The aggregation granularity: daily, weekly, or monthly'
        period_count:
          type: integer
          title: Period Count
          description: The number of periods in the time series
        start_date:
          type: string
          format: date-time
          title: Start Date
          description: The start date of the time series
        end_date:
          type: string
          format: date-time
          title: End Date
          description: The end date of the time series
        top_domains:
          anyOf:
            - $ref: '#/components/schemas/TopDomainsMetadata'
            - type: 'null'
          description: Top domains metadata (only populated by sources/domains endpoints)
      type: object
      required:
        - aggregation_granularity
        - period_count
        - start_date
        - end_date
      title: TimeSeriesMetadata
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
              - type: string
              - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
        input:
          title: Input
        ctx:
          type: object
          title: Context
      type: object
      required:
        - loc
        - msg
        - type
      title: ValidationError
    DisplayedScore:
      properties:
        retrievability:
          type: number
          title: Retrievability
        citability:
          type: number
          title: Citability
      type: object
      required:
        - retrievability
        - citability
      title: DisplayedScore
      description: >-
        The two numbers we put on screen, both 0-100. citability is vs the
        winning page (50 = parity

        with it); the loser-side floor stays a diagnostic and isn't surfaced
        here.
    PageHeadroomModel:
      properties:
        high:
          type: integer
          title: High
        medium:
          type: integer
          title: Medium
        low:
          type: integer
          title: Low
      type: object
      required:
        - high
        - medium
        - low
      title: PageHeadroomModel
      description: >-
        How much optimization work is still open on one page: a plain count of
        its

        surfaced opportunities, broken out by severity.


        Deliberately independent of the page's audit score. The score frames the
        goal as "get to 100",

        which is the framing this metric exists to replace — so headroom neither
        reads the score nor is

        capped against it. It answers "how much is there to do here", not "how
        far from perfect is this".


        Counts, not modeled point-gains: `expected_lift_pp` is a
        per-recommendation estimate, and

        summing several of them treats overlapping fixes as independent. A count
        makes no claim the

        data can't support.


        A page with no surfaced opportunity carries zeroes — nothing left to do.
        That differs from a

        page never audited, which has no headroom at all (see
        `PageScoreModel.headroom`).
    AggregationGranularity:
      type: string
      enum:
        - daily
        - weekly
        - monthly
    TopDomainsMetadata:
      properties:
        domains:
          items:
            $ref: '#/components/schemas/TopDomainSummary'
          type: array
          title: Domains
          description: Top domains by observation count (always domain-level aggregated)
        grand_total:
          type: integer
          title: Grand Total
          description: Total observation count across all domains (for calculating 'Other')
        owner_totals:
          additionalProperties:
            type: integer
          type: object
          title: Owner Totals
          description: Observation counts by owner type (brand, competitor, other)
        owner_time_series:
          anyOf:
            - items:
                $ref: '#/components/schemas/OwnerTimeSeriesPoint'
              type: array
            - type: 'null'
          title: Owner Time Series
          description: Time series data by owner type for trend visualization
        segment_totals:
          items:
            $ref: '#/components/schemas/SegmentTotal'
          type: array
          title: Segment Totals
          description: >-
            Server-side observation counts per citation segment (covers all
            domains, not just top-N)
      type: object
      required:
        - domains
        - grand_total
        - owner_totals
      title: TopDomainsMetadata
      description: Metadata about top domains, used by sources/domains endpoints.
    TopDomainSummary:
      properties:
        domain:
          type: string
          title: Domain
        domain_owner:
          type: string
          title: Domain Owner
        observation_count:
          type: integer
          title: Observation Count
      type: object
      required:
        - domain
        - domain_owner
        - observation_count
      title: TopDomainSummary
    OwnerTimeSeriesPoint:
      properties:
        time_bucket:
          type: string
          title: Time Bucket
          description: Date string for the time bucket (YYYY-MM-DD)
        brand:
          type: integer
          title: Brand
          description: Observation count for brand-owned domains
        competitor:
          type: integer
          title: Competitor
          description: Observation count for competitor-owned domains
        other:
          type: integer
          title: Other
          description: Observation count for third-party domains
      type: object
      required:
        - time_bucket
        - brand
        - competitor
        - other
      title: OwnerTimeSeriesPoint
      description: A single time bucket with observation counts by owner type.
    SegmentTotal:
      properties:
        name:
          type: string
          title: Name
        observation_count:
          type: integer
          title: Observation Count
      type: object
      required:
        - name
        - observation_count
      title: SegmentTotal
      description: Observation count for a citation segment, computed server-side.
  securitySchemes:
    HTTPBearer:
      type: http
      scheme: bearer

````

## Related topics

- [Audit Scores API: Retrievability and citability by page](/api-reference/audit-scores/overview.md)
- [Sitemap API: Pages, Audit Scores, AI Metrics](/api-reference/sitemap/overview.md)
- [Site Audit API: Score pages for AI search readiness](/api-reference/site-audit/overview.md)
