Skip to main content
Google Ads logo

Overview

Add Google Ads to any ModuleX agent or workflow. Google Ads API integration covering GAQL reports across Campaigns, Ad Groups, Ads, and Customers; Customer Match list management; offline conversion uploads; and keyword idea generation against the REST API at googleads.googleapis.com.
Categories: Marketing & Advertising · Analytics · Business Services · Auth: OAuth2 · Actions: 10

Authentication

OAuth2 Authentication

Connect using Google OAuth2 (recommended). Requires a Google Ads API developer token in addition to the OAuth credentials.

Required Credentials

FieldDescriptionRequiredFormat
Client IDGoogle OAuth2 Client ID from Cloud Console.Yes123456789-xxxxxxxxxxxxxxxx.apps.googleusercontent.com
Client SecretGoogle OAuth2 Client Secret.YesGOCSPX-xxxxxxxxxxxxxxxxxxxx
Developer TokenGoogle Ads API developer-token header value. Apply at https://ads.google.com/aw/apicenter (Manager Account required).Yesxxxxxxxxxxxxxxxxxxxxxx

OAuth Configuration

  • Authorization URL: https://accounts.google.com/o/oauth2/v2/auth
  • Token URL: https://oauth2.googleapis.com/token
  • Scopes: https://www.googleapis.com/auth/adwords

Available Actions

Parameters

account_id
string
required
Login customer ID (the Manager Account ID used as login-customer-id header). Digits only, no dashes.
user_list_id
string
required
ID of the CRM-based customer list to update.
contact_email
string
required
Email address of the contact to add.
customer_client_id
string
Managed customer (client) ID. Defaults to account_id when omitted.

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "offline_user_data_job_resource_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Offline User Data Job Resource Name"
    },
    "operation_resource_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Operation Resource Name"
    }
  },
  "required": [
    "success"
  ],
  "title": "AddContactToListByEmailOutput",
  "type": "object"
}

Parameters

account_id
string
required
Login customer ID (login-customer-id header).
name
string
required
Name of the user list.
list_type
string
required
Which UserList variant to create. One of: crmBasedUserList, ruleBasedUserList, logicalUserList, basicUserList, lookalikeUserList. Determines which fields list_type_data should populate.
list_type_data
object
Variant-specific payload. Merged under the list_type key. See https://developers.google.com/google-ads/api/reference/rpc/v21/UserList for the per-variant schema. (Default: {})
description
string
Optional description of the user list.
additional_fields
object
Additional top-level UserList fields to merge into the create payload (e.g. membershipLifeSpan). (Default: {})
customer_client_id
string
Managed customer ID; defaults to account_id when omitted.

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Id"
    },
    "resource_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Resource Name"
    }
  },
  "required": [
    "success"
  ],
  "title": "CreateCustomerListOutput",
  "type": "object"
}

Parameters

account_id
string
required
Login customer ID (login-customer-id header).
resource
string
required
Resource name to FROM-clause against (e.g. campaign, ad_group, ad_group_ad, customer).
fields
array
List of resource fields to select (strings). The resource prefix is auto-added if missing.
segments
array
List of segments (strings).
metrics
array
List of metric fields (strings).
object_filter
array
Optional list of resource IDs to filter by (strings).
date_range
string
Date range constant. See create_ad_group_report for valid values.
start_date
string
Custom range start (YYYY-MM-DD); required when date_range=CUSTOM.
end_date
string
Custom range end (YYYY-MM-DD); required when date_range=CUSTOM.
order_by
string
Field name to order results by.
direction
string
Order direction: ASC or DESC. (Default: ASC)
limit
integer
Maximum number of results to return.
customer_client_id
string
Managed customer ID; defaults to account_id when omitted.

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "query": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Query"
    },
    "results": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Results",
      "type": "array"
    },
    "field_mask": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Field Mask"
    },
    "request_id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Request Id"
    }
  },
  "required": [
    "success"
  ],
  "title": "CreateReportOutput",
  "type": "object"
}

Parameters

account_id
string
required
Login customer ID (login-customer-id header).
customer_client_id
string
required
Managed customer ID to run the request against (required by the keyword ideas service).
additional_fields
object
Body of the GenerateKeywordIdeasRequest. See https://developers.google.com/google-ads/api/reference/rpc/v22/KeywordPlanIdeaService/GenerateKeywordIdeas for the required structure (e.g. language, geoTargetConstants, keywordSeed). (Default: {})

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "results": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Results",
      "type": "array"
    },
    "total_size": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Total Size"
    },
    "next_page_token": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Next Page Token"
    }
  },
  "required": [
    "success"
  ],
  "title": "GenerateKeywordIdeasOutput",
  "type": "object"
}

Response

{
  "$defs": {
    "AccessibleCustomer": {
      "additionalProperties": false,
      "description": "One entry returned from ``customers:listAccessibleCustomers``.",
      "properties": {
        "resource_name": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Resource Name"
        },
        "customer_id": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Customer Id"
        }
      },
      "title": "AccessibleCustomer",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "customers": {
      "items": {
        "$ref": "#/$defs/AccessibleCustomer"
      },
      "title": "Customers",
      "type": "array"
    }
  },
  "required": [
    "success"
  ],
  "title": "ListAccountIdOptionsOutput",
  "type": "object"
}

Parameters

account_id
string
required
Login customer ID (login-customer-id header).
name
string
required
Name of the conversion action.
type
string
required
ConversionActionType enum value (e.g. UPLOAD_CLICKS, UPLOAD_CALLS, WEBPAGE). See https://developers.google.com/google-ads/api/reference/rpc/v21/ConversionActionTypeEnum.ConversionActionType.
additional_fields
object
Additional ConversionAction fields to merge into the create payload (e.g. category, status, valueSettings). (Default: {})
customer_client_id
string
Managed customer ID; defaults to account_id when omitted.

Response

{
  "additionalProperties": false,
  "properties": {
    "success": {
      "title": "Success",
      "type": "boolean"
    },
    "error": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Error"
    },
    "id": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Id"
    },
    "resource_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Resource Name"
    }
  },
  "required": [
    "success"
  ],
  "title": "SendOfflineConversionOutput",
  "type": "object"
}

Limits & Quotas

  • Daily operations quota depends on the developer-token access level (Test, Basic, Standard). Standard tokens allow 15,000 operations/day initially. See https://developers.google.com/google-ads/api/docs/access-levels.
  • Customer Match lists typically take 6 to 12 hours to update after add_contact_to_list_by_email runs.
  • generate_keyword_ideas counts against the same quota and may be rate-limited per minute on Basic-access tokens.
  • Error model: non-2xx responses and timeouts are caught and returned as success=False + error rather than raising. The error string includes the API status code and body excerpt.

PostGrid

Ahrefs

Coinbase