Google Ads Transparency Scraper — Ads — $2/1K until 11-24 avatar

Google Ads Transparency Scraper — Ads — $2/1K until 11-24

Pricing

from $2.00 / 1,000 delivered ads

Go to Apify Store
Google Ads Transparency Scraper — Ads — $2/1K until 11-24

Google Ads Transparency Scraper — Ads — $2/1K until 11-24

Google Ads Transparency: $2/1K ads and $1.50/1K advertisers until 2026-11-24, then $5/$2.50. Collect available creative text, formats, dates and regions; discover advertisers and track new ad IDs. Pay per result.

Pricing

from $2.00 / 1,000 delivered ads

Rating

0.0

(0)

Developer

architek.earth

architek.earth

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

12 days ago

Last modified

Categories

Security

Limited permissions

Share

Google Ads Transparency Scraper — Ads, Dates, Advertisers

Recorded run: 3 ads from 1 advertiser in 24.9 seconds (2026-10-25, build 0.1.2, run VSvWzGFXqwv7aki0R). A bounded canary sample, not a full-catalogue benchmark. Advertiser discovery launches at $1.50 / 1,000 advertisers, half the field leader's $3.00 rate.

architek.earth — an independent data studio. Pay-per-result scrapers with recorded runs, published canaries and stable schemas, built for people and AI agents.

What's new

  • 2026-10-25 — Launch prices are $2.00 / 1,000 ads and $1.50 / 1,000 advertisers; scheduled return on 2026-11-24 to $5.00 and $2.50 respectively, following Apify notice.
  • 2026-10-25 — Import the published n8n workflow or Make blueprint to collect ads using the three-ad example.
  • 2026-10-25 — Collect Google ad dates, formats and available text, or discover advertisers by name.

Google Ads Transparency Center inputs produce ad rows or advertiser rows.

SourceMarketFromStandout fields
Google Ads Transparency CenterPublic advertiser data$2.00 / 1,000 adscreativeText, firstShown, lastShown

✅ Why choose this scraper

  • Available copy. creativeText holds native preview text when Google exposes it.
  • Dates and formats. firstShown, lastShown, format and regional date entries come from public source records.
  • Repeat collection. incrementalMode skips already delivered IDs under the same stateKey.

Tested head-to-head (2026-10-25)

This actorField (15 priced listings)
Runs that did not succeed0% of 6 recorded canary runs on 2026-10-25median 0.20%, range 0–50% (public 30-day statistics)
Rows per run3 ads; 5 advertisersnot published
Ad price$2.00 / 1,000 adsmedian $2.00 / 1,000 primary results

The six-run sample is too small to infer comparative reliability. Advertiser discovery costs $1.50 / 1,000 versus the leader's advertised $3.00. See PRICING.md for the dated event-level comparison.

⚠️ Worth knowing up front

  • Image-only and video creatives can have creativeText=null. There is no OCR or video transcription. Google's text format label is not a text-availability guarantee.
  • Copy can contain literal Google placeholders such as ratings, distance or dynamic keywords. These are preserved, not filled with invented values.
  • Keyword input searches advertiser names, not the text inside ads. Domain lookup follows Google's domain filter. Name matches resolve at most maxAdvertisers accounts.
  • Advertiser discovery returns the first source page, at most 100 advertisers per keyword. Ad pagination is supported. User caps produce LIMITED; blocks, source errors and deadlines produce PARTIAL.
  • Invalid input, empty results after retry, blocks, deadlines, budget limits and state problems emit free recordType="status" rows when storage is available. No source request is charged. Inspect RUN_SUMMARY, not only platform SUCCEEDED.
  • The recorded access market is US. Other offered region filters use Google's region identifiers; availability varies. Ads and advertiser discovery are separate modes.

⚡ Try the example

This actor has no free preview; the three-ad example costs $0.006 at the launch price. Free-plan accounts can pay with their included credit.

{"targets":["AR16735076323512287233"],"region":"US","format":"text","maxItems":3,"maxResultsPerTarget":3}

Change targets to your advertiser ID, advertiser page URL, domain or name.

⚙️ Input

ParameterTypeDefaultDescription
modestringadsads or advertisers; name keywords only in advertisers mode.
targetsarraynike.com / google1–20 IDs, advertiser URLs, domains or names; google is the advertisers-mode default.
regionstringUSUS, GB, DE, FR, NL, CA, AU or anywhere.
formatstringallall, text, image or video.
maxItemsinteger20Maximum delivered rows per run, 1–5,000.
maxResultsPerTargetinteger100Maximum scanned rows per target, 1–5,000.
maxAdvertisersinteger5Maximum matched advertisers per name, 1–20.
incrementalModebooleanfalseOnly previously unseen ad/advertiser IDs; requires stateKey.
continuePreviousRunbooleanfalseResume an unfinished checkpoint; requires stateKey.
stateKeystringempty1–60 letters, digits, underscores or hyphens.
feedbackstringemptyLogged note; never changes output.

Input recipes

Two public examples are linked below; the other inputs are paste-ready recipes. They are paid runs, with no automatic switch from a free mode:

  • Three Nike text ads: {"targets":["AR16735076323512287233"],"region":"US","format":"text","maxItems":3,"maxResultsPerTarget":3}
  • Domain: {"targets":["nike.com"],"maxItems":5,"maxResultsPerTarget":5}
  • Name discovery: {"mode":"advertisers","targets":["google"],"maxItems":5,"maxResultsPerTarget":5}
  • New IDs: {"targets":["nike.com"],"maxItems":5,"maxResultsPerTarget":5,"incrementalMode":true,"stateKey":"nike-daily"}
  • Continuation: {"targets":["nike.com"],"stateKey":"nike-batch","continuePreviousRun":true,"maxItems":100}

🧱 Stable fields

Stable data-row fields are add-only. Status rows use recordType, status, inputRef and message and may omit every data field.

FieldTypeMeaning
recordTypestringad, advertiser or free status.
advertiserIdstringPublic AR identifier.
advertiserName, advertiserCountrystring, nullableSource name and country; country may be absent on ads.
creativeId, creativeTextstring, nullableCR identifier and native visible copy; null on advertiser rows.
creativeTextStatusstringextracted, image_only, video_or_image, not_available or not_applicable.
formatstring, nullableSource classification: text, image, video or unknown.
firstShown, lastShownstring, nullableSource UTC dates, YYYY-MM-DD.
regionsarraySource region IDs and available dates; not audience targeting claims.
imageUrlstring, nullablePublic source image; may expire.
sourceUrl, inputRef, scrapedAtstringPublic source page, original input and UTC collection timestamp.
adCountLower, adCountUpperinteger, nullableAdvertiser discovery's source count interval.
deliveryIdstringUnique delivery receipt for joining saved rows to a run.

📦 Output example

Abridged real row from run vb3llKX2e0hB7CRYe on 2026-10-25; values are a historical snapshot.

{
"recordType": "ad",
"advertiserId": "AR16735076323512287233",
"advertiserName": "Nike, Inc.",
"creativeId": "CR01211230049336819713",
"creativeText": "Sponsored Nike <dynamically generated based on landing page content> <dynamically generated based on landing page content> <Rating (Reviews)> · <Distance> · Philadelphia <Open Hours> 901 Market Street Space 1095 Discover Nike Clearance Featuring Footwear, Apparel And Accessories On Sale. website call directions Pottstown · 18 West Lightcap Road",
"creativeTextStatus": "extracted",
"format": "text",
"firstShown": "2022-11-30",
"lastShown": "2026-10-25",
"sourceUrl": "https://adstransparency.google.com/advertiser/AR16735076323512287233/creative/CR01211230049336819713"
}

Recorded free status row from KMgdseHg1RAz563vI:

{
"recordType": "status",
"inputRef": "input",
"status": "INVALID_INPUT",
"message": "Invalid advertiser ID, domain or advertiser name"
}

🧠 Advanced usage

Daily monitoring. Reuse the same filters and stateKey with incrementalMode=true. The baseline keeps at most 25,000 delivered IDs. New means unseen IDs, not edits to an existing ad.

Continuation. An incomplete checkpoint resumes automatically in incremental mode, or explicitly with continuePreviousRun=true. Change maxItems to raise the per-run delivery cap. Different filters require a new stateKey. Prior delivered rows are never recharged; uncertain dataset acknowledgements stop for manual reconciliation.

Interrupted runs. After a forced abort, wait until the prior platform timeout plus 60 seconds before resuming. Concurrent stateKey owners are refused. timeoutSecs=0 still has a 30-minute actor bound; use at least a 180-second timeout to leave delivery completion time.

🔌 Integrations

Export the dataset as JSON, CSV or Excel; schedule daily runs or connect a completion webhook to Google Sheets, Make, Zapier or n8n.

n8n and Make

Both call this actor with the three-ad example and return its dataset rows. Tokens are supplied by your integration, never stored in the template.

💸 Pricing

Pay per result; status rows and failed requests are free. Platform and proxy costs are included for buyers. Already delivered IDs in an incremental baseline or unfinished checkpoint are skipped without a second charge.

EventPriceWhat it covers
ad$2.00 / 1,000 adsOne delivered ad, including metadata even when copy is unavailable.
advertiser$1.50 / 1,000 advertisersOne delivered advertiser discovery row.

Launch pricing ends on 2026-11-24: the planned return prices are $5.00 / 1,000 ads and $2.50 / 1,000 advertisers, subject to the required notice. Three ads cost $0.006 today. The Apify free plan's $5 monthly credit covers about 2,500 ads at $2.00 / 1,000. No startup fee.

❓ FAQ

Does every ad include text? No. Image/video-only previews produce null and an explicit creativeTextStatus.

Does keyword search search ad copy? No, it searches advertiser names.

Can I get spend, impressions or conversions? These are not part of this actor's contract.

Are output dates live? They are source-reported dates at collection time, not a real-time ad delivery guarantee.

Can I repeat a run without paying for old ads? Use incrementalMode and a stable stateKey with identical filters.

Why did a successful run say PARTIAL? Platform success includes clean source/budget/time stops; inspect RUN_SUMMARY for completion and free status rows for reasons.

🤖 For AI agents & LLM apps

Use architekture/google-ads-transparency-scraper with a small maxItems and a run spending cap. Read only recordType=ad or advertiser as data; status rows explain clean stops. README and input schema: GET https://api.apify.com/v2/acts/architekture~google-ads-transparency-scraper/builds/default. Feedback never changes output.

MCP config for Claude Desktop and Cursor

Claude Desktop: add custom connector https://mcp.apify.com?tools=architekture/google-ads-transparency-scraper and sign in with Apify OAuth. Cursor mcp.json:

{"mcpServers":{"google-ads-transparency":{"type":"http","url":"https://mcp.apify.com?tools=architekture/google-ads-transparency-scraper","headers":{"Authorization":"Bearer ${env:APIFY_TOKEN}"}}}}

Use get-dataset-items to page the results.

🧰 More from architek.earth

Search, travel and trends

Video, social and newsletters

Full catalogue: architek-earth.

architek.earth · code like concrete

Open an issue on the actor's Issues tab or email north@architek.earth for help.

This actor collects publicly available information from adstransparency.google.com and public ad previews without logging in. It does not bypass authentication. You are responsible for your use of the output, including applicable terms, copyright and privacy law.

📝 Changelog

  • 2026-10-25 — Launch prices are $2.00 / 1,000 ads and $1.50 / 1,000 advertisers; scheduled return on 2026-11-24 to $5.00 and $2.50 respectively, following Apify notice.
  • 2026-10-25 — Import the published n8n workflow or Make blueprint to collect ads using the three-ad example.
  • 2026-10-25 — Collect Google ad dates, formats and available text, or discover advertisers by name.