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) and can be used for applications such as live
counters of visitors on your website.
importcom.google.analytics.data.v1beta.BetaAnalyticsDataClient;importcom.google.analytics.data.v1beta.Dimension;importcom.google.analytics.data.v1beta.DimensionHeader;importcom.google.analytics.data.v1beta.Metric;importcom.google.analytics.data.v1beta.MetricHeader;importcom.google.analytics.data.v1beta.Row;importcom.google.analytics.data.v1beta.RunRealtimeReportRequest;importcom.google.analytics.data.v1beta.RunRealtimeReportResponse;/*** Google Analytics Data API sample application demonstrating the creation of a realtime report.** <p>See* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport* for more information.** <p>Before you start the application, please review the comments starting with "TODO(developer)"* and update the code to use correct values.** <p>To run this sample using Maven:** <pre>{@code* cd google-analytics-data* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunRealtimeReportSample"* }</pre>*/publicclassRunRealtimeReportSample{publicstaticvoidmain(String...args)throwsException{// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.StringpropertyId="YOUR-GA4-PROPERTY-ID";sampleRunRealtimeReport(propertyId);}// Runs a realtime report on a Google Analytics 4 property.staticvoidsampleRunRealtimeReport(StringpropertyId)throwsException{// Initialize client that will be used to send requests. This client only needs to be created// once, and can be reused for multiple requests. After completing all of your requests, call// the "close" method on the client to safely clean up any remaining background resources.try(BetaAnalyticsDataClientanalyticsData=BetaAnalyticsDataClient.create()){RunRealtimeReportRequestrequest=RunRealtimeReportRequest.newBuilder().setProperty("properties/"+propertyId).addDimensions(Dimension.newBuilder().setName("country")).addMetrics(Metric.newBuilder().setName("activeUsers")).build();// Make the request.RunRealtimeReportResponseresponse=analyticsData.runRealtimeReport(request);printRunRealtimeReportResponse(response);}}// Prints results of a runRealReport call.staticvoidprintRunRealtimeReportResponse(RunRealtimeReportResponseresponse){System.out.printf("%s rows received%n",response.getRowsList().size());for(DimensionHeaderheader:response.getDimensionHeadersList()){System.out.printf("Dimension header name: %s%n",header.getName());}for(MetricHeaderheader:response.getMetricHeadersList()){System.out.printf("Metric header name: %s (%s)%n",header.getName(),header.getType());}System.out.println("Report result:");for(Rowrow:response.getRowsList()){System.out.printf("%s, %s%n",row.getDimensionValues(0).getValue(),row.getMetricValues(0).getValue());}}}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;use Google\Analytics\Data\V1beta\Dimension;use Google\Analytics\Data\V1beta\Metric;use Google\Analytics\Data\V1beta\MetricType;use Google\Analytics\Data\V1beta\RunRealtimeReportRequest;use Google\Analytics\Data\V1beta\RunRealtimeReportResponse;/*** Runs a realtime report on a Google Analytics 4 property.* @param string $propertyId Your GA-4 Property ID*/function run_realtime_report(string $propertyId){// Create an instance of the Google Analytics Data API client library.$client = new BetaAnalyticsDataClient();// Make an API call.$request = (new RunRealtimeReportRequest())->setProperty('properties/' . $propertyId)->setDimensions([new Dimension(['name' => 'country'])])->setMetrics([new Metric(['name' => 'activeUsers'])]);$response = $client->runRealtimeReport($request);printRunRealtimeReportResponse($response);}/*** Print results of a runRealtimeReport call.* @param RunRealtimeReportResponse $response*/function printRunRealtimeReportResponse(RunRealtimeReportResponse $response){printf('%s rows received%s', $response->getRowCount(), PHP_EOL);foreach ($response->getDimensionHeaders() as $dimensionHeader) {printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);}foreach ($response->getMetricHeaders() as $metricHeader) {printf('Metric header name: %s (%s)%s',$metricHeader->getName(),MetricType::name($metricHeader->getType()),PHP_EOL);}print 'Report result: ' . PHP_EOL;foreach ($response->getRows() as $row) {printf('%s %s' . PHP_EOL,$row->getDimensionValues()[0]->getValue(),$row->getMetricValues()[0]->getValue());}}
fromgoogle.analytics.data_v1betaimportBetaAnalyticsDataClientfromgoogle.analytics.data_v1beta.typesimport(Dimension,Metric,RunRealtimeReportRequest,)fromrun_reportimportprint_run_report_responsedefrun_sample():"""Runs the sample."""# TODO(developer): Replace this variable with your Google Analytics 4# property ID before running the sample.property_id="YOUR-GA4-PROPERTY-ID"run_realtime_report(property_id)defrun_realtime_report(property_id="YOUR-GA4-PROPERTY-ID"):"""Runs a realtime report on a Google Analytics 4 property."""client=BetaAnalyticsDataClient()request=RunRealtimeReportRequest(property=f"properties/{property_id}",dimensions=[Dimension(name="country")],metrics=[Metric(name="activeUsers")],)response=client.run_realtime_report(request)print_run_report_response(response)
/*** TODO(developer): Uncomment this variable and replace with your GA4* property ID before running the sample.*/// propertyId = 'YOUR-GA4-PROPERTY-ID';// Imports the Google Analytics Data API client library.const{BetaAnalyticsDataClient}=require('@google-analytics/data');// Creates a client.constanalyticsDataClient=newBetaAnalyticsDataClient();// Runs a realtime report on a Google Analytics 4 property.asyncfunctionrunRealtimeReport(){const[response]=awaitanalyticsDataClient.runRealtimeReport({property:`properties/${propertyId}`,dimensions:[{name:'country',},],metrics:[{name:'activeUsers',},],});printRunReportResponse(response);}runRealtimeReport();// Prints results of a runReport call.functionprintRunReportResponse(response){console.log(`${response.rowCount}rows received`);response.dimensionHeaders.forEach(dimensionHeader=>{console.log(`Dimension header name:${dimensionHeader.name}`);});response.metricHeaders.forEach(metricHeader=>{console.log(`Metric header name:${metricHeader.name}(${metricHeader.type})`);});console.log('Report result:');response.rows.forEach(row=>{console.log(`${row.dimensionValues[0].value},${row.metricValues[0].value}`);});}
TheRealtime Report Responseof the API request is primarily a header and rows. The header consists ofDimensionHeadersandMetricHeaderswhich list the columns in the Report. Each row consists ofDimensionValuesandMetricValuesfor the columns in
the report. The ordering of columns is consistent in the request, the header,
and every row.
Here is a sample response for the sample request above:
Dimensionsdescribe and group event data for your
website or app. Thecitydimension, for example, indicates the city ("Paris"
or "New York") from which each event originated. In a report request, you can
specify zero or more dimensions. See theRealtime Dimensionsfor a full list of API Dimension names available in realtime requests.
For example, this request groups Active Users in two dimension columns:
HTTP
POST https://analyticsdata.googleapis.com/v1beta/property/GA_PROPERTY_ID:runRealtimeReport{"dimensions": [{"name": "country"},{"name": "city"}],"metrics": [{ "name": "activeUsers" }]}
importcom.google.analytics.data.v1beta.BetaAnalyticsDataClient;importcom.google.analytics.data.v1beta.Dimension;importcom.google.analytics.data.v1beta.Metric;importcom.google.analytics.data.v1beta.RunRealtimeReportRequest;importcom.google.analytics.data.v1beta.RunRealtimeReportResponse;/*** Google Analytics Data API sample application demonstrating the creation of a realtime report.** <p>See* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport* for more information.** <p>Before you start the application, please review the comments starting with "TODO(developer)"* and update the code to use correct values.** <p>To run this sample using Maven:** <pre>{@code* cd google-analytics-data* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunRealtimeReportWithMultipleDimensionsSample"* }</pre>*/publicclassRunRealtimeReportWithMultipleDimensionsSample{publicstaticvoidmain(String...args)throwsException{// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.StringpropertyId="YOUR-GA4-PROPERTY-ID";sampleRunRealtimeReportWithMultipleDimensions(propertyId);}// Runs a realtime report on a Google Analytics 4 property.staticvoidsampleRunRealtimeReportWithMultipleDimensions(StringpropertyId)throwsException{// Initialize client that will be used to send requests. This client only needs to be created// once, and can be reused for multiple requests. After completing all of your requests, call// the "close" method on the client to safely clean up any remaining background resources.try(BetaAnalyticsDataClientanalyticsData=BetaAnalyticsDataClient.create()){RunRealtimeReportRequestrequest=RunRealtimeReportRequest.newBuilder().setProperty("properties/"+propertyId).addDimensions(Dimension.newBuilder().setName("country")).addDimensions(Dimension.newBuilder().setName(("city"))).addMetrics(Metric.newBuilder().setName("activeUsers")).build();// Make the request.RunRealtimeReportResponseresponse=analyticsData.runRealtimeReport(request);// Prints the response using a method in RunRealtimeReportSample.javaRunRealtimeReportSample.printRunRealtimeReportResponse(response);}}}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;use Google\Analytics\Data\V1beta\Dimension;use Google\Analytics\Data\V1beta\Metric;use Google\Analytics\Data\V1beta\MetricType;use Google\Analytics\Data\V1beta\RunRealtimeReportRequest;use Google\Analytics\Data\V1beta\RunRealtimeReportResponse;/*** Runs a realtime report on a Google Analytics 4 property.* @param string $propertyId Your GA-4 Property ID*/function run_realtime_report_with_multiple_dimensions(string $propertyId){// Create an instance of the Google Analytics Data API client library.$client = new BetaAnalyticsDataClient();// Make an API call.$request = (new RunRealtimeReportRequest())->setProperty('properties/' . $propertyId)->setDimensions([new Dimension(['name' => 'country']),new Dimension(['name' => 'city']),])->setMetrics([new Metric(['name' => 'activeUsers'])]);$response = $client->runRealtimeReport($request);printRunRealtimeReportWithMultipleDimensionsResponse($response);}/*** Print results of a runRealtimeReport call.* @param RunRealtimeReportResponse $response*/function printRunRealtimeReportWithMultipleDimensionsResponse(RunRealtimeReportResponse $response){printf('%s rows received%s', $response->getRowCount(), PHP_EOL);foreach ($response->getDimensionHeaders() as $dimensionHeader) {printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);}foreach ($response->getMetricHeaders() as $metricHeader) {printf('Metric header name: %s (%s)%s',$metricHeader->getName(),MetricType::name($metricHeader->getType()),PHP_EOL);}print 'Report result: ' . PHP_EOL;foreach ($response->getRows() as $row) {printf('%s %s' . PHP_EOL,$row->getDimensionValues()[0]->getValue(),$row->getMetricValues()[0]->getValue());}}
fromgoogle.analytics.data_v1betaimportBetaAnalyticsDataClientfromgoogle.analytics.data_v1beta.typesimport(Dimension,Metric,RunRealtimeReportRequest,)fromrun_reportimportprint_run_report_responsedefrun_sample():"""Runs the sample."""# TODO(developer): Replace this variable with your Google Analytics 4# property ID before running the sample.property_id="YOUR-GA4-PROPERTY-ID"run_realtime_report_with_multiple_dimensions(property_id)defrun_realtime_report_with_multiple_dimensions(property_id="YOUR-GA4-PROPERTY-ID"):"""Runs a realtime report on a Google Analytics 4 property."""client=BetaAnalyticsDataClient()request=RunRealtimeReportRequest(property=f"properties/{property_id}",dimensions=[Dimension(name="country"),Dimension(name="city")],metrics=[Metric(name="activeUsers")],)response=client.run_realtime_report(request)print_run_report_response(response)
/*** TODO(developer): Uncomment this variable and replace with your GA4* property ID before running the sample.*/// propertyId = 'YOUR-GA4-PROPERTY-ID';// Imports the Google Analytics Data API client library.const{BetaAnalyticsDataClient}=require('@google-analytics/data');// Initialize client that will be used to send requests. This client only// needs to be created once, and can be reused for multiple requests.constanalyticsDataClient=newBetaAnalyticsDataClient();// Runs a realtime report on a Google Analytics 4 property.asyncfunctionrunRealtimeReportWithMultipleDimensions(){const[response]=awaitanalyticsDataClient.runRealtimeReport({property:`properties/${propertyId}`,dimensions:[{name:'country',},{name:'city',},],metrics:[{name:'activeUsers',},],});printRunReportResponse(response);}runRealtimeReportWithMultipleDimensions();// Prints results of a runReport call.functionprintRunReportResponse(response){console.log(`${response.rowCount}rows received`);response.dimensionHeaders.forEach(dimensionHeader=>{console.log(`Dimension header name:${dimensionHeader.name}`);});response.metricHeaders.forEach(metricHeader=>{console.log(`Metric header name:${metricHeader.name}(${metricHeader.type})`);});console.log('Report result:');response.rows.forEach(row=>{console.log(`${row.dimensionValues[0].value},${row.metricValues[0].value}`);});}
As a sample, a row in the report response could contain the following. This row
means there are 47 Active Users for your website or app with events from Cape
Town, South Africa in the last 30 minutes.
Metricsare quantitative measurements of event data for
your website or app. In a report request, you can specify one or more metrics.
See theRealtime Metricsfor a full list of API
Metric names available in requests.
For example, this request will show the two metrics grouped by the dimensionunifiedScreenName:
HTTP
POST https://analyticsdata.googleapis.com/v1beta/property/GA_PROPERTY_ID:runRealtimeReport{"dimensions": [{ "name": "unifiedScreenName" }],"metrics": [{"name": "screenPageViews"},{"name": "keyEvents"}],}
importcom.google.analytics.data.v1beta.BetaAnalyticsDataClient;importcom.google.analytics.data.v1beta.Dimension;importcom.google.analytics.data.v1beta.Metric;importcom.google.analytics.data.v1beta.RunRealtimeReportRequest;importcom.google.analytics.data.v1beta.RunRealtimeReportResponse;/*** Google Analytics Data API sample application demonstrating the creation of a realtime report.** <p>See* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport* for more information.** <p>Before you start the application, please review the comments starting with "TODO(developer)"* and update the code to use correct values.** <p>To run this sample using Maven:** <pre>{@code* cd google-analytics-data* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunRealtimeReportWithMultipleMetricsSample"* }</pre>*/publicclassRunRealtimeReportWithMultipleMetricsSample{publicstaticvoidmain(String...args)throwsException{// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.StringpropertyId="YOUR-GA4-PROPERTY-ID";sampleRunRealtimeReportWithMultipleMetrics(propertyId);}// Runs a realtime report on a Google Analytics 4 property.staticvoidsampleRunRealtimeReportWithMultipleMetrics(StringpropertyId)throwsException{// Initialize client that will be used to send requests. This client only needs to be created// once, and can be reused for multiple requests. After completing all of your requests, call// the "close" method on the client to safely clean up any remaining background resources.try(BetaAnalyticsDataClientanalyticsData=BetaAnalyticsDataClient.create()){RunRealtimeReportRequestrequest=RunRealtimeReportRequest.newBuilder().setProperty("properties/"+propertyId).addDimensions(Dimension.newBuilder().setName("unifiedScreenName")).addMetrics(Metric.newBuilder().setName(("screenPageViews"))).addMetrics(Metric.newBuilder().setName("keyEvents")).build();// Make the request.RunRealtimeReportResponseresponse=analyticsData.runRealtimeReport(request);// Prints the response using a method in RunRealtimeReportSample.javaRunRealtimeReportSample.printRunRealtimeReportResponse(response);}}}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;use Google\Analytics\Data\V1beta\Dimension;use Google\Analytics\Data\V1beta\Metric;use Google\Analytics\Data\V1beta\MetricType;use Google\Analytics\Data\V1beta\RunRealtimeReportRequest;use Google\Analytics\Data\V1beta\RunRealtimeReportResponse;/*** Runs a realtime report on a Google Analytics 4 property.* @param string $propertyId Your GA-4 Property ID*/function run_realtime_report_with_multiple_metrics(string $propertyId){// Create an instance of the Google Analytics Data API client library.$client = new BetaAnalyticsDataClient();// Make an API call.$request = (new RunRealtimeReportRequest())->setProperty('properties/' . $propertyId)->setDimensions([new Dimension(['name' => 'unifiedScreenName'])])->setMetrics([new Metric(['name' => 'screenPageViews']),new Metric(['name' => 'keyEvents']),]);$response = $client->runRealtimeReport($request);printRunRealtimeReportWithMultipleMetricsResponse($response);}/*** Print results of a runRealtimeReport call.* @param RunRealtimeReportResponse $response*/function printRunRealtimeReportWithMultipleMetricsResponse(RunRealtimeReportResponse $response){printf('%s rows received%s', $response->getRowCount(), PHP_EOL);foreach ($response->getDimensionHeaders() as $dimensionHeader) {printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);}foreach ($response->getMetricHeaders() as $metricHeader) {printf('Metric header name: %s (%s)%s',$metricHeader->getName(),MetricType::name($metricHeader->getType()),PHP_EOL);}print 'Report result: ' . PHP_EOL;foreach ($response->getRows() as $row) {printf('%s %s' . PHP_EOL,$row->getDimensionValues()[0]->getValue(),$row->getMetricValues()[0]->getValue());}}
fromgoogle.analytics.data_v1betaimportBetaAnalyticsDataClientfromgoogle.analytics.data_v1beta.typesimport(Dimension,Metric,RunRealtimeReportRequest,)fromrun_reportimportprint_run_report_responsedefrun_sample():"""Runs the sample."""# TODO(developer): Replace this variable with your Google Analytics 4# property ID before running the sample.property_id="YOUR-GA4-PROPERTY-ID"run_realtime_report_with_multiple_metrics(property_id)defrun_realtime_report_with_multiple_metrics(property_id="YOUR-GA4-PROPERTY-ID"):"""Runs a realtime report on a Google Analytics 4 property."""client=BetaAnalyticsDataClient()request=RunRealtimeReportRequest(property=f"properties/{property_id}",dimensions=[Dimension(name="unifiedScreenName")],metrics=[Metric(name="screenPageViews"),Metric(name="keyEvents")],)response=client.run_realtime_report(request)print_run_report_response(response)
/*** TODO(developer): Uncomment this variable and replace with your GA4* property ID before running the sample.*/// propertyId = 'YOUR-GA4-PROPERTY-ID';// Imports the Google Analytics Data API client library.const{BetaAnalyticsDataClient}=require('@google-analytics/data');// Creates a client.constanalyticsDataClient=newBetaAnalyticsDataClient();// Runs a realtime report on a Google Analytics 4 property.asyncfunctionrunRealtimeReportWithMultipleMetrics(){const[response]=awaitanalyticsDataClient.runRealtimeReport({// The property parameter value must be in the form `properties/1234`// where `1234` is a GA4 property Id.property:`properties/${propertyId}`,dimensions:[{name:'unifiedScreenName',},],metrics:[{name:'screenPageViews',},{name:'keyEvents',},],});printRunReportResponse(response);}runRealtimeReportWithMultipleMetrics();// Prints results of a runReport call.functionprintRunReportResponse(response){console.log(`${response.rowCount}rows received`);response.dimensionHeaders.forEach(dimensionHeader=>{console.log(`Dimension header name:${dimensionHeader.name}`);});response.metricHeaders.forEach(metricHeader=>{console.log(`Metric header name:${metricHeader.name}(${metricHeader.type})`);});console.log('Report result:');response.rows.forEach(row=>{console.log(`${row.dimensionValues[0].value},${row.metricValues[0].value}`);});}
As a sample, a row in report response could contain the following. This row
means that for the page title (web) or screen name (app) ofmain_menu, there
were 257 views and 72 key events in last 30 minutes.
In a realtime report request, you can use theminuteRangesfield to specifyMinute Rangesof event data to read. Up to two separate minute ranges can be used in a query. If a
minute range specification is not present in a query, a single minute range for the
last 30 minutes will be used.
For example, the request below will show the Active Users count for two separate minute
ranges:
Range #1: starting 4 minutes ago until the present moment.
Range #2: starting 29 minutes ago until 25 minutes ago (inclusively).
importcom.google.analytics.data.v1beta.BetaAnalyticsDataClient;importcom.google.analytics.data.v1beta.Metric;importcom.google.analytics.data.v1beta.MinuteRange;importcom.google.analytics.data.v1beta.RunRealtimeReportRequest;importcom.google.analytics.data.v1beta.RunRealtimeReportResponse;/*** Google Analytics Data API sample application demonstrating the creation of a realtime report.** <p>See* https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runRealtimeReport* for more information.** <p>Before you start the application, please review the comments starting with "TODO(developer)"* and update the code to use correct values.** <p>To run this sample using Maven:** <pre>{@code* cd google-analytics-data* mvn compile exec:java -Dexec.mainClass="com.google.analytics.data.samples.RunRealtimeReportWithMinuteRangesSample"* }</pre>*/publicclassRunRealtimeReportWithMinuteRangesSample{publicstaticvoidmain(String...args)throwsException{// TODO(developer): Replace with your Google Analytics 4 property ID before running the sample.StringpropertyId="YOUR-GA4-PROPERTY-ID";sampleRunRealtimeReportWithMinuteRanges(propertyId);}// Runs a realtime report on a Google Analytics 4 property.staticvoidsampleRunRealtimeReportWithMinuteRanges(StringpropertyId)throwsException{// Initialize client that will be used to send requests. This client only needs to be created// once, and can be reused for multiple requests. After completing all of your requests, call// the "close" method on the client to safely clean up any remaining background resources.try(BetaAnalyticsDataClientanalyticsData=BetaAnalyticsDataClient.create()){RunRealtimeReportRequestrequest=RunRealtimeReportRequest.newBuilder().setProperty("properties/"+propertyId).addMetrics(Metric.newBuilder().setName(("activeUsers"))).addMinuteRanges(MinuteRange.newBuilder().setName("0-4 minutes ago").setStartMinutesAgo(4)).addMinuteRanges(MinuteRange.newBuilder().setName("25-29 minutes ago").setEndMinutesAgo(29).setEndMinutesAgo(25)).build();// Make the request.RunRealtimeReportResponseresponse=analyticsData.runRealtimeReport(request);// Prints the response using a method in RunRealtimeReportSample.javaRunRealtimeReportSample.printRunRealtimeReportResponse(response);}}}
use Google\Analytics\Data\V1beta\Client\BetaAnalyticsDataClient;use Google\Analytics\Data\V1beta\Metric;use Google\Analytics\Data\V1beta\MetricType;use Google\Analytics\Data\V1beta\MinuteRange;use Google\Analytics\Data\V1beta\RunRealtimeReportRequest;use Google\Analytics\Data\V1beta\RunRealtimeReportResponse;/*** Runs a realtime report on a Google Analytics 4 property. Dimensions field is* omitted in the query, which results in total values of active users returned* for each minute range in the report.** Note the `dateRange` dimension added to the report response automatically as* a result of querying multiple minute ranges.* @param string $propertyId Your GA-4 Property ID*/function run_realtime_report_with_minute_ranges(string $propertyId){// Create an instance of the Google Analytics Data API client library.$client = new BetaAnalyticsDataClient();// Make an API call.$request = (new RunRealtimeReportRequest())->setProperty('properties/' . $propertyId)->setMetrics([new Metric(['name' => 'activeUsers']),])->setMinuteRanges([new MinuteRange(['name' => '0-4 minutes ago', 'start_minutes_ago' => 4]),new MinuteRange(['name' => '25-29 minutes ago', 'start_minutes_ago' => 29, 'end_minutes_ago' => 25]),]);$response = $client->runRealtimeReport($request);printRunRealtimeReportWithMinuteRangesResponse($response);}/*** Print results of a runRealtimeReport call.* @param RunRealtimeReportResponse $response*/function printRunRealtimeReportWithMinuteRangesResponse(RunRealtimeReportResponse $response){printf('%s rows received%s', $response->getRowCount(), PHP_EOL);foreach ($response->getDimensionHeaders() as $dimensionHeader) {printf('Dimension header name: %s%s', $dimensionHeader->getName(), PHP_EOL);}foreach ($response->getMetricHeaders() as $metricHeader) {printf('Metric header name: %s (%s)%s',$metricHeader->getName(),MetricType::name($metricHeader->getType()),PHP_EOL);}print 'Report result: ' . PHP_EOL;foreach ($response->getRows() as $row) {printf('%s %s' . PHP_EOL,$row->getDimensionValues()[0]->getValue(),$row->getMetricValues()[0]->getValue());}}
fromgoogle.analytics.data_v1betaimportBetaAnalyticsDataClientfromgoogle.analytics.data_v1beta.typesimport(Metric,MinuteRange,RunRealtimeReportRequest,)fromrun_reportimportprint_run_report_responsedefrun_sample():"""Runs the sample."""# TODO(developer): Replace this variable with your Google Analytics 4# property ID before running the sample.property_id="YOUR-GA4-PROPERTY-ID"run_realtime_report_with_minute_ranges(property_id)defrun_realtime_report_with_minute_ranges(property_id="YOUR-GA4-PROPERTY-ID"):"""Runs a realtime report on a Google Analytics 4 property. Dimensionsfield is omitted in the query, which results in total values of active usersreturned for each minute range in the report.Note the `dateRange` dimension added to the report response automaticallyas a result of querying multiple minute ranges."""client=BetaAnalyticsDataClient()request=RunRealtimeReportRequest(property=f"properties/{property_id}",metrics=[Metric(name="activeUsers")],minute_ranges=[MinuteRange(name="0-4 minutes ago",start_minutes_ago=4),MinuteRange(name="25-29 minutes ago",start_minutes_ago=29,end_minutes_ago=25),],)response=client.run_realtime_report(request)print_run_report_response(response)
// TODO(developer): Uncomment this variable and replace with your// Google Analytics 4 property ID before running the sample.// propertyId = 'YOUR-GA4-PROPERTY-ID';// Imports the Google Analytics Data API client library.const{BetaAnalyticsDataClient}=require('@google-analytics/data');// Initialize client that will be used to send requests. This client only// needs to be created once, and can be reused for multiple requests.constanalyticsDataClient=newBetaAnalyticsDataClient();// Runs a report using two date ranges.asyncfunctionrunRealtimeReportWithMinuteRanges(){const[response]=awaitanalyticsDataClient.runRealtimeReport({property:`properties/${propertyId}`,minuteRanges:[{name:'0-4 minutes ago',startMinutesAgo:4,endMinutesAgo:0,},{name:'25-29 minutes ago',startMinutesAgo:29,endMinutesAgo:25,},],metrics:[{name:'activeUsers',},],});printRunReportResponse(response);}runRealtimeReportWithMinuteRanges();// Prints results of a runReport call.functionprintRunReportResponse(response){console.log(`${response.rowCount}rows received`);response.dimensionHeaders.forEach(dimensionHeader=>{console.log(`Dimension header name:${dimensionHeader.name}`);});response.metricHeaders.forEach(metricHeader=>{console.log(`Metric header name:${metricHeader.name}(${metricHeader.type})`);});console.log('Report result:');response.rows.forEach(row=>{console.log(`${row.dimensionValues[0].value},${row.metricValues[0].value}`);});}
The following is a complete sample response for the query. Note thedateRangedimension added to the report response automatically
as a result of querying multiple minute ranges.
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-05-15 UTC."],[[["\u003cp\u003eThe Google Analytics Data API v1 provides near real-time data with a delay of seconds, showing data from the present to 30 minutes ago (60 minutes for GA360).\u003c/p\u003e\n"],["\u003cp\u003eIt supports requesting data with dimensions (e.g., country, city) and metrics (e.g., activeUsers) to understand user behavior in real-time.\u003c/p\u003e\n"],["\u003cp\u003eResponses include headers for dimensions and metrics, along with rows containing the corresponding values for each dimension and metric requested.\u003c/p\u003e\n"],["\u003cp\u003eCode samples in Java, PHP, Python, and Node.js are available to help developers integrate and utilize the Realtime Reporting functionality.\u003c/p\u003e\n"],["\u003cp\u003eThe API shares common features with Core Reporting, including pagination, dimension filters, and user properties, streamlining integration for existing users.\u003c/p\u003e\n"]]],["The Realtime Reporting API retrieves Google Analytics data within seconds of collection, for up to 30 minutes prior (60 for GA 360). Reports, constructed via `RunRealtimeReportRequest`, require at least one entry in both `dimensions` and `metrics`. They include `DimensionHeaders`, `MetricHeaders`, and data rows containing `DimensionValues` and `MetricValues`. Users can specify multiple dimensions like `city` or `country`, or metrics like `activeUsers`. Data can be queried within specific minute ranges. Code samples in Java, PHP, Python, and Node.js are provided.\n"],null,[]]