Shopping & Ads

List AI ad placements (Scale+)

Paid placements returned inside AI answers. view=advertisers (default) returns one row per advertising domain with placement count, prompt reach, average and best position; view=ads returns the individual placements. Position 1 is the best slot, so a LOWER average position is better.

get/dimensions/ads

Query parameters

project_idinteger required

Project ID

pageinteger
per_pageinteger
view'advertisers' | 'ads'
ownedboolean
order'ads' | 'prompts' | 'avg_position' | 'domain' | 'recent' | 'oldest' | 'position'
direction'asc' | 'desc'
querystring
model'chatgpt' | 'perplexity' | 'gemini' | 'ai_overview' | 'ai_mode' | 'copilot' | 'claude' | 'grok' | 'deepseek' | 'meta_ai' | 'amazon_rufus'

Filter by AI model. Models the API key's user has not enabled are silently dropped.

collection_idinteger
country_codestring
language_codestring
promptinteger
prompt_type'informational' | 'navigational' | 'commercial' | 'transactional'

Filter by prompt type (search intent).

brand_kind'brand' | 'brand_other' | 'non_brand'

Filter by brand kind: brand (own brand/products), brand_other (competitors/other brands), non_brand (generic, no brand named). For fair 1:1 brand-vs-competitor comparisons (visibility, share of voice), use non_brand: brand-focused prompts skew results toward the brand they name. The in-app Overview page applies non_brand by default.

rangeinteger

Number of days to look back

fromstring date-time
tostring date-time
output'flat' | 'csv'

Rectangular output for BI tools (Tableau, Excel, Sheets, ELT). Omit for the default nested JSON. 'flat' returns the same metadata plus 'columns' and 'rows'; 'csv' returns those rows as text/csv. Errors are always returned as JSON.

Response

Paginated ad rows plus totals

Changes