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

# Tracked Keywords SERP History

> Tracked keywords with position history and the stored search results for each check date.

Everything in [Tracked Keywords Summary](https://snowseo.com/docs/api-reference/endpoints/tracked-keywords-summary.md), plus `resultHistory` on each keyword: the search results stored at each check, one entry per check date with the ranked URLs in order.

This is the largest keyword payload. It returns 25 keywords per page unless `pageSize` is set (`all` returns every keyword); use `page` to move through them and `search` to match text anywhere in the keyword.


## OpenAPI

````yaml GET /v3/rank-tracking/keywords/serp-history
openapi: 3.0.0
info:
  title: SnowSEO API
  description: API documentation for SnowSEO
  version: 1.0.0
servers:
  - url: https://api.snowseo.com
    description: Production server
security:
  - bearerAuth: []
  - apiKey: []
externalDocs:
  url: https://snowseo.com/docs
  description: Find more info here
paths:
  /v3/rank-tracking/keywords/serp-history:
    get:
      tags:
        - Rank Tracking
      summary: Tracked keywords with SERP result history
      description: >-
        Everything in /keywords/summary plus resultHistory: the stored search
        results (ranked URLs per position) for each check date, per keyword. The
        largest keyword payload. Returns 25 keywords per page unless pageSize is
        set; pageSize=all returns every keyword.
      operationId: listTrackedKeywordsSerpHistory
      parameters:
        - schema:
            type: string
          in: query
          name: teamId
          required: false
          description: Team ID
        - schema:
            type: boolean
          in: query
          name: includeInactive
          required: false
          description: >-
            When true, also returns soft-untracked (active=false) keywords so
            the UI can offer re-tracking. Defaults to false (active only).
        - schema:
            type: string
          in: query
          name: search
          required: false
          description: Case-insensitive text to match anywhere in the keyword.
        - schema:
            type: integer
          in: query
          name: page
          required: false
          description: 1-based page. Default 1.
        - schema:
            type: string
          in: query
          name: pageSize
          required: false
          description: >-
            Rows per page (max 1000), or 'all'. Every response reports total and
            totalPages.
      responses:
        '200':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                required:
                  - items
                properties:
                  page:
                    type: integer
                  pageSize:
                    type: integer
                  total:
                    type: integer
                  totalPages:
                    type: integer
                  items:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        keywordId:
                          type: string
                        keyword:
                          type: string
                        countryId:
                          type: string
                          nullable: true
                        languageId:
                          type: string
                          nullable: true
                        locationCriteriaId:
                          type: number
                          nullable: true
                        locationCanonicalName:
                          type: string
                          nullable: true
                        position:
                          type: number
                        active:
                          type: boolean
                        status:
                          type: string
                          enum:
                            - completed
                            - processing
                            - failed
                            - pending
                        refreshedAt:
                          type: string
                          nullable: true
                        createdAt:
                          type: string
                        updatedAt:
                          type: string
                        isTracked:
                          type: boolean
                        trackingId:
                          type: string
                        monthlyVolume:
                          type: number
                          nullable: true
                        difficulty:
                          type: string
                          nullable: true
                        competitionScore:
                          type: number
                          nullable: true
                        cpc:
                          type: number
                          nullable: true
                        intent:
                          type: string
                          nullable: true
                        positionHistory:
                          type: array
                          items:
                            type: object
                            properties:
                              date:
                                type: string
                              position:
                                type: number
                        positionTrend:
                          type: string
                          nullable: true
                          enum:
                            - improved
                            - declined
                            - same
                            - new
                        nextRunAt:
                          type: string
                          nullable: true
                        serpFeatures:
                          type: object
                          additionalProperties: true
                        resultHistory:
                          type: array
                          items:
                            type: object
                            additionalProperties: true
        '400':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                properties:
                  success:
                    type: boolean
                  error:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  reference:
                    type: string
        '500':
          description: Default Response
          content:
            application/json:
              schema:
                type: object
                additionalProperties: true
                properties:
                  success:
                    type: boolean
                  error:
                    type: string
                  code:
                    type: string
                  message:
                    type: string
                  reference:
                    type: string
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Your SnowSEO API key (sk_...).
    apiKey:
      type: apiKey
      name: x-api-key
      in: header

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.