Google Ads Transparency Scraper avatar

Google Ads Transparency Scraper

Pricing

$10.00 / 1,000 results

Go to Apify Store
Google Ads Transparency Scraper

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

Unseen User

Maintained by Community

Actor stats

1

Bookmarked

2

Total users

1

Monthly active users

5 days ago

Last modified

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:

FieldTypeDefaultWhat it does
Advertiserslist of stringsOne per line. Accepts brand names (nike), domains (lululemon.com), or advertiser IDs (AR01614014350098432001). Mixed entries work.
Max ads per advertiserinteger100Cap per advertiser. 0 = unlimited.
Include full ad detailsbooleanfalseWhen on, every ad also includes headlines, descriptions, creative variations, regions, and impression stats.
Start datedateEarliest first_shown date for returned ads.
End datedateLatest last_shown date for returned ads.
RegionstringTwo-letter region code (US, GB, AU, …). Worldwide when blank.
Political ads onlybooleanfalseRestrict 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:

  1. Open your actor on Apify Console.
  2. Go to Source → Environment variables.
  3. Add a new variable:
    • Name: SCRAPECREATORS_API_KEY
    • Value: your key from scrapecreators.com
    • Tick "Secret" so the value is encrypted and hidden.
  4. 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.

#ColumnTypeAlways present?Notes
1advertiserNamestringyesBrand the ad belongs to.
2domainstringyesAdvertiser's website.
3formatstringyestext, image, or video.
4headlinestringdetails onlyHeadline of the primary creative variation.
5descriptionstringdetails onlyDescription of the primary variation.
6destinationUrlstringdetails onlyClick-through URL.
7adTextstringdetails onlyOCR'd full ad text (per ScrapeCreators).
8imageUrlstringsometimesCreative image when available.
9firstShownISO dateyesFirst day the ad ran.
10lastShownISO dateyesLast day the ad ran.
11daysActiveintegeryesComputed from first/last shown.
12regionsstringdetails onlyComma-separated region names (United States, Canada).
13impressionsMinnumberdetails onlyLower bound from overallImpressions.
14impressionsMaxnumberdetails onlyUpper bound.
15variationsCountintegerdetails onlyNumber of creative variations the ad ran.
16adTransparencyUrlstringyesDirect link to inspect the ad on Google Ads Transparency Center.
17advertiserIdstringyesGoogle's AR… ID.
18creativeIdstringyesGoogle's CR… ID.
19scrapedFromstringyesWhat input produced this row, e.g. "domain: lululemon.com" or "search \"nike\" (Nike Inc)".
20variationsarraydetails onlyFull list of creative variations (each with headline/description/destinationUrl/imageUrl/allText).
21creativeRegionsDetailarraydetails onlyRaw creativeRegions array.
22regionStatsarraydetails onlyPer-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:

SchemaFilePurpose
Output schema (via storages)./.actor/actor.jsonLinks the dataset and key-value store schemas below into the actor definition.
Dataset schema./.actor/dataset_schema.jsonDefines 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.jsonDescribes the OUTPUT summary key so users know what to look for in the key-value store.
Live-view OpenAPI schemanot applicableThis 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:

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 install
export SCRAPECREATORS_API_KEY=your-key
mkdir -p storage/key_value_stores/default
echo '{"advertisers":["lululemon.com"],"maxAdsPerAdvertiser":5}' \
> storage/key_value_stores/default/INPUT.json
npm 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-cli
apify login
apify push

After the first push, set the SCRAPECREATORS_API_KEY secret in the actor's environment variables (see above) before running.