Reference · Tools

Google Ads

Get and list campaigns from Google Ads accounts using the Google Ads API.

Action Analytics v1

The Google Ads node reads campaign data from your Google Ads account — fetch a single campaign by ID or pull every campaign in an account, filtered by status or date range. Use it to build automated reports that pipe spend and performance data into a spreadsheet or dashboard whenever a workflow runs. Metrics come back in micros, so a cost of 5000000 means $5.00.

Node type
Action
Parameters
13
Outputs
Output, Error
Credentials
Google Ads OAuth2 API

Google Ads

Get and list Google Ads campaigns using the Google Ads API.

Overview

Google Ads tool provides read access to Google Ads campaign data. Campaign operations: get a single campaign by ID, get all campaigns for an account. Queries use GAQL (Google Ads Query Language) via the POST /googleAds:search endpoint. Metrics are returned in micros (divide by 1,000,000 for human-readable values). Supports filtering by campaign status and date range segments.

Category: Analytics
Tool Name: google_ads
Version: 1

Appearance: Icon: lucide-TrendingUp | Color: #4285F4

Node Type

Action — processes input items and produces output

Input / Output

DirectionPort(s)
InputInput
OutputOutput, Error

Credentials

This tool requires Google Ads OAuth2 API credentials. See the Credentials Guide for setup instructions.

Resources

ResourceValue
Campaigncampaign

Operations

OperationValueDescription
Campaign: GetgetGet a specific campaign by its ID.
Campaign: Get ManygetAllGet many campaigns linked to the specified account.

Parameters

Campaign: Get

ParameterTypeRequiredDefaultDescription
Manager Customer IDstringNoThe MCC (Manager) account customer ID. Sent as the login-customer-id header. Dashes are stripped automatically. Leave empty if not using an MCC account.
Client Customer IDstringYesThe client account customer ID. Dashes are stripped automatically (e.g. 123-456-7890 becomes 1234567890).
Campaign IDstringYesThe ID of the campaign to retrieve.

Campaign: Get Many

ParameterTypeRequiredDefaultDescription
Manager Customer IDstringNoThe MCC (Manager) account customer ID. Sent as the login-customer-id header. Dashes are stripped automatically. Leave empty if not using an MCC account.
Client Customer IDstringYesThe client account customer ID. Dashes are stripped automatically (e.g. 123-456-7890 becomes 1234567890).
Return AllbooleanNofalseWhether to return all results or limit to a maximum number.
LimitnumberNo10Maximum number of campaigns to return. (shown when Return All is false)
Additional OptionscollectionNo{}Additional options for fetching campaigns.
— Date RangeoptionsNoallTimeFilters campaign statistics by period using GAQL segments.date.
Options: allTime, TODAY, YESTERDAY, LAST_7_DAYS, LAST_BUSINESS_WEEK, THIS_MONTH, LAST_MONTH, LAST_14_DAYS, LAST_30_DAYS
— Show Campaigns by StatusoptionsNoallFilters campaigns by status using GAQL campaign.status.
Options: all, ENABLED, PAUSED, REMOVED

All Operations

ParameterTypeRequiredDefaultDescription
AuthenticationoptionsNooAuth2Authentication method to use.
Options: oAuth2 (OAuth2 (recommended)), serviceAccount
Google AccountcredentialNoConnect or select your Google account. (shown when Authentication is oAuth2)
Service Account EmailstringYesThe email address of the Google service account. (shown when Authentication is serviceAccount)
Private KeystringYesThe private key from the service account JSON key file. (shown when Authentication is serviceAccount)
Max ConcurrencynumberNo5Maximum number of items to process concurrently.

Output Data

This node fans out: one output item per campaign record returned, not one per input item. An input item that matches ten campaigns produces ten output items; one that matches none produces a single pass-through item carrying the input JSON unchanged. Binary data is not forwarded.

Each campaign record is merged onto the input item JSON, so upstream fields stay addressable alongside the campaign fields. The campaign, budget and metrics objects are flattened into one level, so the GAQL field campaign.id arrives as id and metrics.cost_micros as costMicros.

Every campaign query selects the same fields:

GroupGAQL fields selected
Campaigncampaign.id, campaign.name, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, campaign.advertising_channel_sub_type
Budgetcampaign_budget.amount_micros, campaign_budget.period
Metricsmetrics.impressions, metrics.interactions, metrics.interaction_rate, metrics.average_cost, metrics.cost_micros, metrics.conversions, metrics.cost_per_conversion, metrics.conversions_from_interactions_rate, metrics.video_views, metrics.average_cpm, metrics.ctr

Money fields are returned in micros — divide by 1,000,000 for a currency value. Reference a field downstream by expression, for example {{ $json.name }} or {{ $json.costMicros }}.

Usage Examples

  • Get all campaigns for a Google Ads account
  • Retrieve a specific campaign by ID
  • Filter campaigns by status (ENABLED, PAUSED, REMOVED)
  • Get campaign metrics for a date range like LAST_30_DAYS
  • List campaigns managed under an MCC account

Example Configuration

Get one campaign by ID from a client account:

{
  "type": "google_ads",
  "parameters": {
    "resource": "campaign",
    "operation": "get",
    "clientCustomerId": "1234567890",
    "campaignId": "987654321"
  }
}

List every enabled campaign from the last 30 days, through an MCC account:

{
  "type": "google_ads",
  "parameters": {
    "resource": "campaign",
    "operation": "getAll",
    "managerCustomerId": "1111111111",
    "clientCustomerId": "1234567890",
    "returnAll": true,
    "additionalFields": {
      "dateRange": "LAST_30_DAYS",
      "campaignStatus": "ENABLED"
    }
  }
}

Take the account ID from the item and cap the result set:

{
  "type": "google_ads",
  "parameters": {
    "resource": "campaign",
    "operation": "getAll",
    "clientCustomerId": "{{ $json.customerId }}",
    "returnAll": false,
    "limit": 25,
    "maxConcurrency": 3
  }
}

Error Handling

ModeBehavior
stopHalts workflow on first error
continueSkips failed items, passes successful ones through
errorPortRoutes failed items to Error output port

Tips

Get and list campaigns from Google Ads accounts using GAQL queries via the Google Ads API.

Behavior notes

  • Dashes in customer IDs are stripped for you. 123-456-7890 and 1234567890 are both accepted in Manager Customer ID and Client Customer ID.
  • Manager Customer ID is only for MCC setups. Leave it empty when the credential authenticates directly against the client account; fill it in when one manager account fronts many client accounts.
  • This node reads; it does not write. Both operations run a GAQL SELECT — nothing here creates, pauses or edits a campaign.
  • Prefer a limit over Return All on large accounts. Return All pages through every matching campaign, which is slow and easy to rate-limit; a limit keeps the run predictable.
  • Filters shrink the query, not the response. Date Range and Show Campaigns by Status are pushed into the GAQL WHERE clause, so filtering there is cheaper than filtering downstream.

Frequently asked questions

Does this node let me create, pause or edit campaigns?

No. Both operations — get a single campaign and list all campaigns — run a GAQL SELECT query, which is read-only. Nothing in this node creates, pauses, edits or deletes any campaign. If you need to write to Google Ads, you would need a different integration.

When do I need to fill in the Manager Customer ID?

Only fill in the Manager Customer ID if you are using an MCC (manager account) that fronts multiple client accounts. If your OAuth2 credential authenticates directly against the client account you want to query, leave it empty. Using it unnecessarily will cause the request to fail.

My customer ID has dashes in it — will that break anything?

No. The node strips dashes automatically, so both 123-456-7890 and 1234567890 are accepted in either the Manager Customer ID or Client Customer ID fields. You can paste the ID straight from the Google Ads UI without reformatting it.

Should I use 'Return All' or set a limit when querying a large account?

Set a limit. Return All pages through every matching campaign in sequence, which is slow on large accounts and easy to push into Google Ads API rate limits. A specific limit keeps run times predictable and reduces the chance of a failed workflow mid-page.

How do the date range and status filters work — are they applied after the data is fetched?

No, they are pushed directly into the GAQL WHERE clause before the query runs. That means only matching campaigns are returned from the API, rather than fetching everything and filtering afterward. Filtering at query time is faster and consumes less of your API quota.

Build with the Google Ads node

Drop it into a workflow, wire it to an agent, or call it on a schedule. You'll need Google Ads OAuth2 API credentials first.

Open BusyBot

Last updated . Spotted something wrong? Tell us.