Google Ads Transparency — Advertisers & Ad Creatives avatar

Google Ads Transparency — Advertisers & Ad Creatives

Pricing

from $2.13 / 1,000 ad founds

Go to Apify Store
Google Ads Transparency — Advertisers & Ad Creatives

Google Ads Transparency — Advertisers & Ad Creatives

Real Google advertiser identities, ad-volume ranges, verification status AND the actual ad creatives (headline, body, image, destination URL) from the Ads Transparency Center.

Pricing

from $2.13 / 1,000 ad founds

Rating

0.0

(0)

Developer

viralanalyzer

viralanalyzer

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

Google Ads Transparency Scraper Pro 🔍

🔗 View on Apify Store | 🇺🇸 English | 🇧🇷 Português


🇺🇸 English

Overview

Resolve brand names into real Google advertiser identities — advertiser name, AR… id, registration country, Google's own ad-volume range, and the identity-verification flag — then pull the live ad creatives for the same brands.

Two kinds of records land in one dataset:

  1. Advertiser records, from Google's Ads Transparency search endpoint.
  2. Creative records, fetched by delegating to viralanalyzer/google-ads-transparency, the browser-based scraper that renders the advertiser page. Switch this off with includeCreatives: false.

Advertiser record

{
"query": "nike",
"advertiserName": "<name Google has on file for the advertiser>",
"advertiserId": "AR…",
"advertiserCountry": "US",
"adCountLow": null,
"adCountHigh": null,
"adCountIsExact": false,
"isVerifiedAdvertiser": true,
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR…?region=US",
"searchRegion": "US",
"dataSource": "google-ads-transparency-search",
"scrapedAt": "2026-08-26T14:03:11.008Z"
}
FieldTypeMeaning
querystringThe term from your advertisers input that produced this record
advertiserNamestringAdvertiser name as registered with Google
advertiserIdstringGoogle advertiser id, AR followed by digits. Stable across regions
advertiserCountrystring | nullCountry code Google reports for the advertiser registration
adCountLownumber | nullLower bound of the ad-volume range Google reports
adCountHighnumber | nullUpper bound of that range
adCountIsExactbooleantrue when low and high match, meaning Google gave an exact figure instead of a bucket
isVerifiedAdvertiserbooleantrue only when Google marks the advertiser identity-verified
transparencyUrlstringPublic Transparency Center page for this advertiser, scoped to your region
searchRegionstringThe region you sent, echoed back
dataSourcestringConstant google-ads-transparency-search
scrapedAtstringISO-8601 extraction timestamp

Creative record

Emitted when includeCreatives is on and the upstream scraper returns cards. Each record is the upstream item passed through unchanged, with query and dataSource set by this actor:

FieldTypeMeaning
creativeIdstringGoogle creative id, CR followed by digits
advertiserIdstringOwner of the creative
advertiserNamestring | nullAdvertiser name read from the page
advertiserDomainstring | nullAdvertiser domain read from the page
formatstring | nullVIDEO, IMAGE or TEXT, inferred from the media present on the card
headlinestring | nullFirst usable text block on the card
bodystring | nullRemaining text blocks joined, capped at 500 characters
imageUrlstring | nullFirst non-icon image on the card
videoUrlstring | null<video> source or YouTube iframe source, when present
destinationUrlstring | nullFirst external link on the card
regionsarrayBest-effort list of { region, firstShown, lastShown } parsed from "Shown in XX" text. firstShown and lastShown are always null
creativeUrlstringDirect link to the creative on the Transparency Center
sourcestringConstant google-ads-transparency
querystringThe term from your input that produced this creative
dataSourcestringConstant viralanalyzer/google-ads-transparency

Input Example

{
"advertisers": [
"nike",
"shopify"
],
"region": "US",
"maxAds": 30,
"includeCreatives": true,
"maxCreativesPerAdvertiser": 10
}

Input Parameters

ParameterTypeDescription
advertisersstring[]Required. Brand or company names to resolve. Brand names (nike) match better than full domains (nike.com)
regionstringTwo-letter country code for the lookup: US, GB, BR, DE, ALL. Default US
maxAdsintegerCap applied to advertiser records and, separately, to creative records. Default 30
includeCreativesbooleanFetch ad creatives through the browser-based upstream scraper. Default true; the run takes longer with it on
maxCreativesPerAdvertiserintegerCreatives requested per search term. Default 10, maximum 100
proxyConfigurationobjectApify proxy, residential or datacenter. Default { "useApifyProxy": true }

When nothing matches

If Google answers but returns no advertiser for your terms, the run ends SUCCEEDED with a single diagnostic row and charges nothing:

{
"setup_status": "DIAGNOSTIC_GUIDE",
"_dataQuality": "diagnostic",
"message": "[DIAGNÓSTICO] O Google Ads Transparency respondeu à busca sem nenhum anunciante correspondente.",
"potential_causes": [
"Os termos informados não correspondem a nenhum anunciante indexado na região escolhida.",
"O anunciante pode estar registrado em outra região."
],
"remediations": [
"Use o nome comercial da marca (ex: \"nike\") em vez do domínio completo",
"Tente outra região no campo \"region\" (ex: BR, GB, DE)"
],
"advertisers": ["nike"],
"region": "US",
"scrapedAt": "2026-08-26T14:03:11.008Z"
}

If the endpoint never answers at all, the run fails loudly instead of returning an empty dataset.

✅ Capabilities & Limits

Stated up front, so you do not pay a run to find out.

Input / featureSupportedNotes
advertisersrequiredOne search per term. Brand names resolve better than domains.
region⚠️Scopes the lookup and is echoed back as searchRegion. It is your input, not proof that an ad ran there.
maxAds⚠️Applied twice: once to advertiser records, once to creative records. A run with both enabled can therefore write up to 2 × maxAds items, and every item is one billable ad-found event.
includeCreativesDelegates to viralanalyzer/google-ads-transparency. That actor runs a browser, so expect a slower run and its own platform cost on top.
maxCreativesPerAdvertiserPer-term creative cap, 1 to 100.
ProxyApify proxy for the search endpoint; the proxy config is forwarded to the upstream scraper too.
Ad geographic targeting (targetRegion)Not emitted. There is no targetRegion field. searchRegion only repeats the region you asked for, and advertiserCountry is the registration country. The creative record carries a best-effort regions array scraped from "Shown in XX" text, which is frequently empty.
First seen / last seen dates (firstSeenDate, lastSeenDate)Not emitted. No record carries an ad run date. Inside regions, firstShown and lastShown are always null. scrapedAt is the extraction time, nothing else.
Ad spend, impressions, clicks, CTRGoogle does not publish them, and this actor does not estimate them.
Keywords, bids, match typesNot in the Transparency Center and not emitted.
Field names adHeadline / adDescription / adFormatDo not exist. Creative text lives in headline, body and format.
Landing page contentdestinationUrl is captured; the page behind it is not fetched.

Tips

  • Run once with includeCreatives: false to resolve advertiserId values cheaply, then run again with the ids you care about.
  • adCountIsExact tells you whether adCountLow/adCountHigh are a real figure or a bucket. Filter on it before charting volumes.
  • advertiserId is the stable join key across regions and across runs.

Use Cases

  • Competitor creative review — read headline, body, imageUrl and destinationUrl for the brands you track.
  • Advertiser identity resolution — turn a list of brand names into AR… ids plus verification status.
  • Ad-volume benchmarking — compare adCountLow/adCountHigh across a competitive set.

FAQ

Q: Does it cover YouTube video ads? A: Creative records are classified as VIDEO when the card holds a <video> element or a YouTube iframe, and videoUrl captures that source. Classification comes from the rendered card, not from a Google-declared format field.

Q: Why is there no targetRegion or lastSeenDate? A: Neither is available from the endpoints this actor reads. Earlier builds printed them from generated values; that was removed in v3.0.0.

Q: How am I billed? A: One ad-found event per item written — advertiser records included. Diagnostic runs write one row and charge nothing.


🇧🇷 Português

Visão Geral

Resolva nomes de marca em identidades reais de anunciantes do Google — nome, id AR…, país de registro, a faixa de volume de anúncios que o próprio Google publica e o selo de verificação — e depois puxe os criativos ativos dessas mesmas marcas.

Dois tipos de registro caem no mesmo dataset:

  1. Registros de anunciante, vindos do endpoint de busca do Ads Transparency.
  2. Registros de criativo, obtidos por delegação ao viralanalyzer/google-ads-transparency, o scraper de navegador que renderiza a página do anunciante. Desligue com includeCreatives: false.

Registro de anunciante

{
"query": "nike",
"advertiserName": "<nome que o Google tem registrado para o anunciante>",
"advertiserId": "AR…",
"advertiserCountry": "US",
"adCountLow": null,
"adCountHigh": null,
"adCountIsExact": false,
"isVerifiedAdvertiser": true,
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR…?region=US",
"searchRegion": "US",
"dataSource": "google-ads-transparency-search",
"scrapedAt": "2026-08-26T14:03:11.008Z"
}
CampoTipoSignificado
querystringTermo do seu input advertisers que gerou o registro
advertiserNamestringNome do anunciante como registrado no Google
advertiserIdstringId do anunciante no Google, AR seguido de dígitos. Estável entre regiões
advertiserCountrystring | nullCódigo de país do registro do anunciante
adCountLownumber | nullLimite inferior da faixa de volume de anúncios reportada pelo Google
adCountHighnumber | nullLimite superior dessa faixa
adCountIsExactbooleantrue quando limite inferior e superior coincidem, ou seja, o Google deu número exato em vez de faixa
isVerifiedAdvertiserbooleantrue só quando o Google marca a identidade como verificada
transparencyUrlstringPágina pública do anunciante no Transparency Center, na sua região
searchRegionstringA region que você enviou, devolvida
dataSourcestringConstante google-ads-transparency-search
scrapedAtstringTimestamp ISO-8601 da extração

Registro de criativo

Sai quando includeCreatives está ligado e o scraper upstream devolve cards. Cada registro é o item do upstream repassado sem alteração, com query e dataSource definidos por este actor:

CampoTipoSignificado
creativeIdstringId do criativo no Google, CR seguido de dígitos
advertiserIdstringDono do criativo
advertiserNamestring | nullNome do anunciante lido da página
advertiserDomainstring | nullDomínio do anunciante lido da página
formatstring | nullVIDEO, IMAGE ou TEXT, inferido pela mídia presente no card
headlinestring | nullPrimeiro bloco de texto aproveitável do card
bodystring | nullDemais blocos de texto concatenados, cortados em 500 caracteres
imageUrlstring | nullPrimeira imagem não-ícone do card
videoUrlstring | nullSource do <video> ou do iframe do YouTube, quando existe
destinationUrlstring | nullPrimeiro link externo do card
regionsarrayLista best-effort de { region, firstShown, lastShown } extraída do texto "Shown in XX". firstShown e lastShown são sempre null
creativeUrlstringLink direto para o criativo no Transparency Center
sourcestringConstante google-ads-transparency
querystringTermo do seu input que gerou o criativo
dataSourcestringConstante viralanalyzer/google-ads-transparency

Exemplo de Entrada

{
"advertisers": [
"nike",
"shopify"
],
"region": "US",
"maxAds": 30,
"includeCreatives": true,
"maxCreativesPerAdvertiser": 10
}

Parâmetros de Entrada

ParâmetroTipoDescrição
advertisersstring[]Obrigatório. Nomes de marca ou empresa a resolver. Nome comercial (nike) casa melhor que domínio completo (nike.com)
regionstringCódigo de país de 2 letras para a busca: US, GB, BR, DE, ALL. Padrão US
maxAdsintegerTeto aplicado aos registros de anunciante e, separadamente, aos de criativo. Padrão 30
includeCreativesbooleanBusca os criativos pelo scraper de navegador upstream. Padrão true; o run demora mais com isso ligado
maxCreativesPerAdvertiserintegerCriativos pedidos por termo de busca. Padrão 10, máximo 100
proxyConfigurationobjectProxy Apify, residencial ou datacenter. Padrão { "useApifyProxy": true }

Quando nada casa

Se o Google responde mas não retorna anunciante para os seus termos, o run termina SUCCEEDED com uma única linha de diagnóstico e não cobra nada:

{
"setup_status": "DIAGNOSTIC_GUIDE",
"_dataQuality": "diagnostic",
"message": "[DIAGNÓSTICO] O Google Ads Transparency respondeu à busca sem nenhum anunciante correspondente.",
"potential_causes": [
"Os termos informados não correspondem a nenhum anunciante indexado na região escolhida.",
"O anunciante pode estar registrado em outra região."
],
"remediations": [
"Use o nome comercial da marca (ex: \"nike\") em vez do domínio completo",
"Tente outra região no campo \"region\" (ex: BR, GB, DE)"
],
"advertisers": ["nike"],
"region": "US",
"scrapedAt": "2026-08-26T14:03:11.008Z"
}

Se o endpoint não responder nada, o run falha de forma explícita em vez de devolver dataset vazio.

✅ Capacidades e Limites

Declarado antes da compra, para não gastar um run descobrindo.

Entrada / recursoSuportadoObservações
advertisersobrigatórioUma busca por termo. Nome de marca resolve melhor que domínio.
region⚠️Delimita a busca e volta como searchRegion. É o seu input, não prova de que um anúncio rodou ali.
maxAds⚠️Aplicado duas vezes: uma aos registros de anunciante, outra aos de criativo. Um run com os dois ligados pode gravar até 2 × maxAds itens, e cada item é um evento ad-found cobrado.
includeCreativesDelega ao viralanalyzer/google-ads-transparency. Aquele actor sobe um navegador, então conte com run mais lento e custo de plataforma próprio por cima.
maxCreativesPerAdvertiserTeto de criativos por termo, de 1 a 100.
ProxyProxy Apify no endpoint de busca; a configuração também é repassada ao scraper upstream.
Segmentação geográfica do anúncio (targetRegion)Não é emitida. Não existe campo targetRegion. searchRegion apenas repete a região que você pediu, e advertiserCountry é o país de registro. O registro de criativo traz um array regions best-effort raspado do texto "Shown in XX", que costuma vir vazio.
Datas de primeira/última veiculação (firstSeenDate, lastSeenDate)Não são emitidas. Nenhum registro traz data de veiculação. Dentro de regions, firstShown e lastShown são sempre null. scrapedAt é a hora da extração, e só.
Investimento, impressões, cliques, CTRO Google não publica, e este actor não estima.
Palavras-chave, lances, tipos de correspondênciaNão estão no Transparency Center e não são emitidos.
Campos adHeadline / adDescription / adFormatNão existem. O texto do criativo está em headline, body e format.
Conteúdo da landing pagedestinationUrl é capturada; a página por trás dela não é aberta.

Dicas

  • Rode primeiro com includeCreatives: false para resolver os advertiserId de forma barata, depois rode de novo só com os ids que interessam.
  • adCountIsExact diz se adCountLow/adCountHigh são número real ou faixa. Filtre por ele antes de plotar volumes.
  • advertiserId é a chave estável entre regiões e entre runs.

Casos de Uso

  • Análise de criativos de concorrentes — leia headline, body, imageUrl e destinationUrl das marcas que você acompanha.
  • Resolução de identidade de anunciante — entra nome de marca, sai o id AR… do Ads Transparency Center, com o status de verificação e a faixa de volume de anúncios.
  • Comparação de volume de anúncios — confronte adCountLow/adCountHigh entre um conjunto de concorrentes.

Perguntas Frequentes

P: Inclui anúncios em vídeo do YouTube? R: O criativo é classificado como VIDEO quando o card tem um elemento <video> ou um iframe do YouTube, e videoUrl captura esse source. A classificação vem do card renderizado, não de um campo de formato declarado pelo Google.

P: Por que não existe targetRegion nem lastSeenDate? R: Nenhum dos dois está disponível nos endpoints que este actor lê. Versões anteriores imprimiam esses campos a partir de valores gerados; isso saiu na v3.0.0.

P: Como sou cobrado? R: Um evento ad-found por item gravado, incluindo os registros de anunciante. Run de diagnóstico grava uma linha e não cobra nada.


💰 Pricing

This actor uses Pay Per Event (PPE) pricing — you pay only per item written to the dataset (ad-found), advertiser records included. Platform usage is included. Diagnostic runs charge nothing. See the current price on the Pricing panel of this actor's Apify Store page.



📝 Changelog

  • v3.0.0 (2026-08-26) — Creatives added by delegating to viralanalyzer/google-ads-transparency. Advertiser lookup kept. Fields that earlier builds generated rather than scraped (adHeadline, adDescription, adFormat, firstSeenDate, lastSeenDate, targetRegion) no longer exist.
  • v1.0.0 (2026-08-20) — Initial release: Pay-Per-Event pricing and automated proxy support

License

ISC © 2026 Viral Analyzer Platform


💡 Need AI analysis on top of this data — sentiment, trend detection and a dashboard, with no API keys to manage?
ViralAnalyzer runs this actor + 42 more data sources with built-in AI. JSON + insights in one call.