---
title: "Search targeting options"
method: GET
path: "/v1/ads/targeting/search"
tags: ["Ad Targeting"]
---

# Search targeting options

`GET /v1/ads/targeting/search`

Resolve a human-readable query into the platform's opaque targeting ids used in
the `TargetingSpec` (`countries`/`regions`/`cities`/`zips`/`metros` geo keys, and
`interests`/`behaviors` entity ids) on `POST /v1/ads/create`,
`POST /v1/ads/targeting/reach-estimate`, and `saved_targeting` audiences.

The `dimension` param selects what is searched, `geo` (locations, further scoped
by `geoType`), `interest`, `behavior`, or `income`. Availability of each dimension
varies by platform (e.g. behaviours are Meta/TikTok only). Results are normalized
across platforms into a single shape, so the same client code consumes Meta,
TikTok, LinkedIn, X, Pinterest, and Google results.

TikTok geo searches return every matching level in one list (`type` is
`country`, `region`, `city`, `district`, or `metro` for DMA areas) —
`geoType` is not applied. Results are scoped to the advertiser's targetable
markets, and every id is usable in `regions`/`cities`/`metros` keys on
`POST /v1/ads/create`.

For geo queries, `q` should contain only the locality name (e.g. `"Amsterdam"`,
not `"Amsterdam, NL"`). Use `countryCode` to disambiguate.

## Query parameters

- `accountId` string, required
- `q` string, required
- `dimension` 'geo' | 'interest' | 'behavior' | 'income'
- `geoType` 'country' | 'region' | 'city' | 'zip' | 'metro'
- `countryCode` string
- `limit` integer

## Response `200`

Matching targeting options (normalized)

- object
  - `results` object[]
    - `id` string, required — The platform's opaque id. Use as a geo `key` (regions/cities/zips/metros) or an entity `id` (interests/behaviors) in TargetingSpec.
    - `name` string, required — Human-readable label.
    - `type` string, required — What the result is (e.g. city, region, country, zip, metro, interest, behavior, income).
    - `path` string[] — Optional breadcrumb of parent labels (e.g. ['United States', 'California', 'Los Angeles']). Disambiguates same-named results.
    - `audienceSize` integer, nullable — Optional estimated reachable users for this option, when the platform returns it.

## Other responses

- `400` — Missing or invalid query parameters
- `401` — Unauthorized
- `403` — Ads access required. Legacy plans need the Ads add-on; included by default on usage-based plans.
- `404` — Account not found, or the platform does not support the requested dimension

---

[API](https://skmtc.net/zernio/apis/zernio-api.md) · [All operations](https://skmtc.net/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/zernio/zernio-api/versions/51932b099b2f/schema)
