Google Ads Transparency Scraper — No Login, No Blocks avatar

Google Ads Transparency Scraper — No Login, No Blocks

Pricing

from $2.00 / 1,000 creative scrapeds

Go to Apify Store
Google Ads Transparency Scraper — No Login, No Blocks

Google Ads Transparency Scraper — No Login, No Blocks

Extract competitor ads from Google Ads Transparency Center (Search, YouTube, Maps, Play, Shopping). No login or API key required. Compliance + competitive intelligence.

Pricing

from $2.00 / 1,000 creative scrapeds

Rating

5.0

(1)

Developer

viralanalyzer

viralanalyzer

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

0

Monthly active users

3 days ago

Last modified

Share

📢 Google Ads Transparency Center Scraper

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

Extract competitor ad creatives from Google Ads Transparency Center — ads running on Google Search, YouTube, Maps, Play and Shopping. No login or API key required. Renders the adstransparency.google.com SPA with Playwright and reads the advertiser and creative cards from the live DOM.

✨ Features

  • Anonymous access — no Google account, no OAuth, no API key
  • Search by advertiser name/domain OR direct lookup by AR... advertiser ID
  • 18 region filters (US/BR/GB/DE/FR/ES/IT/CA/AU/MX/AR/CL/CO/JP/IN/NL/BE + Anywhere)
  • Format filter — TEXT / IMAGE / VIDEO / ALL
  • Auto-pagination up to 500 creatives per advertiser
  • Output per creative — creative ID, headline, body, image URL, video URL, destination URL, and the countries the card lists under "Shown in"
  • Paced navigation — waits of 0.5s to 4s between scrolls, advertiser pages and SPA transitions
  • NEVER 0 ITEMS guard — fails loud if Google rotated schema instead of silent success

📥 Input

ParameterTypeRequiredDefaultDescription
modeenumYessearchTermsearchTerm = find by name/domain, advertiserId = direct lookup
searchTermstringIf mode=searchTermNikeAdvertiser name, brand or domain
advertiserIdstringIf mode=advertiserIdGoogle advertiser ID (format AR...)
regionenumNoanywhereISO country code or anywhere
formatFilterenumNoALLTEXT / IMAGE / VIDEO / ALL
maxCreativesintNo50Max creatives per advertiser (1-500)
maxAdvertisersintNo3Top-N matching advertisers to fetch (search mode only)

Example input

{
"mode": "searchTerm",
"searchTerm": "Nike",
"region": "US",
"formatFilter": "VIDEO",
"maxCreatives": 50,
"maxAdvertisers": 1
}

📤 Output

{
"creativeId": "CR123456789",
"advertiserId": "AR12345678",
"advertiserName": "Nike, Inc.",
"advertiserDomain": "nike.com",
"format": "VIDEO",
"headline": "Just Do It",
"body": "Discover the new Air Max collection…",
"imageUrl": "https://tpc.googlesyndication.com/.../image.jpg",
"videoUrl": "https://tpc.googlesyndication.com/.../video.mp4",
"destinationUrl": "https://www.nike.com/...",
"regions": [
{"region": "US", "firstShown": null, "lastShown": null}
],
"creativeUrl": "https://adstransparency.google.com/advertiser/AR12345678/creative/CR123456789",
"source": "google-ads-transparency"
}

Those are all the keys — the item has no others. regions is built from the "Shown in XX" text the creative card renders, so firstShown and lastShown are keys of the shape and stay null: the grid card carries the country, not the date range. There is no impression, spend or timesShown metric anywhere in the item.

✅ Capabilities & Limits

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

Built here: in mode: "searchTerm" the actor does not read a results page - the Transparency Center has none. It types the term into the live SPA combobox and, when no advertiser anchors appear in the DOM, clicks the first maxAdvertisers entries of Google's autocomplete listbox one by one ([role="option"], noWaitAfter: true because routing is client-side React). The term has to produce Google autocomplete suggestions: brand names work, generic keywords resolve to nothing.

Input / featureSupportedNotes
moderequiredChoose 'searchTerm' to search advertisers by name/domain, or 'advertiserId' for direct lookup if you already have the AR... ID.
searchTermAdvertiser name, brand or domain to search (e.g. 'Nike', 'Magalu', 'shopify.com'). Required when mode=searchTerm.
advertiserIdDirect Google advertiser ID format AR.... Required when mode=advertiserId. Find via the Transparency Center URL.
regionISO-3166 country code to filter ads shown in that region. 'anywhere' = no filter.
formatFilterFilter by ad format. ALL = no filter.
Result volume (maxCreatives)⚠️Maximum number of ad creatives to return per advertiser (1-500).
Result volume (maxAdvertisers)⚠️When mode=searchTerm, how many top-matching advertisers to scrape ads for.
Proxy⚠️Proxy settings. Google Ads may block or challenge requests without proxies.
Impressions / times shownthe creative grid carries no impression count. There is no timesShown field, and none is estimated
Ad spend or budgetnot extracted
First / last shown dates⚠️firstShown and lastShown exist inside regions[] and are always null — the card gives the country, not the date range
Advertiser-level totalsone item per creative; no per-advertiser aggregate is emitted

💰 Pricing

$0.005 per creative returned (creative-scraped), plus the Apify platform usage of the run, which is billed to you at Apify's standard rates and shown on the run page.

You are charged only when a real creative comes back. A blocked run, or one where the source answered with nothing, returns a labeled diagnostic row and charges no event.

🚀 Use cases

  • Competitive ad intelligence — see what your competitors are spending on
  • Compliance research — track political/issue ads at scale
  • Creative analysis — extract winning headline/copy/imagery patterns
  • Brand safety — discover ads using your brand keywords
  • Affiliate research — find advertiser destination URLs for affiliate matching

⚠️ Common errors

ErrorCauseFix
[FAIL] No advertisers resolved for "<term>"The term produced no Google autocomplete suggestionUse the brand name as Google spells it, or switch to mode: advertiserId
[FAIL] Zero items with NO anti-bot blockThe advertiser page rendered but no creative card matchedTry region: anywhere + formatFilter: ALL
Diagnostic item with _dataQuality: "diagnostic"A block was confirmed (403 / 429 / captcha / timeout)Re-run, ideally with residential proxies. Nothing is charged on this path

🔒 No data sent to third parties

Requests go to adstransparency.google.com and to nothing else. Traffic is routed through Apify Proxy when proxyConfiguration is on, which is the default; no other middleware sees your search terms.

🆕 Changelog

  • v2.0: Rewritten on PlaywrightCrawler — the Transparency Center is a pure SPA, so advertiser and creative cards are read from the rendered DOM. Screenshot and HTML dump saved to the Key-Value Store on failure.
  • v1.0 (2026-05-15): Initial release. Auto-pagination. NEVER 0 ITEMS guard.

Português

📢 Google Ads Transparency Center Scraper

Extrai criativos publicitários de competidores do Google Ads Transparency Center — ads rodando em Google Search, YouTube, Maps, Play e Shopping. Sem login, sem API key. Renderiza a SPA do adstransparency.google.com com Playwright e lê os cards de anunciante e de criativo direto do DOM.

✨ Funcionalidades

  • Acesso anônimo — sem conta Google, sem OAuth, sem API key
  • Busca por nome/domínio do anunciante OU consulta direta pelo ID de anunciante AR...
  • 18 filtros de região (US/BR/GB/DE/FR/ES/IT/CA/AU/MX/AR/CL/CO/JP/IN/NL/BE + Anywhere)
  • Filtro de formato — TEXT / IMAGE / VIDEO / ALL
  • Paginação automática até 500 criativos por anunciante
  • Saída por criativo — ID do criativo, headline, body, URL da imagem, URL do vídeo, URL de destino e os países que o card lista em "Shown in"
  • Navegação pausada — esperas de 0,5s a 4s entre scrolls, páginas de anunciante e transições da SPA
  • Guard NEVER 0 ITEMS — falha de forma explícita se o Google trocar o schema, em vez de sucesso silencioso

📥 Entrada

ParâmetroTipoObrigatórioPadrãoDescrição
modeenumSimsearchTermsearchTerm = buscar por nome/domínio, advertiserId = consulta direta
searchTermstringSe mode=searchTermNikeNome do anunciante, marca ou domínio
advertiserIdstringSe mode=advertiserIdID de anunciante do Google (formato AR...)
regionenumNãoanywhereCódigo de país ISO ou anywhere
formatFilterenumNãoALLTEXT / IMAGE / VIDEO / ALL
maxCreativesintNão50Máximo de criativos por anunciante (1-500)
maxAdvertisersintNão3Top-N anunciantes correspondentes a buscar (apenas no modo de busca)

Exemplo de entrada

{
"mode": "searchTerm",
"searchTerm": "Nike",
"region": "US",
"formatFilter": "VIDEO",
"maxCreatives": 50,
"maxAdvertisers": 1
}

📤 Saída

{
"creativeId": "CR123456789",
"advertiserId": "AR12345678",
"advertiserName": "Nike, Inc.",
"advertiserDomain": "nike.com",
"format": "VIDEO",
"headline": "Just Do It",
"body": "Discover the new Air Max collection…",
"imageUrl": "https://tpc.googlesyndication.com/.../image.jpg",
"videoUrl": "https://tpc.googlesyndication.com/.../video.mp4",
"destinationUrl": "https://www.nike.com/...",
"regions": [
{"region": "US", "firstShown": null, "lastShown": null}
],
"creativeUrl": "https://adstransparency.google.com/advertiser/AR12345678/creative/CR123456789",
"source": "google-ads-transparency"
}

Those are all the keys — the item has no others. regions is built from the "Shown in XX" text the creative card renders, so firstShown and lastShown are keys of the shape and stay null: the grid card carries the country, not the date range. There is no impression, spend or timesShown metric anywhere in the item.

🚀 Casos de Uso

  • Inteligência competitiva de ads — veja no que seus concorrentes estão gastando
  • Pesquisa de compliance — acompanhar ads políticos/de interesse público em escala
  • Análise de criativos — extrair padrões vencedores de headline/copy/imagem
  • Brand safety — descobrir ads que usam as palavras-chave da sua marca
  • Pesquisa de afiliação — encontrar URLs de destino dos anunciantes para matching de afiliação

⚠️ Erros Comuns

ErroCausaCorreção
[FAIL] No advertisers resolved for "<termo>"O termo não gerou sugestão no autocomplete do GoogleUse o nome da marca como o Google escreve, ou troque para mode: advertiserId
[FAIL] Zero items with NO anti-bot blockA página do anunciante renderizou, mas nenhum card de criativo casouTente region: anywhere + formatFilter: ALL
Item de diagnóstico com _dataQuality: "diagnostic"Bloqueio confirmado (403 / 429 / captcha / timeout)Rode de novo, de preferência com proxy residencial. Nada é cobrado nesse caminho

💰 Preços

Pay-per-event: você só é cobrado quando um criativo real é retornado. Zero resultados → zero cobrança.

🔒 Nenhum dado enviado a terceiros

As requisições vão para o adstransparency.google.com e para mais nada. O tráfego passa pelo Apify Proxy quando proxyConfiguration está ativo, que é o padrão; nenhum outro intermediário vê seus termos de busca.

📚 Actors Relacionados

🆕 Histórico de Versões

  • v2.0: Reescrito em PlaywrightCrawler — o Transparency Center é uma SPA pura, então os cards de anunciante e de criativo são lidos do DOM renderizado. Screenshot e dump de HTML salvos no Key-Value Store em caso de falha.
  • v1.0 (2026-05-15): Release inicial. Paginação automática. Guard NEVER 0 ITEMS.

Diferencial vs competidores na Apify Store

  • Sem auth: 0 fricção de onboarding (concorrentes pedem OAuth ou são pagos)
  • Multi-region: 18 países pré-configurados, não só US
  • PPE: você paga só pelos criativos retornados, não por run vazio
  • Sem API paga: lê a mesma página pública do Transparency Center, sem assinatura de terceiros

Casos de uso para o mercado BR/LATAM

  • Espiar campanhas Google Ads de Magalu, Americanas, Mercado Livre, Magazine Luiza
  • Compliance eleitoral — ads políticos no BR/AR/MX
  • Pesquisa de afiliação — encontrar advertisers ativos para abordar
  • Análise criativa — copiar padrões de headline/copy dos top spenders