---
title: "Search Google Ads locations"
method: GET
path: "/api/apps/{app_id}/google-ads/geo-targets/search"
---

# Search Google Ads locations

`GET /api/apps/{app_id}/google-ads/geo-targets/search`

## Request

- Base URL: `https://app.base44.com`
- URL: `https://app.base44.com/api/apps/{app_id}/google-ads/geo-targets/search`
- Auth: HTTP bearer

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

Searches Google's location catalog so you can offer a location picker when you create or edit a campaign.

Pass what the person is typing as `query`. Results come back ordered by how well they match, and each one carries the `resource_name` you pass to [Create campaign](/api-reference/create-google-ads-campaign) in `geo_targets`.

You do not need a connected Google Ads account, so this works before the account exists. Set `country_code` to keep results inside one country. An empty `query` returns Google's unfiltered suggestions rather than an error.

<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 you are planning a Google Ads campaign for.

## Query parameters

- `query` string: What the person is typing. Shorter than two characters is still accepted.
- `country_code` string: Keep results inside one country, as an ISO 3166-1 alpha-2 code. Empty searches everywhere.
- `limit` integer: Most results to return.

## Response `200`

Locations matching the search string.

- GoogleAdsGeoTarget[]
  - `resource_name` string, required: Google's identifier for the location. Pass it in `geo_targets` when you create a campaign.
  - `name` string, required: The location's own name.
  - `canonical_name` string, required: The location's full path, including its region and country.
  - `country_code` string, required: ISO 3166-1 alpha-2 country code the location sits in.
  - `target_type` string, required: What kind of place this is, for example `City`, `Region` or `Country`.
  - `reach` integer, required: Google's estimate of how many people can be reached in this location.
  - `search_term` string, required: The `query` value this result was matched against, echoed back.

## 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. Marketing setup, campaign edits, generation and resuming also return `app_marketing_not_allowed` when the app's owning workspace has the FERPA designation. Historical reads, pausing, deletion and financial settlement remain available.
- `422`: Validation Error

## Changes

> 58 revisions in range; 1 not diffed.

- **2026-10-13** `b92cc2f13639`: 2 info
  - the security scope `read_only` was added to the endpoint's security scheme `PersonalAccessTokenAuth`
  - the security scope `full_access` was removed from the endpoint's security scheme `PersonalAccessTokenAuth`
- **2026-10-12** `5e139db2e643`: 1 info
  - the endpoint scheme security `PersonalAccessTokenAuth` was added to the API

[Operation history](https://skmtc.dev/adexad/apis/base44-app-management-api/changes/api/apps/:app_id/google-ads/geo-targets/search/get.md)

---

[API](https://skmtc.dev/adexad/apis/base44-app-management-api.md) · [All operations](https://skmtc.dev/adexad/apis/base44-app-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/adexad/apis/base44-app-management-api/revisions/fa29e915c226?raw)
