Google Ads Scraper avatar

Google Ads Scraper

Pricing

$5.00 / 1,000 results

Go to Apify Store
Google Ads Scraper

Google Ads Scraper

Scrape advertiser data, ad creatives, impressions, audience targeting, and ad media from the Google Ads Transparency Center.

Pricing

$5.00 / 1,000 results

Rating

5.0

(1)

Developer

Anyx Solutions

Anyx Solutions

Maintained by Community

Actor stats

0

Bookmarked

32

Total users

23

Monthly active users

8 days ago

Last modified

Share

Google Ads Transparency Center Scraper

Turn Google's public ad disclosures into clean, structured JSON — by advertiser, creative, or domain.

The Google Ads Transparency Center Scraper extracts structured ad data from Google Ads Transparency Center: advertisers, ad creatives, impression ranges, audience targeting signals, regional breakdowns, and the creative media itself. It is built for competitive intelligence, brand monitoring, ad-spend research, and political-ad transparency analysis.

⚡ Quick start

{
"startUrls": [
{
"url": "https://adstransparency.google.com/advertiser/AR10852394170916536321?region=anywhere"
}
],
"maxItems": 5
}

Or scrape every advertiser running ads for a domain:

{
"startUrls": [
{ "url": "https://adstransparency.google.com/?region=anywhere&domain=binance.com" }
],
"maxItems": 5
}

✨ Features

  • Scrape ads by advertiser ID, creative ID, or domain.
  • Filter by region, platform (YouTube, Search, Display, Maps, Shopping, Play), format (Image, Video, Text), and date range — all via URL query parameters.
  • Extract audience targeting signals (demographic, geographic, contextual, topics, customer lists).
  • Retrieve impression ranges per country and platform.
  • Collect ad creatives: preview URLs, headlines, body text, images, and video links.
  • Optionally download media (images and videos) into the Key-Value Store.
  • Optionally use cookies to access age-restricted ad creatives.
  • Optionally mirror every ad into Notion or Airtable for a living, queryable catalog.

🧩 Input

FieldTypeRequiredDefaultDescription
startUrlsarrayyesGoogle Ads Transparency Center URLs: advertiser search, creative detail, or domain search.
maxItemsintegerno10Maximum ad creatives to scrape per advertiser/domain search URL. Detail URLs always return one item.
cookiesarrayno[]Cookies (JSON) for accessing age-restricted creatives.
downloadMediabooleannofalseDownload previews and variant media into the Key-Value Store and add storage keys to each item.
proxyConfigurationobjectno{ "useApifyProxy": false }Apify proxy settings. Enable if you hit rate limits or need geo-specific data.
notionConnectorstringnoApify MCP Connector authorized to Notion. Every scraped ad becomes a page in the chosen database.
notionDatabaseIdstringnoTarget Notion database ID. Required when notionConnector is set.
airtableConnectorstringnoApify MCP Connector authorized to Airtable. Every scraped ad becomes a record in the chosen table.
airtableBaseIdstringnoTarget Airtable base ID (starts with app…). Required when airtableConnector is set.
airtableTableIdstringnoTarget Airtable table ID (starts with tbl…). Required when airtableConnector is set.

Supported start URL formats

  • Advertiser search: https://adstransparency.google.com/advertiser/<advertiserId>?region=<region>
  • Creative detail: https://adstransparency.google.com/advertiser/<advertiserId>/creative/<creativeId>?region=<region>
  • Domain search: https://adstransparency.google.com/?region=anywhere&domain=<domain>

Optional URL query parameters: region, platform, format, topic, start-date, end-date.

📤 Output

Each ad creative is pushed to the dataset as one record.

Fields

FieldTypeDescription
id / adIdstringCreative ID.
advertiserIdstringAdvertiser ID.
advertiserNamestringAdvertiser display name.
urlstringPublic creative URL on the Transparency Center.
sourceUrlstringThe start URL this creative was discovered from.
mediaTypestring | nullCreative format: IMAGE, VIDEO, or TEXT.
thumbnailobject{ url, key } — preview URL and Key-Value Store key (when media is downloaded).
firstShownAt / lastShownAtstring | nullFirst / last shown date (YYYYMMDD).
daysActivenumber | nullInclusive number of days the creative was active.
impressionsRangestring | nullUpper bound of the reported impression bucket.
regionsstring[]Countries where the creative was shown.
regionBreakdownarrayPer-country dates, impression bounds, and platform stats.
targetingarrayAudience selection signals used by the ad.
variantsarrayCreative variants: textContent, images, and imageStoreKeys (when media is downloaded).

When downloadMedia is enabled, thumbnail.key and variants[].imageStoreKeys contain Key-Value Store keys pointing at the downloaded files.

Using Cookies (Optional)

Some ad creatives — for example age-restricted content — are only visible to logged-in users. To scrape these:

  1. Install the Cookie-Editor browser extension for Chrome or any Chromium-based browser.
  2. Navigate to the Google Ads Transparency Center and make sure you are signed into your Google account.
  3. Open the Cookie-Editor extension from your browser toolbar and click Export → JSON to copy the cookies to your clipboard.
  4. Paste the copied JSON array directly into the cookies input field in the actor configuration.


Notion Output (Optional)

Push every scraped ad creative into a Notion database as a new, fully-formed page — perfect for building a living competitor catalog, a research log your team actually opens, or a knowledge base your AI agents can query later (more on that below).

Step-by-step setup guide: Notion-connector-setup

Turn it into an AI knowledge base

Notion's MCP server is bidirectional — the same workspace this actor writes to can be read by any AI agent that also connects to Notion via MCP (Claude Desktop, ChatGPT with the Notion connector, custom Anthropic API agents, etc.). That means once your scrape is running on a schedule, you can:

  • Ask Claude: "Which advertisers ran the most YouTube ads in Germany last week?"
  • Ask ChatGPT: "Summarize the messaging trends across all video ads we've collected this month."
  • Have an agent triage: "Tag any new ad mentioning crypto for compliance review."

Your scraper becomes the data pipeline; Notion becomes the queryable memory; the AI becomes the analyst.

Notion writes are best-effort — if a page fails to create, the scrape keeps running and the issue is recorded in the run log so you can fix and re-run only the missing items.


Airtable Output (Optional)

Push every scraped ad creative as a new record in an Airtable base — perfect for tracking competitor ads in a spreadsheet-style view with native filtering, grouping, and team sharing.

One-click base template: Duplicate this Airtable base into your workspace — already wired with all the columns the actor populates.

Step-by-step setup guide: Airtable-connector-setup

How to enable

  1. In your Apify account, open Settings → API & Integrations and connect Airtable.

  2. In Airtable, open the base and table you want to use:

    • The Base ID starts with app... — it's the second path segment of the URL.
    • The Table ID starts with tbl... — it's the third path segment.
  3. In this actor's input, select your connection under Airtable Connector and enter the IDs under Airtable Base ID and Airtable Table ID.

  4. Run the actor — each ad creative becomes a new record with these fields:

    • Name<Advertiser> — <MediaType> (<AdId>)
    • Advertiser, Advertiser ID, Ad ID, Media Type
    • Regions, Impressions Range, First Shown, Last Shown, Days Active
    • Ad URL, Source URL

    If your table doesn't yet have these columns, Airtable will skip the unknown ones. Add columns with these exact names to capture all data.

Records are written in batches at the end of the run, and the run log reports how many were saved vs. failed.


Frequently Asked Questions (FAQ)

Where do I find an advertiser ID?

Open any advertiser page on adstransparency.google.com — the URL contains it, e.g. …/advertiser/AR10303883279069085697. The string starting with AR is the advertiser ID.

Where do I find a creative ID?

Click into a specific ad creative on the transparency site — the URL becomes …/advertiser/<advertiserId>/creative/<creativeId>. The string starting with CR is the creative ID.

How do I scrape all ads from a brand or website?

Use the domain search URL format: https://adstransparency.google.com/?region=anywhere&domain=<your-domain.com>. This returns advertisers running ads for that domain across regions.

Why do some ads return no results or fail with "restricted"?

Certain creatives (for example age-restricted content) are only visible to signed-in users. Provide cookies via the cookies input to scrape them. See the Using Cookies section above.

Why are impressions returned as ranges instead of exact numbers?

Google only publishes impression buckets (e.g. 9,000–10,000). The actor returns the upper bound on the top-level impressionsRange field, and the per-region lower/upper bounds inside regionBreakdown[].impressions — exact impression counts are not available from the source.

Do I need a proxy?

No, the actor works without proxies by default. If you experience rate limiting or want to scrape region-specific data from a particular country, enable Apify Proxy in the input.

Can I download the ad images and videos?

Yes — set downloadMedia to true. Thumbnails and variant media are saved to the run's Key-Value Store, and the storage keys are added to each output item under thumbnail.key and variants[].imageStoreKeys.

How many ads can I scrape per run?

Use maxItems to cap the number of creatives returned per advertiser search URL. There is no hard upper limit — the actor paginates until the limit or the end of results is reached.

Does maxItems apply globally or per URL?

Per start URL. If you pass three advertiser search URLs with maxItems: 50, you can get up to 150 creatives in total.

Can I filter by platform, format, or date range?

Yes — add query parameters directly to your start URL: region, platform (YOUTUBE, SEARCH, DISPLAY, MAPS, SHOPPING, PLAY), format (IMAGE, VIDEO, TEXT), topic, start-date, end-date.

Can I send the scraped ads directly into Notion?

Yes. Connect Notion in your Apify account settings, pick a database, and set notionConnector and notionDatabaseId in the input. Every scraped ad becomes a new page in that database. See Notion Output above for the full column contract and AI-agent integration tips.

Can my AI agent (Claude / ChatGPT) read the Notion database I'm filling?

Yes — Notion's MCP server exposes read tools (notion-search, notion-fetch) alongside the write tools this actor uses. Connect Claude Desktop or ChatGPT to the same Notion workspace via its MCP integration, and your agent can query your collected ad data in natural language. The scraper feeds the knowledge base; the agent does the analysis.

Can I push the ads into Airtable?

Yes. Duplicate the pre-built Airtable base template, connect Airtable in your Apify account settings, then set airtableConnector, airtableBaseId, and airtableTableId in the input. Each ad creative is appended as a new record in the chosen table. See Airtable Output above.

🔗 More scrapers by Anyx

🤝 Anyx Solutions

Anyx Solutions is an Apify Partner. We build custom scrapers and data-extraction pipelines.

Legal Notice

This actor is an independent tool for collecting publicly available data from the Google Ads Transparency Center. It is not affiliated with, endorsed by, or in any way officially connected with Google LLC or its affiliates.