Reference · Tools
Google Ads
Get and list campaigns from Google Ads accounts using the Google Ads API.
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
| Direction | Port(s) |
|---|---|
| Input | Input |
| Output | Output, Error |
Credentials
This tool requires Google Ads OAuth2 API credentials. See the Credentials Guide for setup instructions.
Resources
| Resource | Value |
|---|---|
| Campaign | campaign |
Operations
| Operation | Value | Description |
|---|---|---|
| Campaign: Get | get | Get a specific campaign by its ID. |
| Campaign: Get Many | getAll | Get many campaigns linked to the specified account. |
Parameters
Campaign: Get
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Manager Customer ID | string | No | — | The 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 ID | string | Yes | — | The client account customer ID. Dashes are stripped automatically (e.g. 123-456-7890 becomes 1234567890). |
| Campaign ID | string | Yes | — | The ID of the campaign to retrieve. |
Campaign: Get Many
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Manager Customer ID | string | No | — | The 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 ID | string | Yes | — | The client account customer ID. Dashes are stripped automatically (e.g. 123-456-7890 becomes 1234567890). |
| Return All | boolean | No | false | Whether to return all results or limit to a maximum number. |
| Limit | number | No | 10 | Maximum number of campaigns to return. (shown when Return All is false) |
| Additional Options | collection | No | {} | Additional options for fetching campaigns. |
| — Date Range | options | No | allTime | Filters 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 Status | options | No | all | Filters campaigns by status using GAQL campaign.status. |
Options: all, ENABLED, PAUSED, REMOVED |
All Operations
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| Authentication | options | No | oAuth2 | Authentication method to use. |
Options: oAuth2 (OAuth2 (recommended)), serviceAccount | ||||
| Google Account | credential | No | — | Connect or select your Google account. (shown when Authentication is oAuth2) |
| Service Account Email | string | Yes | — | The email address of the Google service account. (shown when Authentication is serviceAccount) |
| Private Key | string | Yes | — | The private key from the service account JSON key file. (shown when Authentication is serviceAccount) |
| Max Concurrency | number | No | 5 | Maximum 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:
| Group | GAQL fields selected |
|---|---|
| Campaign | campaign.id, campaign.name, campaign.status, campaign.optimization_score, campaign.advertising_channel_type, campaign.advertising_channel_sub_type |
| Budget | campaign_budget.amount_micros, campaign_budget.period |
| Metrics | metrics.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
| Mode | Behavior |
|---|---|
| stop | Halts workflow on first error |
| continue | Skips failed items, passes successful ones through |
| errorPort | Routes 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-7890and1234567890are 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
WHEREclause, 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 BusyBotLast updated . Spotted something wrong? Tell us.