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

# Get heatmap in built-in player

> Shows information about what part of the video your viewers watched in the built-in player.

This way you can find out how many viewers started watching the video, and where they stopped watching instead of watching the entire video to the end.

Has different format of response depends on query param "type".

Note. This method operates only on data collected by the built-in HTML player. It will not show statistics if you are using another player or viewing in native OS players through direct .m3u8/.mpd/.mp4 links. For such cases, use calculations through CDN (look at method /statistics/cdn/uniqs) or statistics of the players you have chosen.



## OpenAPI

````yaml /api-reference/services_documented/streaming_api.yaml get /streaming/statistics/heatmap
openapi: 3.1.0
info:
  title: Gcore OpenAPI – Streaming API
  description: >-
    This OpenAPI is an aggregated OpenAPI specification that unifies all Gcore
    products into a single file. It covers Cloud, CDN, DNS, WAAP, DDoS
    Protection, Object Storage, Streaming, and FastEdge services.
  version: '2026-05-15T06:37:28.230198+00:00'
servers:
  - url: https://api.gcore.com
security:
  - APIKey: []
tags:
  - name: AI
    x-displayName: AI
  - name: Broadcasts
    x-displayName: Broadcasts
  - name: Directories
    x-displayName: Directories
  - name: Overlays
    x-displayName: Overlays
  - name: Players
    x-displayName: Players
  - name: Playlists
    x-displayName: Playlists
  - name: QualitySets
    x-displayName: QualitySets
  - name: Restreams
    x-displayName: Restreams
  - name: Streaming Statistics
    x-displayName: Statistics
  - name: Streams
    x-displayName: Streams
  - name: Subtitles
    x-displayName: Subtitles
  - name: Videos
    x-displayName: Videos
paths:
  /streaming/statistics/heatmap:
    get:
      tags:
        - Streaming Statistics
      summary: Get heatmap in built-in player
      description: >-
        Shows information about what part of the video your viewers watched in
        the built-in player.


        This way you can find out how many viewers started watching the video,
        and where they stopped watching instead of watching the entire video to
        the end.


        Has different format of response depends on query param "type".


        Note. This method operates only on data collected by the built-in HTML
        player. It will not show statistics if you are using another player or
        viewing in native OS players through direct .m3u8/.mpd/.mp4 links. For
        such cases, use calculations through CDN (look at method
        /statistics/cdn/uniqs) or statistics of the players you have chosen.
      operationId: getHeatmap
      parameters:
        - name: date_from
          in: query
          required: true
          description: Start of time frame. Datetime in ISO 8601 format.
          schema:
            type: string
          example: '2024-05-01T00:00:00Z'
        - name: date_to
          in: query
          required: true
          description: End of time frame. Datetime in ISO 8601 format.
          schema:
            type: string
          example: '2024-05-31T23:59:59Z'
        - name: type
          in: query
          required: true
          description: entity's type
          schema:
            type: string
            enum:
              - live
              - vod
              - playlist
        - name: stream_id
          in: query
          required: true
          description: video streaming ID
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/heatmap'
        '400':
          $ref: '#/components/responses/error_bad_request'
        '500':
          $ref: '#/components/responses/error_internal_server'
      x-codeSamples:
        - lang: Python
          source: |-
            import os
            from gcore import Gcore

            client = Gcore(
                api_key=os.environ.get("GCORE_API_KEY"),  # This is the default and can be omitted
            )
            views_heatmap = client.streaming.statistics.get_views_heatmap(
                date_from="date_from",
                date_to="date_to",
                stream_id="stream_id",
                type="live",
            )
            print(views_heatmap.data)
        - lang: Go
          source: "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/G-Core/gcore-go\"\n\t\"github.com/G-Core/gcore-go/option\"\n\t\"github.com/G-Core/gcore-go/streaming\"\n)\n\nfunc main() {\n\tclient := gcore.NewClient(\n\t\toption.WithAPIKey(\"My API Key\"),\n\t)\n\tviewsHeatmap, err := client.Streaming.Statistics.GetViewsHeatmap(context.TODO(), streaming.StatisticGetViewsHeatmapParams{\n\t\tDateFrom: \"date_from\",\n\t\tDateTo:   \"date_to\",\n\t\tStreamID: \"stream_id\",\n\t\tType:     streaming.StatisticGetViewsHeatmapParamsTypeLive,\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", viewsHeatmap.Data)\n}\n"
components:
  schemas:
    heatmap:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            required:
              - viewers
            properties:
              viewers:
                type: integer
              seconds:
                type: integer
              time:
                type: string
      example:
        data:
          - viewers: 100500
            seconds: 500
          - viewers: 3000
            seconds: 1000
    error_common:
      required:
        - data
        - errors
      type: object
      properties:
        data:
          type: array
          items:
            type: string
        errors:
          type: array
          items:
            type: string
  responses:
    error_bad_request:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_common'
          examples:
            missingParam:
              summary: Missing query param
              value:
                data: []
                errors:
                  - 'from: query param is not set'
    error_internal_server:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_common'
          examples:
            internalServerError:
              summary: Internal Server Error
              value:
                data: []
                errors:
                  - internal server error
  securitySchemes:
    APIKey:
      description: >-
        API key for authentication. Make sure to include the word `apikey`,
        followed by a single space and then your token.

        Example: `apikey 1234$abcdef`
      type: apiKey
      in: header
      name: Authorization

````