Google Analytics API quickstart

You can use the Data API or Admin API for this quickstart:

Choose an API: Data API Admin API

You can authenticate with a user account or service account :

Choose an account type:

In this quickstart, you create and send a list request.

Here's a summary of the steps:

  1. Set up tools and access.
  2. Enable the API.
  3. Install an SDK.
  4. Make an API call.

Before you begin

  1. Create a service account .

  2. Create a Google Cloud VM instance .

  3. Install and initialize the gcloud CLI.

  4. To give your service account the necessary scopes and link it to your VM instance, run the following:

     gcloud  
    compute  
    instances  
    stop  
     VM-INSTANCE-NAME 
    gcloud  
    compute  
    instances  
    set-service-account  
     VM-INSTANCE-NAME 
      
     \ 
      
    --service-account  
     SERVICE-ACCOUNT-EMAIL 
      
     \ 
      
    --scopes = 
     "https://www.googleapis.com/auth/cloud-platform,https://www.googleapis.com/auth/analytics.readonly" 
     
    
  5. In the Google Analytics UI , grant the service account access to a Google Analytics property .

Enable the Admin API

To select or create a Google Cloud project , and enable the API, click Enable the Google Analytics Admin API.

Enable the Google Analytics Admin API

Install an SDK

Install the SDK for your programming language.

Java

Java client library installation guide

PHP

PHP client library installation guide

Python

Python client library installation guide

Node.js

Node.js client library installation guide

.NET

.NET client library installation guide

Ruby

Ruby client library installation guide

Go

go get google.golang.org/genproto/googleapis/analytics/admin/v1beta

REST

Configure your environment variables by entering the following. Replace PROJECT_ID with the ID of your Google Cloud project.

  
EXPORT  
 PROJECT_ID 
 = 
  PROJECT_ID 
 

Make an API call

To verify your setup and make an API call, run the following sample.

This sample calls the list method. The response lists the Google Analytics accounts your service account has access to.

To install all the Analytics API code samples, see our GitHub .

Java

 import 
  
 com.google.analytics.admin.v1beta.Account 
 ; 
 import 
  
 com.google.analytics.admin.v1beta.AnalyticsAdminServiceClient 
 ; 
 import 
  
 com.google.analytics.admin.v1beta.AnalyticsAdminServiceClient.ListAccountsPage 
 ; 
 import 
  
 com.google.analytics.admin.v1beta.AnalyticsAdminServiceClient.ListAccountsPagedResponse 
 ; 
 import 
  
 com.google.analytics.admin.v1beta.ListAccountsRequest 
 ; 
 /** 
 * This application demonstrates the usage of the Analytics Admin API using service account 
 * credentials. For more information on service accounts, see 
 * https://cloud.google.com/iam/docs/understanding-service-accounts. 
 * 
 * <p>The following document provides instructions on setting service account credentials for your 
 * application: https://cloud.google.com/docs/authentication/production 
 * 
 * <p>In a nutshell, you need to: 
 * 
 * <ol> 
 *   <li>Create a service account and download the key JSON file as described at 
 *       https://cloud.google.com/docs/authentication/production#creating_a_service_account. 
 *   <li>Provide service account credentials using one of the following options: 
 *       <ul> 
 *         <li>Set the {@code GOOGLE_APPLICATION_CREDENTIALS} environment variable. The API client 
 *             will use the value of this variable to find the service account key JSON file. See 
 *             https://cloud.google.com/docs/authentication/production#setting_the_environment_variable 
 *             for more information. 
 *             <p>OR 
 *         <li>Manually pass the path to the service account key JSON file to the API client by 
 *             specifying the {@code keyFilename} parameter in the constructor. See 
 *             https://cloud.google.com/docs/authentication/production#passing_the_path_to_the_service_account_key_in_code 
 *             for more information. 
 *       </ul> 
 * </ol> 
 * 
 * <p>To run this sample using Maven: 
 * 
 * <pre>{@code 
 * cd google-analytics-data 
 * mvn compile exec:java -Dexec.mainClass="com.google.analytics.admin.samples.QuickstartSample" 
 * }</pre> 
 */ 
 public 
  
 class 
 QuickstartSample 
  
 { 
  
 public 
  
 static 
  
 void 
  
 main 
 ( 
 String 
 ... 
  
 args 
 ) 
  
 throws 
  
 Exception 
  
 { 
  
 listAccounts 
 (); 
  
 } 
  
 // This is an example snippet that calls the Google Analytics Admin API and lists all Google 
  
 // Analytics accounts available to the authenticated user. 
  
 static 
  
 void 
  
 listAccounts 
 () 
  
 throws 
  
 Exception 
  
 { 
  
 // Instantiates a client using default credentials. 
  
 // See https://cloud.google.com/docs/authentication/production for more information 
  
 // about managing credentials. 
  
 try 
  
 ( 
 AnalyticsAdminServiceClient 
  
 analyticsAdmin 
  
 = 
  
 AnalyticsAdminServiceClient 
 . 
 create 
 ()) 
  
 { 
  
 // Calls listAccounts() method of the Google Analytics Admin API and prints 
  
 // the response for each account. 
  
 ListAccountsPagedResponse 
  
 response 
  
 = 
  
 analyticsAdmin 
 . 
 listAccounts 
 ( 
 ListAccountsRequest 
 . 
 newBuilder 
 (). 
 build 
 ()); 
  
 for 
  
 ( 
 ListAccountsPage 
  
 page 
  
 : 
  
 response 
 . 
 iteratePages 
 ()) 
  
 { 
  
 for 
  
 ( 
 Account 
  
 account 
  
 : 
  
 page 
 . 
 iterateAll 
 ()) 
  
 { 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
 "Account name: %s%n" 
 , 
  
 account 
 . 
 getName 
 ()); 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
 "Display name: %s%n" 
 , 
  
 account 
 . 
 getDisplayName 
 ()); 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
 "Country code: %s%n" 
 , 
  
 account 
 . 
 getRegionCode 
 ()); 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
 "Create time: %s%n" 
 , 
  
 account 
 . 
 getCreateTime 
 (). 
 getSeconds 
 ()); 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
 "Update time: %s%n" 
 , 
  
 account 
 . 
 getUpdateTime 
 (). 
 getSeconds 
 ()); 
  
 System 
 . 
 out 
 . 
 println 
 (); 
  
 } 
  
 } 
  
 } 
  
 } 
 } 
  

PHP

 require 'vendor/autoload.php'; 
 use Google\Analytics\Admin\V1beta\Account; 
 use Google\Analytics\Admin\V1beta\Client\AnalyticsAdminServiceClient; 
 use Google\Analytics\Admin\V1beta\ListAccountsRequest; 
 /** 
 * TODO(developer): Replace this variable with your Google Analytics 4 
 *   property ID before running the sample. 
 */ 
 $property_id = 'YOUR-GA4-PROPERTY-ID'; 
 // Using a default constructor instructs the client to use the credentials 
 // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable. 
 // See https://cloud.google.com/docs/authentication/production for more information 
 // about managing credentials. 
 $client = new AnalyticsAdminServiceClient(); 
 // Calls listAccounts() method of the Google Analytics Admin API and prints 
 // the response for each account. 
 $request = new ListAccountsRequest(); 
 $response = $client->listAccounts($request); 
 print 'Result:' . PHP_EOL; 
 foreach ($response->iterateAllElements() as $account) { 
 print 'Account name: ' . $account->getName() . PHP_EOL; 
 print 'Display name: ' . $account->getDisplayName() . PHP_EOL; 
 print 'Country code: ' . $account->getRegionCode() . PHP_EOL; 
 print 'Create time: ' . $account->getCreateTime()->getSeconds() . PHP_EOL; 
 print 'Update time: ' . $account->getUpdateTime()->getSeconds() . PHP_EOL; 
 }  
 

Python

 def 
  
 list_accounts 
 ( 
 transport 
 : 
 str 
 = 
 None 
 ): 
  
 """ 
 Lists the available Google Analytics accounts. 
 Args: 
 transport(str): The transport to use. For example, "grpc" 
 or "rest". If set to None, a transport is chosen automatically. 
 """ 
 from 
  
 google.analytics.admin 
  
 import 
 AnalyticsAdminServiceClient 
 # Using a default constructor instructs the client to use the credentials 
 # specified in GOOGLE_APPLICATION_CREDENTIALS environment variable. 
 client 
 = 
 AnalyticsAdminServiceClient 
 ( 
 transport 
 = 
 transport 
 ) 
 results 
 = 
 client 
 . 
 list_accounts 
 () 
 # Displays the configuration information for all Google Analytics accounts 
 # available to the authenticated user. 
 print 
 ( 
 "Result:" 
 ) 
 for 
 account 
 in 
 results 
 : 
 print 
 ( 
 account 
 ) 
  

Node.js

  
 // Imports the Google Analytics Admin API client library. 
  
 const 
  
 analyticsAdmin 
  
 = 
  
 require 
 ( 
 '@google-analytics/admin' 
 ); 
  
 // Using a default constructor instructs the client to use the credentials 
  
 // specified in GOOGLE_APPLICATION_CREDENTIALS environment variable. 
  
 const 
  
 analyticsAdminClient 
  
 = 
  
 new 
  
 analyticsAdmin 
 . 
 AnalyticsAdminServiceClient 
 (); 
  
 // Lists all Google Analytics accounts available to the authenticated user. 
  
 async 
  
 function 
  
 listAccounts 
 () 
  
 { 
  
 // Uses listAccounts() with no arguments to fetch all pages. For more 
  
 // information on pagination in the Node.js library, see: 
  
 // https://github.com/googleapis/gax-nodejs/blob/main/client-libraries.md#auto-pagination 
  
 const 
  
 [ 
 response 
 ] 
  
 = 
  
 await 
  
 analyticsAdminClient 
 . 
 listAccounts 
 (); 
  
 console 
 . 
 log 
 ( 
 'Accounts:' 
 ); 
  
 for 
  
 ( 
 const 
  
 account 
  
 of 
  
 response 
 ) 
  
 { 
  
 console 
 . 
 log 
 ( 
 'Account name:' 
 , 
  
 account 
 . 
 name 
 ); 
  
 console 
 . 
 log 
 ( 
 'Display name:' 
 , 
  
 account 
 . 
 displayName 
 ); 
  
 console 
 . 
 log 
 ( 
 'Region code:' 
 , 
  
 account 
 . 
 regionCode 
 ); 
  
 console 
 . 
 log 
 ( 
 'Create time:' 
 , 
  
 account 
 . 
 createTime 
 . 
 seconds 
 ); 
  
 console 
 . 
 log 
 ( 
 'Update time:' 
 , 
  
 account 
 . 
 updateTime 
 . 
 seconds 
 ); 
  
 } 
  
 } 
  
 listAccounts 
 (); 
  

.NET

 using 
  
 Google 
 . 
 Analytics 
 . 
 Admin 
 . 
 V1Beta 
 ; 
 using 
  
 Google 
 . 
 Api 
 . 
 Gax 
 ; 
 using 
  
 System 
 ; 
 namespace 
  
 AnalyticsSamples 
 { 
  
 class 
  
 QuickStart 
  
 { 
  
 static 
  
 void 
  
 Main(string 
 [] 
  
 args) 
  
 { 
  
 AnalyticsAdminServiceClient 
  
 client 
  
 = 
  
 AnalyticsAdminServiceClient.Create() 
 ; 
  
 PagedEnumerable<ListAccountsResponse, 
  
 Account 
>  
 response 
  
 = 
  
 client.ListAccounts( 
  
 new 
  
 ListAccountsRequest() 
  
 ) 
 ; 
  
 foreach( 
  
 Account 
  
 account 
  
 in 
  
 response 
  
 ) 
  
 { 
  
 Console.WriteLine("Account 
  
 name 
 : 
  
 { 
 0 
 } 
 ", account.Name); 
 Console.WriteLine(" 
 Display 
  
 name 
 : 
  
 { 
 0 
 } 
 ", account.DisplayName); 
 Console.WriteLine(" 
 Region 
  
 code 
 : 
  
 { 
 0 
 } 
 ", account.RegionCode); 
 Console.WriteLine(" 
 Update 
  
 time 
 : 
  
 { 
 0 
 } 
 ", account.UpdateTime); 
 Console.WriteLine(" 
 Create 
  
 time 
 : 
  
 { 
 0 
 } 
 " 
 , 
  
 account 
 . 
 CreateTime 
 ); 
  
 Console 
 . 
 WriteLine 
 (); 
  
 } 
  
 } 
  
 } 
 } 
  

REST

To send this request, run the curl command from the command line or include the REST call in your application.

curl  
-H  
 "Authorization: Bearer 
 $( 
gcloud  
auth  
application-default  
print-access-token ) 
 " 
  
 \ 
  
-H  
 "x-goog-user-project: 
 ${ 
 PROJECT_ID 
 } 
 " 
  
 \ 
  
-H  
 "Content-Type: application/json" 
  
 \ 
  
https://analyticsadmin.googleapis.com/v1beta/accounts

Here's a sample response in JSON:

  { 
  
 "accounts" 
 : 
  
 [ 
  
 { 
  
 "name" 
 : 
  
 "accounts/123456789" 
 , 
  
 "createTime" 
 : 
  
 "2025-01-01T00:12:23.456Z" 
 , 
  
 "createTime" 
 : 
  
 "2025-01-01T00:12:23.456Z" 
 , 
  
 "displayName" 
 : 
  
 "Demo Account" 
 , 
  
 "regionCode" 
 : 
  
 "US" 
 , 
  
 "gmpOrganization" 
 : 
  
 "marketingplatformadmin.googleapis.com/organizations/abcdef12345678" 
  
 } 
 } 
 
Design a Mobile Site
View Site in Mobile | Classic
Share by: