---
title: "List Google Ads campaigns"
method: POST
path: "/api/v1/tools/google_list_campaigns/execute"
tags: ["Google Ads"]
---

# List Google Ads campaigns

`POST /api/v1/tools/google_list_campaigns/execute`

## Request

- Base URL: `https://adako.ai`
- URL: `https://adako.ai/api/v1/tools/google_list_campaigns/execute`
- Auth: HTTP bearer

Lists the campaigns in a Google Ads account with their state, campaign type, bidding strategy, daily budget (shared or not) and last-30-day spend, clicks and conversions.
Use when: you need campaign ids for any other tool, or the user asks what campaigns exist, what they cost or which are running.
Do not use when: the user wants performance over a specific period (use google_get_campaign_performance) or the contents of one campaign (use google_get_campaign_structure).
Returns one row per campaign, most expensive first. Budgets are decimals in the account currency; a "shared" budget is used by more than one campaign, so changing it affects all of them. A budget_id from here can be given to google_create_search_campaign as budget_id, which puts the new campaign on that same budget instead of creating another.
Google does not report when a campaign was created. The nearest signal is the Started column: a campaign starts on the day it was made unless someone set a later date. Campaign ids are not creation order — never rank them by id to find the newest, and if the user asks for "the latest one", say what you are going by and let them confirm.
If you are unsure which account, campaign or period the user means, ask them — do not guess ids or dates.

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `arguments` object
    - `customer_id` string: Google Ads customer id (10 digits, dashes optional). Omit to use the primary account; list_connected_accounts shows the valid ids.
    - `status` 'ENABLED' | 'PAUSED' | 'REMOVED' | 'ALL': Campaign state to include. Defaults to everything except removed campaigns.
    - `campaign_type` 'SEARCH' | 'PERFORMANCE_MAX' | 'DISPLAY' | 'SHOPPING' | 'VIDEO' | 'DEMAND_GEN' | 'ALL': Campaign type to include. Defaults to all types.
    - `limit` integer: Maximum campaigns to return (default 100).

## Response `200`

The tool ran. A write returns proposal_id and approve_url while the change waits for approval.

- SuccessEnvelope
  - `success` unknown, required
  - `tool` string, required
  - `data` object, required: Machine-readable result.
  - `markdown` string, required: The same result written for a person or a model.
  - `quota` Quota: Task usage for the current billing period.
    - `plan` string
    - `used` integer
    - `limit` integer
    - `period_end` string
    - `upgrade_url` string
  - `proposal_id` string: Present for writes. Nothing changes on the ad platform until it is approved.
  - `approve_url` string: Where a person approves the proposal.
  - `request_id` string, required

## Other responses

- `400`: Invalid arguments, or the ad account could not be resolved.
- `401`: Missing, invalid, revoked or expired API key.
- `402`: Monthly task quota used up, or the plan does not include this tool.
- `403`: The connected ad account lacks the access level this tool needs.
- `404`: Unknown tool name.
- `409`: Not connected, reconnect needed, confirmation required, a proposal already pending or no longer pending, an identical create that failed earlier today (proposal_failed_before), a create that duplicates an approved one (duplicate_create), the ad-account limit of the plan reached (account_limit), or an Idempotency-Key reused with different arguments.
- `429`: Rate limited by Adako or by the ad platform. See Retry-After.
- `500`: Unexpected error inside Adako.
- `502`: The ad platform returned an error.

---

[API](https://skmtc.dev/adako/apis/adako-rest-api.md) · [All operations](https://skmtc.dev/adako/apis/adako-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adako/apis/adako-rest-api/revisions/59ee60d48a56?raw)
