---
title: "Get Google Ads campaign targeting"
method: GET
path: "/api/apps/{app_id}/google-ads/campaigns/{campaign_id}/targeting"
---

# Get Google Ads campaign targeting

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

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

Reads a campaign's current targeting from Google Ads: the themes it matches, the terms it excludes, and the locations on each side.

This reads Google directly rather than Base44's copy, so it is the authoritative set to seed an editor from. Send changes back with [Update campaign](/api-reference/update-google-ads-campaign).

Location entries carry a camel-cased `resourceName`, unlike the rest of this API. A location saved before Base44 recorded display names comes back with its numeric ID as `name`; nothing repairs that later, so resolve the label through [Search locations](/api-reference/search-google-ads-locations) if you need to show it.

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

## Path parameters

- `app_id` string, required — ID of the app whose Google Ads campaigns to manage.
- `campaign_id` string, required — Base44's ID for the campaign, as returned in `id` by [List campaigns](/api-reference/list-google-ads-campaigns). This is not the Google Ads campaign ID, which is reported separately as `google_campaign_id`.

## Response `200`

The campaign's live targeting.

- GoogleAdsCampaignTargeting — What a campaign currently targets, read live from Google.
  - `keyword_themes` string[], required — The themes the campaign matches on.
  - `excluded_terms` string[], required — Search terms the campaign is told not to match.
  - `targeted_locations` GoogleAdsTargetedLocation[], required — Locations the campaign targets.
    - `resourceName` string, required — Google's identifier for the location, as returned by [Search locations](/api-reference/search-google-ads-locations). Note this field is camel-cased, unlike the rest of this API.
    - `name` string, required — The location's display name. Falls back to the numeric ID from `resourceName` when Base44 has no stored label for it, which happens for locations set before the label was recorded.
  - `excluded_locations` GoogleAdsTargetedLocation[], required — Locations the campaign excludes.
    - `resourceName` string, required — Google's identifier for the location, as returned by [Search locations](/api-reference/search-google-ads-locations). Note this field is camel-cased, unlike the rest of this API.
    - `name` string, required — The location's display name. Falls back to the numeric ID from `resourceName` when Base44 has no stored label for it, which happens for locations set before the label was recorded.
  - `language_code` string, required — Two-letter code for the language the campaign advertises in. Defaults to `en` when the campaign has none set.

## 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, or there is no campaign with this ID.

---

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