Google Ads Transparency Scraper
Pricing
$10.00 / 1,000 results
Google Ads Transparency Scraper
Export every public ad any brand is running on Google - by name, domain, or advertiser ID.
Pricing
$10.00 / 1,000 results
Rating
0.0
(0)
Developer
Unseen User
Actor stats
1
Bookmarked
2
Total users
1
Monthly active users
5 days ago
Last modified
Categories
Share
Google Ads Spy — Competitor Ad Scraper
See every ad your competitors run on Google. Paste a mix of brand names, domains, or Google advertiser IDs — the actor auto-detects what each entry is, pulls every public ad from the Google Ads Transparency Center, and optionally enriches each one with headlines, descriptions, creative images, and impression stats.
Input
One required field, everything else optional:
| Field | Type | Default | What it does |
|---|---|---|---|
| Advertisers | list of strings | — | One per line. Accepts brand names (nike), domains (lululemon.com), or advertiser IDs (AR01614014350098432001). Mixed entries work. |
| Max ads per advertiser | integer | 100 | Cap per advertiser. 0 = unlimited. |
| Include full ad details | boolean | false | When on, every ad also includes headlines, descriptions, creative variations, regions, and impression stats. |
| Start date | date | — | Earliest first_shown date for returned ads. |
| End date | date | — | Latest last_shown date for returned ads. |
| Region | string | — | Two-letter region code (US, GB, AU, …). Worldwide when blank. |
| Political ads only | boolean | false | Restrict to political ads. Region is required when enabled. |
API key configuration (actor owner)
The actor reads its ScrapeCreators key from the SCRAPECREATORS_API_KEY environment variable — end users never see or provide it.
To set it on the Apify platform:
- Open your actor on Apify Console.
- Go to Source → Environment variables.
- Add a new variable:
- Name:
SCRAPECREATORS_API_KEY - Value: your key from scrapecreators.com
- Tick "Secret" so the value is encrypted and hidden.
- Name:
- Save and rebuild.
The key is stored inside Apify's secret vault — it is not in the git repository.
Example input
{"advertisers": ["nike", "lululemon.com", "AR01614014350098432001"],"maxAdsPerAdvertiser": 50,"includeAdDetails": true,"startDate": "2025-01-01","endDate": "2025-11-10"}
Output
Each row of the dataset is one ad. Columns are ordered for the Apify table view — readable identifiers first, ad copy next, dates and stats in the middle, technical IDs and full nested data at the end.
| # | Column | Type | Always present? | Notes |
|---|---|---|---|---|
| 1 | advertiserName | string | yes | Brand the ad belongs to. |
| 2 | domain | string | yes | Advertiser's website. |
| 3 | format | string | yes | text, image, or video. |
| 4 | headline | string | details only | Headline of the primary creative variation. |
| 5 | description | string | details only | Description of the primary variation. |
| 6 | destinationUrl | string | details only | Click-through URL. |
| 7 | adText | string | details only | OCR'd full ad text (per ScrapeCreators). |
| 8 | imageUrl | string | sometimes | Creative image when available. |
| 9 | firstShown | ISO date | yes | First day the ad ran. |
| 10 | lastShown | ISO date | yes | Last day the ad ran. |
| 11 | daysActive | integer | yes | Computed from first/last shown. |
| 12 | regions | string | details only | Comma-separated region names (United States, Canada). |
| 13 | impressionsMin | number | details only | Lower bound from overallImpressions. |
| 14 | impressionsMax | number | details only | Upper bound. |
| 15 | variationsCount | integer | details only | Number of creative variations the ad ran. |
| 16 | adTransparencyUrl | string | yes | Direct link to inspect the ad on Google Ads Transparency Center. |
| 17 | advertiserId | string | yes | Google's AR… ID. |
| 18 | creativeId | string | yes | Google's CR… ID. |
| 19 | scrapedFrom | string | yes | What input produced this row, e.g. "domain: lululemon.com" or "search \"nike\" (Nike Inc)". |
| 20 | variations | array | details only | Full list of creative variations (each with headline/description/destinationUrl/imageUrl/allText). |
| 21 | creativeRegionsDetail | array | details only | Raw creativeRegions array. |
| 22 | regionStats | array | details only | Per-region first/last-shown and impression breakdown. |
Columns marked details only are filled when Include full ad details is enabled, otherwise they are null. The column itself is still present so CSV exports stay consistent.
Example row (with details)
{"advertiserName": "Foreplay Ventures Inc","domain": "foreplay.co","format": "video","headline": "Work Pants, But Stretchy","description": "Move In Lightweight, Comfortable Work Pants That Take Your Day In New Directions.","destinationUrl": "shop.lululemon.com","adText": "Sponsored Ω lululemon shop.lululemon.com ...","imageUrl": "https://tpc.googlesyndication.com/archive/simgad/2201045439314643090","firstShown": "2024-08-02T12:33:35.000Z","lastShown": "2025-11-10T19:31:13.000Z","daysActive": 465,"regions": "United States","impressionsMin": null,"impressionsMax": null,"variationsCount": 2,"adTransparencyUrl": "https://adstransparency.google.com/advertiser/AR.../creative/CR...","advertiserId": "AR09628680369637163009","creativeId": "CR15036700036807262209","scrapedFrom": "domain: foreplay.co","variations": [ { "headline": "...", "description": "...", "destinationUrl": "...", "allText": "...", "imageUrl": "..." } ],"creativeRegionsDetail": [ { "regionCode": "US", "regionName": "United States" } ],"regionStats": [ { "regionCode": "US", "firstShown": null, "lastShown": "2025-06-18T05:00:00.000Z", "impressions": {}, "platformImpressions": [] } ]}
Run summary
A summary object is written to the default key-value store under the OUTPUT key:
{"advertisersProcessed": 4,"adsScraped": 137,"adsFailed": 0,"errors": [],"creditsRemaining": 9926424,"finishedAt": "2025-11-10T19:31:13.000Z"}
Schemas
This actor ships with the following Apify schema files so the Console can render results nicely:
| Schema | File | Purpose |
|---|---|---|
Output schema (via storages) | ./.actor/actor.json | Links the dataset and key-value store schemas below into the actor definition. |
| Dataset schema | ./.actor/dataset_schema.json | Defines two views for the dataset — Overview (human-readable key columns with image previews and links) and Full detail (every field). Labels, formats, and column order are all set here. |
| Key-value store schema | ./.actor/key_value_store_schema.json | Describes the OUTPUT summary key so users know what to look for in the key-value store. |
| Live-view OpenAPI schema | not applicable | This is a batch scraper — it does not run an HTTP server inside the actor, so no OpenAPI schema is provided. |
Disclaimer
Please read before using this Actor.
This Actor is an independent tool that retrieves publicly available advertising data from the Google Ads Transparency Center via the ScrapeCreators API. It is intended for legitimate purposes including competitive research, marketing analysis, brand safety monitoring, academic research, journalism, and ad transparency verification.
Independence & trademarks. This Actor is not affiliated with, endorsed by, sponsored by, or in any way officially connected to Google LLC, Alphabet Inc., Apify Technologies, ScrapeCreators, or any of the advertisers whose ads are returned. All product names, logos, brands, trademarks, and registered trademarks referenced by this Actor or its output are the property of their respective owners. Any use of these names is for identification purposes only and does not imply endorsement.
Data source & limitations. All data returned originates from Google's own public Ads Transparency Center. This Actor cannot retrieve ads that require authentication, are age/geo-restricted, or have been marked private by the advertiser — these are limitations of Google's disclosure system, not of this tool. Creative copy (headline, description, adText) is extracted via OCR for image and video creatives by the upstream ScrapeCreators API and may contain minor inaccuracies. Fields, availability, and structure may change without notice if Google or ScrapeCreators modify their services.
Your responsibility. You are solely responsible for ensuring your use of this Actor and any data it produces complies with:
- Google's Terms of Service and the terms of the Ads Transparency Center.
- ScrapeCreators' Terms of Service.
- Apify's Terms of Service and Acceptable Use Policy.
- All applicable data-protection, intellectual-property, consumer-protection, advertising, anti-competition, and other laws in your jurisdiction — including but not limited to GDPR, UK GDPR, CCPA/CPRA, LGPD, the DMCA, and any applicable copyright or trademark statutes.
By running this Actor you confirm that your intended use is lawful and that you hold any consents, licences, or authorisations required in your jurisdiction.
No personal data collection. The Google Ads Transparency Center publishes advertiser business entities and creative content, not end-user personal data. Political ads may, however, reference public figures — treat any such content with appropriate editorial and legal care.
No warranty. This Actor is provided "as is" and "as available", without warranties of any kind, whether express or implied — including but not limited to implied warranties of merchantability, fitness for a particular purpose, accuracy, completeness, reliability, availability, or non-infringement. No guarantee is made that the Actor will return every ad an advertiser has ever run, or that returned data is current as of any particular moment.
Limitation of liability. To the maximum extent permitted by applicable law, the Actor owner, contributors, Apify, and ScrapeCreators shall not be liable for any direct, indirect, incidental, special, consequential, exemplary, or punitive damages — including but not limited to loss of profits, revenue, data, goodwill, or business opportunities — arising out of or in connection with your use of, or inability to use, this Actor or the data it returns, even if advised of the possibility of such damages. In jurisdictions where limitation or exclusion of liability for consequential or incidental damages is not permitted, liability is limited to the fullest extent permitted by law.
Indemnification. You agree to indemnify and hold harmless the Actor owner, contributors, Apify, and ScrapeCreators from any claims, damages, liabilities, losses, costs, or expenses (including reasonable legal fees) arising out of your use of this Actor, your violation of these terms, or your violation of any applicable law or third-party right.
Report concerns. If you believe an ad has been returned in error, your trademarks are being misused in downstream output, or scraped data is being used in a way that violates these terms, contact the Actor owner through the Apify Console.
Running locally
npm installexport SCRAPECREATORS_API_KEY=your-keymkdir -p storage/key_value_stores/defaultecho '{"advertisers":["lululemon.com"],"maxAdsPerAdvertiser":5}' \> storage/key_value_stores/default/INPUT.jsonnpm start
Scraped ads appear under storage/datasets/default/.
Tests
$npm test
Runs the full suite (client unit tests, 10 actor end-to-end scenarios against a local mock ScrapeCreators server, and a retry/backoff test).
Deploying
npm install -g apify-cliapify loginapify push
After the first push, set the SCRAPECREATORS_API_KEY secret in the actor's environment variables (see above) before running.