Skip to content

Realtime metrics by dimension for a property.

Returns a customized report of realtime event data for your property. Events appear in realtime reports seconds after they have been sent to the Google Analytics. Realtime reports show events and usage data for the periods of time ranging from the present moment to 30 minutes ago (up to 60 minutes for Google Analytics 360 properties).

Job analytics.reports.realtime

Your AI asks

checks the price first
telipot run google-analytics.reports.realtime \
  --input-json '{"propertyId":"123456789","metrics":[{"name":"activeUsers"}]}' \
  --quote

Price

Free
Priced· before it runs

google-analytics.reports.realtime

FreeCompany account

Whose account it uses

1The person asking
skipped
2Your company’s Google Analytics 4 account
Selected identity for this example
3Our account
not used

What it sends

{
  "propertyId": "123456789",
  "metrics": [{"name":"activeUsers"}]
}

Your Google Analytics 4 login is added for you. Your AI never sees it.

What it costs

Free

no charge from the provider

Preview the price first. --quote runs nothing.

For developers · run it

Shell · runs the task on the named account

telipot run google-analytics.reports.realtime \
  --input-json '{"propertyId":"123456789","metrics":[{"name":"activeUsers"}]}'

propertyId

string · required · path

The numeric id of a GA4 property, as google-analytics.accounts.summaries returns it after properties/

dimensions

array · body

Each an object with the name of a dimension the realtime report offers, such as country or unifiedScreenName

metrics

array · required · body

Each an object with the name of a metric the realtime report offers, such as activeUsers or eventCount

minuteRanges

array · body

Up to 2 ranges, each a startMinutesAgo and an endMinutesAgo; the last 30 minutes when absent

dimensionFilter

object · body

A filter expression over dimensions, applied before the metrics are aggregated

metricFilter

object · body

A filter expression over metrics, applied after the rows are aggregated

orderBys

array · body

How the rows are ordered, each an order by a dimension or a metric

limit

integer · 1 to 250000 · default 10000 · body

Rows to return; a report can return fewer

metricAggregations

array · body

TOTAL, MINIMUM or MAXIMUM, each adding a row of that aggregate of every metric

returnPropertyQuota

boolean · default false · body

Whether to add the property's quota state to the answer

dimensionHeaders

object[]

metricHeaders

object[]

rows

object[]

Absent when no row matches

totals

object[]

maximums

object[]

minimums

object[]

rowCount

integer

propertyQuota

object

Present when returnPropertyQuota is true

kind

string

Full output schema · JSONNested fields and constraints

Output JSON Schema

{
  "type": "object",
  "properties": {
    "dimensionHeaders": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          }
        }
      }
    },
    "metricHeaders": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "type": {
            "type": "string",
            "description": "The kind of value such as TYPE_INTEGER"
          }
        }
      }
    },
    "rows": {
      "type": "array",
      "description": "Absent when no row matches",
      "items": {
        "type": "object",
        "properties": {
          "dimensionValues": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "type": "string"
                }
              }
            }
          },
          "metricValues": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {
                  "type": "string",
                  "description": "A number as a string"
                }
              }
            }
          }
        }
      }
    },
    "totals": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "maximums": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "minimums": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "rowCount": {
      "type": "integer"
    },
    "propertyQuota": {
      "type": "object",
      "description": "Present when returnPropertyQuota is true"
    },
    "kind": {
      "type": "string"
    }
  }
}

A real answer

examples/google-analytics.reports.realtime.json

{
  "dimensionHeaders": [
    {
      "name": "country"
    }
  ],
  "metricHeaders": [
    {
      "name": "activeUsers",
      "type": "TYPE_INTEGER"
    }
  ],
  "rows": [
    {
      "dimensionValues": [
        {
          "value": "United States"
        }
      ],
      "metricValues": [
        {
          "value": "14"
        }
      ]
    },
    {
      "dimensionValues": [
        {
          "value": "Germany"
        }
      ],
      "metricValues": [
        {
          "value": "3"
        }
      ]
    }
  ],
  "rowCount": 5,
  "kind": "analyticsData#runRealtimeReport"
}