Apify actor · whoareyouanas/google-ads-transparency-scraper

Google Ads Transparency Scraper - Spy on Competitor Ads

Collect public ad creative and advertiser information from Google's Ads Transparency Center. Search by keyword or advertiser ID and export records for creative reviews and competitor research.

Documentation checked 2026-10-29 · deployed build 0.0.8 · run through your Apify account

01 / Overview

Match the actor to the job.

Advertiser research

Start from a search query or a known advertiser identifier.

Quick or detailed mode

Choose quickSearch for a lighter collection or request additional available creative details.

Source filters

Use supported region, platform, format, and date controls to define the research scope.

02 / Input

Start with a clear, bounded input.

Provide a searchQuery or advertiserId. Region values follow the actor's documented Google region codes, not arbitrary country names. Set maxResults and quickSearch explicitly for a predictable first sample.

input.json · example based on the deployed schema
{
  "searchQuery": "nike",
  "region": "2840",
  "maxResults": 10,
  "quickSearch": true
}

Replace example targets and credential placeholders before running. These are documentation examples, not a promise of currently available source results.

Deployed actor input fields, types, defaults, and descriptions
FieldType / requiredDefaultPurpose
searchQuerystringNot specifiedKeyword or domain to search for an advertiser (e.g. 'nike', 'amazon.com', 'shopify'). The scraper will search the Google Ads Transparency Center for matching advertisers and their ads.
advertiserIdstringNot specifiedDirect Google Ads Transparency Center advertiser ID (AR-prefixed, e.g. 'AR12345678901234567'). If provided, the scraper skips search and goes directly to this advertiser's ads.
creativeFormatstring"all"Filter ads by creative format.

Options: all, text, image, video

platformstring"all"Filter ads by the Google platform where they were shown.

Options: all, SEARCH, YOUTUBE, MAPS, SHOPPING, PLAY

regionstring"all"Filter ads by the region where they were shown. Uses Google's numeric region codes.

Options: all, 2840, 2826, 2124, 2036, 2356, 2276, 2250, 2380, 2724, 2528, 2620, 2056, 2040, 2208, 2752, 2578, 2372, 2203, 2616, 2642, 2076, 2484, 2032, 2170, 2604, 2392, 2410, 2702, 2764, 2360, 2608, 2458, 2704, 2682, 2818, 2710, 2566, 2376

maxResultsinteger40Maximum number of ads to return. Default is one page so Apify's automated QA run completes quickly. Increase for larger exports.

Minimum: 0 · Maximum: 10000

quickSearchbooleantrueSkips detail page visits for faster, cheaper scraping. Disable only for targeted full-detail runs, ideally with low maxResults or a proxy.
All other input controls (5)
Deployed actor input fields, types, defaults, and descriptions
FieldType / requiredDefaultPurpose
startDatestringNot specifiedStart date for filtering ads in YYYYMMDD format (e.g. '20250101'). Only ads shown on or after this date will be included.
endDatestringNot specifiedEnd date for filtering ads in YYYYMMDD format (e.g. '20250331'). Only ads shown on or before this date will be included.
maxConcurrencyinteger1Number of parallel requests. Keep at 1 for stability. Increase to 2-5 for faster scraping with higher risk of rate limiting.

Minimum: 1 · Maximum: 10

requestHandlerTimeoutSecsinteger120Maximum time to wait for each HTTP request to complete.

Minimum: 30 · Maximum: 600

proxyUrlstringNot specifiedProxy URL for requests. Format: http://user:pass@host:port or http://groups-RESIDENTIAL:[email protected]:8000. Recommended for avoiding rate limits.

03 / Output

Know what each returned row represents.

Illustrative output shape · not a live run
{
  "advertiserId": "AR16735076323512287233",
  "advertiserName": "Nike, Inc.",
  "creativeId": "CR04739221842466701313",
  "adFormat": "IMAGE",
  "imageUrl": "https://tpc.googlesyndication.com/archive/simgad/9843983796603441212",
  "firstShown": "2023-11-16",
  "lastShown": "2026-03-28",
  "source": "google_ads_transparency",
  "sourceUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR04739221842466701313",
  "scrapeDate": "2026-03-28T10:00:00.000Z"
}

Example values illustrate the published contract. Available fields and populated values depend on the source, mode, and result status.

Fields in the documented output view

advertiserId

Advertiser ID

advertiserName

Advertiser

creativeId

Creative ID

adFormat

Format

firstShown

First Shown

lastShown

Last Shown

numServedDays

Days Active

title

Title

headline

Headline

snippet

Description

callToAction

CTA

visibleLink

Display URL

targetDomain

Domain

imageUrl

Image

videoUrl

Video

isVerified

Verified

adFundedBy

Funded By

regions

Regions

adLibraryUrl

Ad Library URL

scrapeDate

Scraped At

Output views select columns. They do not necessarily filter record types or exhaust the full JSON payload. Use structured JSON when you need nested arrays or objects.

Dataset links and run artifacts (2)
Overview
Overview of all scraped ads with key metrics and details
All Ads (Full Data)
Complete dataset with all fields including creative details, platform data, and regional targeting

04 / Pricing

Understand the billable unit.

These are the active public event prices checked on 2026-10-29, in USD. They describe each event, not a universal flat price for a run. Confirm your current Apify plan and run budget before starting.

Actor event prices and billing units
Billable eventRate (USD)When it applies

Actor Start

apify-actor-start

$0.00005 / event

Charged when the Actor starts running. Number of events charged depends on Actor memory (one event per GB, minimum one event).

Start units depend on allocated memory: one event per GB, with at least one event.

Ad Scraped

apify-default-dataset-item

$0.005 / event

One scraped Google ad creative with advertiser info, dates, and media assets

$5.00 per 1,000 of this event. Other events and separate services are additional.

  • Use the current configured ad-event price below. README quick/full cost estimates can differ from the effective event configuration.
  • Startup is a separate memory-based event. Review the Pricing tab for your plan and any other applicable costs.

A result limit and a spending cap are different controls. Account charges, applicable taxes, and separately billed providers or proxies must be considered where relevant. A cap setting is not a minimum invoice charge.

05 / API & automation

Use the same input from your workflow.

Test a small run in Apify Console, inspect its records and charges, then save a task or call the actor from your own application. Keep your Apify token in an environment variable. Source-specific credentials, if required, are separate from the Apify API token.

cURL · start an asynchronous actor run
# Save the input example as input.json and set APIFY_TOKEN.
# This request starts an asynchronous, potentially billable run.
curl --request POST \
  'https://api.apify.com/v2/acts/whoareyouanas~google-ads-transparency-scraper/runs' \
  --header "Authorization: Bearer $APIFY_TOKEN" \
  --header 'Content-Type: application/json' \
  --data @input.json

The response identifies the run. Wait for it to finish, inspect its status, and use its default dataset and key-value store to retrieve results. A successful run can still contain partial or failed records; check the output contract above before continuing downstream.

Coverage & interpretation

Check the result before relying on it.

Questions

Before you build an integration.

What do I need to provide?

Provide a searchQuery or advertiserId. Region values follow the actor's documented Google region codes, not arbitrary country names. Set maxResults and quickSearch explicitly for a predictable first sample.

What should I check in the output?
  • Rows expose advertiser and creative identifiers, available text or media, shown dates, source links, and capture context.
  • Detailed fields depend on mode and source availability; the overview is a selected column view.
How do I budget the run?
  • Use the current configured ad-event price below. README quick/full cost estimates can differ from the effective event configuration.
  • Startup is a separate memory-based event. Review the Pricing tab for your plan and any other applicable costs.

Keep exploring

Practical guides for the next step.