use Google::Ads::AdWords::Client;

  my $client = Google::Ads::AdWords::Client->new();

  my $adGroupId = "12345678";

  my $adgroupad_selector =
        adGroupIds => [$adGroupId]

  my $page =
      $client->AdGroupAdService()->get({selector => $adgroupad_selector});

  if ($page->get_totalNumEntries() > 0) {
    foreach my $entry (@{$page->get_entries()}) {
      #Do something with the results
  } else {
    print "No AdGroupAds found.\n";


Google::Ads::AdWords::Client is the main interface to the AdWords API. It takes care of handling your API credentials, and exposes all of the underlying services that make up the AdWords API.

Due to internal patching of the SOAP::WSDL module, the Google::Ads::AdWords::Client module should be loaded before other Google::Ads:: modules. A warning will occur if modules are loaded in the wrong order.


Each of these attributes can be set via Google::Ads::AdWords::Client->new(). Alternatively, there is a get_ and set_ method associated with each attribute for retrieving or setting them dynamically. For example, the set_client_id() allows you to change the value of the client_id attribute and get_client_id() returns the current value of the attribute.


An optional 10 digit client id (with or without dashes) to specify the AdWords account to act upon.


A user-generated string used to identify your application. If nothing is specified, "unknown" will be used instead.


A string used to tie usage of the AdWords API to a specific AdWords manager account.

The value should be a character string assigned to you by Google. You can apply for a Developer Token by following the instructions at


The version of the AdWords API to use. The newest is the default.


The URL of an alternate AdWords API server to use.

The default value is


If is set to "true" calls to services will only perform validation, the results will be either empty response or a SOAP fault with the API error causing the fault.

The default is "false".


If true, API will try to commit as many error free operations as possible and report the other operations' errors. This flag is currently only supported by the AdGroupCriterionService.

The default is "false".


The reporting configuration that controls additional options such as excluding the report header or summary row. Only supported starting with Google::Ads::AdWords::Reports::ReportingConfiguration:MIN_REPORT_CONFIGURATION_VERSION.


By default the client returns a SOAP::WSDL::SOAP::Typelib::Fault11 object if an error has ocurred at the server side, however if this flag is set to true, then the client will issue a die command on received SOAP faults.

The default is "false".


Number of requests performed with this client so far.


Number of failed requests performed with this client so far.


Number of operations made with this client so far.


An array of Google::Ads::AdWords::RequestStats containing the statistics of the last Google::Ads::AdWords::Constants:MAX_NUM_OF_REQUEST_STATS requests.


A Google::Ads::AdWords::RequestStats containing the statistics the last request performed by this client.


A string containing the last SOAP request XML sent by this client.


A string containing the last SOAP response XML sent by this client.



Initializes a new Google::Ads::AdWords::Client object.


new() takes parameters as a hash reference. The attributes of this object can be populated in a number of ways:

  • If the properties_file parameter is given, then properties are read from the file at that path and the corresponding attributes are populated.

  • If no properties_file parameter is given, then the code checks to see if there is a file named "" in the home directory of the current user. If there is, then properties are read from there.

  • Any of the "ATTRIBUTES" can be passed in as keys in the parameters hash reference. If any attribute is explicitly passed in then it will override any value for that attribute that might be in a properties file.


A new Google::Ads::AdWords::Client object with the appropriate attributes set.


If a properties_file is passed in but the file cannot be read, the code will die() with an error message describing the failure.


 # Basic use case. Attributes will be read from ~/ file.
 my $client = Google::Ads::AdWords::Client->new();

 # Most attributes from a custom properties file, but override client_id.
 eval {
   my $client = Google::Ads::AdWords::Client->new({
     properties_file => "/path/to/",
     client_id => "123-456-7890",
 if ($@) {
   # The properties file couldn't be read; handle error as appropriate.

 # Specify all attributes explicitly. The properties file will not override.
 my $client = Google::Ads::AdWords::Client->new({
   client_id => "123-456-7890",
   developer_token => "123xyzabc...",
   user_agent => "My Sample Program",


This module supports two approaches to handling SOAP faults (i.e. errors returned by the underlying SOAP service).

One approach is to issue a die() with a description of the error when a SOAP fault occurs. This die() would ideally be contained within an eval { }; block, thereby emulating try { } / catch { } exception functionality in other languages.

A different approach is to require developers to explicitly check for SOAP faults being returned after each AdWords API method. This approach requires a bit more work, but has the advantage of exposing the full details of the SOAP fault, like the fault code.

Refer to the object SOAP::WSDL::SOAP::Typelib::Fault11 for more detail on how faults get returned.

The default value is false, i.e. you must explicitly check for faults.


A true value will cause this module to die() when a SOAP fault occurs.

A false value will supress this die(). This is the default behavior.


The input parameter is returned.


 # $client is a Google::Ads::AdWords::Client object.

 # Enable die()ing on faults.
 eval {
   my $response = $client->AdGroupAdService->mutate($mutate_params);
 if ($@) {
   # Do something with the error information in $@.

 # Default behavior.
 my $response = $client->AdGroupAdService->mutate($mutate_params);
 if ($response->isa("SOAP::WSDL::SOAP::Typelib::Fault11")) {
   my $code = $response->get_faultcode() || '';
   my $description = $response->get_faultstring() || '';
   my $actor = $response->get_faultactor() || '';
   my $detail = $response->get_faultdetail() || '';

   # Do something with this error information.



A true or false value indicating whether the Google::Ads::AdWords::Client instance is set to die() on SOAP faults.


The client object contains a method for every service provided by the API. So for example it can invoked as $client->AdGroupService() and it will return an object of type Google::Ads::AdWords::v201809::AdGroupService::AdGroupServiceInterfacePort when using version v201809 of the API. For a list of all available services please refer to and for examples on how to invoke the services please refer to scripts in the examples folder.


Returns the OAuth2 for Web/Installed applications authorization handler attached to the client, for programmatically setting/overriding its properties.

$client->get_oauth_2_applications_handler()->set_client_id('client-id'); $client->get_oauth_2_applications_handler()->set_client_secret('client-secret'); $client->get_oauth_2_applications_handler()->set_access_token('access-token'); $client->get_oauth_2_applications_handler()->set_refresh_token('refresh-token'); $client->get_oauth_2_applications_handler()->set_access_type('access-type'); $client->get_oauth_2_applications_handler()->set_prompt('prompt'); $client->get_oauth_2_applications_handler()->set_redirect_uri('redirect-url');

Refer to Google::Ads::AdWords::OAuth2ApplicationsHandler for more details.


Returns the OAuth2 authorization handler attached to the client, for programmatically setting/overriding its specific properties.

$client->get_oauth_2_service_accounts_handler()->set_client_id('email'); $client->get_oauth_2_service_accounts_handler()->set_email_address('email'); $client->get_oauth_2_service_accounts_handler()-> set_delegated_email_address('delegated-email'); $client->get_oauth_2_service_accounts_handler()-> set_pem_file('path-to-certificate'); $client->get_oauth_2_service_accounts_handler()->set_display_name('email');

Refer to Google::Ads::AdWords::OAuth2ApplicationsHandler for more details.

__setup_SSL (Private)

Setups IO::Socket::SSL and Crypt::SSLeay environment variables to work with SSL certificate validation.


The path to the certificate authorites folder and the path to the certificate authorites file. Either can be null.



__parse_properties_file (Private)


The path to a properties file on disk. The data in the file should be in the following format:



A hash corresponding to the keys and values in the properties file.


die()s with an error message if the properties file could not be read.

_get_header (Protected)

Used by the Google::Ads::AdWords::Serializer class to get a valid request header corresponding to the current credentials in this Google::Ads::AdWords::Client instance.


A hash reference with credentials corresponding to the values needed to be included in the request header.

_auth_handler (Protected)

Retrieves the active AuthHandler. All handlers are checked in the order OAuth2 Applications -> OAuth2 Service Accounts.


An implementation of Google::Ads::Common::AuthHandlerInterface.


Copyright 2011 Google Inc.

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.


 $Rev: $
 $LastChangedBy: $
 $Id: $