---
title: "List Google Ads campaigns"
method: GET
path: "/api/apps/{app_id}/google-ads/campaigns"
---

# List Google Ads campaigns

`GET /api/apps/{app_id}/google-ads/campaigns`

<Info>This API is in beta. Endpoints, fields, and behavior may still change, so avoid depending on it in production.</Info>

Returns the app's Google Ads campaigns, including paused and deleted ones. Check `status` to tell them apart.

Each row carries the campaign's `id`, name, type, status, daily budget, and its performance metrics. Pass an `id` to [Get campaign](/api-reference/get-google-ads-campaign) for the campaign's landing page, targeting, and phone number, which the list rows leave out, or to the pause, resume, update, and delete endpoints.

By default Base44 reads the metrics live from Google Ads. Pass `include_metrics=false` to skip that round trip, which returns the same fields with the metric ones zeroed and `metrics_pending` set to `true`. Either way `primary_status` comes back empty on this endpoint. Read one campaign to get it.

<Warning>The live read returns at most 50 campaigns, ordered by spend, and there is no pagination. An account with more than 50 active campaigns gets an incomplete list with nothing in the response to say so.</Warning>

<Note>This endpoint accepts a personal API key. Workspace API keys are not authorized for it and are rejected with a 403.</Note>

<Warning>The response includes fields beyond the ones documented here. Don't rely on undocumented response fields, as they can change at any time.</Warning>

## Path parameters

- `app_id` string, required — ID of the app whose Google Ads campaigns to manage.

## Query parameters

- `include_metrics` boolean — Whether to include each campaign's performance metrics, which are fetched from Google on the fly. Pass `false` to return the cached campaign records on their own, which is faster.

## Response `200`

Successful Response

- CampaignListItem[]
  - `id` string, required — Base44's ID for the campaign. Pass this as `campaign_id` on the other campaign endpoints.
  - `google_campaign_id` string, required — The campaign's ID in Google Ads.
  - `campaign_name` string, required — Name shown for the campaign.
  - `campaign_type` string, required — Campaign type.
  - `status` string, required — Serving state. A status of `REMOVED` is a deleted campaign, which stays listed for reporting.
  - `daily_budget_micros` integer, required — Daily budget in micros of the account currency, so `15000000` is 15.00.
  - `start_date` string, required — Date the campaign started, or empty when it has not.
  - `impressions` integer, required — Impressions, or `0` when `metrics_pending` is true.
  - `clicks` integer, required — Clicks, or `0` when `metrics_pending` is true.
  - `cost_micros` integer, required — Spend in micros of the account currency, or `0` when `metrics_pending` is true.
  - `spend` number, required — Spend as a decimal amount, taken from `cost_micros`, for display.
  - `conversions` number, required — Conversions, or `0` when `metrics_pending` is true.
  - `ctr` number, required — Click-through rate, or `0` when `metrics_pending` is true.
  - `review_status` string, required — Google's policy review status. Always empty on a deleted campaign.
  - `serving_status` string, required — Google's serving status. Always empty on a deleted campaign.
  - `primary_status` string, required — Always empty on this endpoint. Read one campaign to get it.
  - `primary_status_reasons` string[], required — Google's reasons why the campaign is limited or not serving. Always empty on a deleted campaign.
  - `metrics_pending` boolean, nullable — Present and `true` only when you passed `include_metrics=false`, meaning the metric fields above are zeroed rather than measured.

## Other responses

- `401` — Missing or invalid credentials.
- `403` — You don't have access to this app, the app does not exist, or you used a workspace API key. A missing app and an app you cannot reach are deliberately the same answer.
- `404` — The app has no connected Google Ads account.
- `422` — Validation Error

## Changes

- **2026-08-26** `df72f6cff1ca` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/idealspot/apis/base44-app-management-api/changes/api/apps/:app_id/google-ads/campaigns/get.md)

---

[API](https://skmtc.dev/idealspot/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/idealspot/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/idealspot/base44-app-management-api/revisions/394136a6cdd4/schema)
