List Accessible Accounts

You can list customers accessible to you with the ListAccessibleCustomers method in CustomerService . However, it is necessary to understand which customers are returned in this type of request.

Listing accessible customers is one of the few requests in the Google Ads API that does not require you to specify a customer ID in the request, and the request ignores any supplied login-customer-id . The resulting list of customers is based on your OAuth credentials. The request returns a list of all accounts that you are able to act upon directlygiven your current credentials. This won't necessarily include all accounts within the account hierarchy; rather, it will only include accounts where your authenticated user has been added with admin or other rights in the account.

Account access example

Imagine you are user A who is an admin for M1 and C3 in the two hierarchies shown in the figure. If you were to make a call to the Google Ads API, for example to GoogleAdsService , you could access information for accounts M1 , C1 , C2 , and C3 . However, a call to CustomerService.ListAccessibleCustomers would return only M1 and C3 since those are the only accounts where user A has directaccess.

Here is a code example illustrating the use of the CustomerService.ListAccessibleCustomers method:

Java

 private 
  
 void 
  
 runExample 
 ( 
 GoogleAdsClient 
  
 client 
 ) 
  
 { 
  
 // Optional: Change credentials to use a different refresh token, to retrieve customers 
  
 //           available for a specific user. 
  
 // 
  
 // UserCredentials credentials = 
  
 //     UserCredentials.newBuilder() 
  
 //         .setClientId("INSERT_OAUTH_CLIENT_ID") 
  
 //         .setClientSecret("INSERT_OAUTH_CLIENT_SECRET") 
  
 //         .setRefreshToken("INSERT_REFRESH_TOKEN") 
  
 //         .build(); 
  
 // 
  
 // client = client.toBuilder().setCredentials(credentials).build(); 
  
 try 
  
 ( 
 CustomerServiceClient 
  
 customerService 
  
 = 
  
 client 
 . 
 getLatestVersion 
 (). 
 createCustomerServiceClient 
 ()) 
  
 { 
  
 ListAccessibleCustomersResponse 
  
 response 
  
 = 
  
 customerService 
 . 
 listAccessibleCustomers 
 ( 
  
 ListAccessibleCustomersRequest 
 . 
 newBuilder 
 (). 
 build 
 ()); 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
 "Total results: %d%n" 
 , 
  
 response 
 . 
 getResourceNamesCount 
 ()); 
  
 for 
  
 ( 
 String 
  
 customerResourceName 
  
 : 
  
 response 
 . 
 getResourceNamesList 
 ()) 
  
 { 
  
 System 
 . 
 out 
 . 
 printf 
 ( 
 "Customer resource name: %s%n" 
 , 
  
 customerResourceName 
 ); 
  
 } 
  
 } 
 } 
  
  

C#

 public 
  
 void 
  
 Run 
 ( 
 GoogleAdsClient 
  
 client 
 ) 
 { 
  
 // Get the CustomerService. 
  
 CustomerServiceClient 
  
 customerService 
  
 = 
  
 client 
 . 
 GetService 
 ( 
 Services 
 . 
 V21 
 . 
 CustomerService 
 ); 
  
 try 
  
 { 
  
 // Retrieve the list of customer resources. 
  
 string 
 [] 
  
 customerResourceNames 
  
 = 
  
 customerService 
 . 
 ListAccessibleCustomers 
 (); 
  
 // Display the result. 
  
 foreach 
  
 ( 
 string 
  
 customerResourceName 
  
 in 
  
 customerResourceNames 
 ) 
  
 { 
  
 Console 
 . 
 WriteLine 
 ( 
  
 $"Found customer with resource name = '{customerResourceName}'." 
 ); 
  
 } 
  
 } 
  
 catch 
  
 ( 
 GoogleAdsException 
  
 e 
 ) 
  
 { 
  
 Console 
 . 
 WriteLine 
 ( 
 "Failure:" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Message: {e.Message}" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Failure: {e.Failure}" 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Request ID: {e.RequestId}" 
 ); 
  
 throw 
 ; 
  
 } 
 } 
  
  

PHP

 public static function runExample(GoogleAdsClient $googleAdsClient) 
 { 
 $customerServiceClient = $googleAdsClient->getCustomerServiceClient(); 
 // Issues a request for listing all accessible customers. 
 $accessibleCustomers = 
 $customerServiceClient->listAccessibleCustomers(new ListAccessibleCustomersRequest()); 
 print 'Total results: ' . count($accessibleCustomers->getResourceNames()) . PHP_EOL; 
 // Iterates over all accessible customers' resource names and prints them. 
 foreach ($accessibleCustomers->getResourceNames() as $resourceName) { 
 /** @var string $resourceName */ 
 printf("Customer resource name: '%s'%s", $resourceName, PHP_EOL); 
 } 
 }  
 

Python

 def 
  
 main 
 ( 
 client 
 : 
 GoogleAdsClient 
 ) 
 - 
> None 
 : 
 customer_service 
 : 
 CustomerServiceClient 
 = 
 client 
 . 
 get_service 
 ( 
 "CustomerService" 
 ) 
 accessible_customers 
 : 
 ListAccessibleCustomersResponse 
 = 
 ( 
 customer_service 
 . 
 list_accessible_customers 
 () 
 ) 
 result_total 
 : 
 int 
 = 
 len 
 ( 
 accessible_customers 
 . 
 resource_names 
 ) 
 print 
 ( 
 f 
 "Total results: 
 { 
 result_total 
 } 
 " 
 ) 
 resource_names 
 : 
 List 
 [ 
 str 
 ] 
 = 
 accessible_customers 
 . 
 resource_names 
 for 
 resource_name 
 in 
 resource_names 
 : 
 # resource_name is implicitly str 
 print 
 ( 
 f 
 'Customer resource name: " 
 { 
 resource_name 
 } 
 "' 
 ) 
  

Ruby

 def 
  
 list_accessible_customers 
 () 
  
 # GoogleAdsClient will read a config file from 
  
 # ENV['HOME']/google_ads_config.rb when called without parameters 
  
 client 
  
 = 
  
 Google 
 :: 
 Ads 
 :: 
 GoogleAds 
 :: 
 GoogleAdsClient 
 . 
 new 
  
 accessible_customers 
  
 = 
  
 client 
 . 
 service 
 . 
 customer 
 . 
 list_accessible_customers 
 () 
 . 
 resource_names 
  
 accessible_customers 
 . 
 each 
  
 do 
  
 | 
 resource_name 
 | 
  
 puts 
  
 "Customer resource name: 
 #{ 
 resource_name 
 } 
 " 
  
 end 
 end  
 
 . 
 rb 
  

Perl

 sub 
  
 list_accessible_customers 
  
 { 
  
 my 
  
 ( 
 $api_client 
 ) 
  
 = 
  
 @_ 
 ; 
  
 my 
  
 $list_accessible_customers_response 
  
 = 
  
 $api_client 
 - 
> CustomerService 
 () 
 - 
> list_accessible_customers 
 (); 
  
 printf 
  
 "Total results: %d.\n" 
 , 
  
 scalar 
  
 @ 
 { 
 $list_accessible_customers_response 
 - 
> { 
 resourceNames 
 }}; 
  
 foreach 
  
 my 
  
 $resource_name 
  
 ( 
 @ 
 { 
 $list_accessible_customers_response 
 - 
> { 
 resourceNames 
 }}) 
  
 { 
  
 printf 
  
 "Customer resource name: '%s'.\n" 
 , 
  
 $resource_name 
 ; 
  
 } 
  
 return 
  
 1 
 ; 
 } 
  
  

curl

 # 
Returns  
the  
resource  
names  
of  
customers  
directly  
accessible  
by  
the  
user # 
authenticating  
the  
call. # 
 # 
Variables: # 
API_VERSION, # 
DEVELOPER_TOKEN, # 
OAUTH2_ACCESS_TOKEN: # 
See  
https://developers.google.com/google-ads/api/rest/auth#request_headers # 
 for 
  
details. # 
 curl -f --request GET \ 
 "https://googleads.googleapis.com/v${API_VERSION}/customers:listAccessibleCustomers" \ 
 --header "Content-Type: application/json" \ 
 --header "developer-token: ${DEVELOPER_TOKEN}" \ 
 --header "Authorization: Bearer ${OAUTH2_ACCESS_TOKEN}" \  
 
  

List cancelled accounts

The Google Ads API doesn't provide a direct way to list the cancelled accounts under a Manager account. However, you can use the following workaround to retrieve this list.

  1. Retrieve the list of ACTIVE links using the customer_client_link resource and make a list of customers using the customer_client_link.client_customer field.

      SELECT 
      
     customer_client_link 
     . 
     client_customer 
     , 
      
     customer_client_link 
     . 
     status 
      
     FROM 
      
     customer_client_link 
      
     WHERE 
      
     customer_client_link 
     . 
     status 
      
     = 
      
     ACTIVE 
     
    
  2. Retrieve the list of ENABLED accounts using the customer_client resource.

      SELECT 
      
     customer_client 
     . 
     id 
     , 
      
     customer_client 
     . 
     descriptive_name 
      
     FROM 
      
     customer_client 
     
    
  3. The difference between the two lists gives you the list of cancelled accounts.

Create a Mobile Website
View Site in Mobile | Classic
Share by: