Google Ads Creative Text & OCR (Transparency Center) avatar

Google Ads Creative Text & OCR (Transparency Center)

Pricing

from $4.00 / 1,000 ad creative contents

Go to Apify Store
Google Ads Creative Text & OCR (Transparency Center)

Google Ads Creative Text & OCR (Transparency Center)

Charged only when ad content is extracted — video and unreadable creatives are free rows. What competitor Google ads actually SAY: headline, body, CTA and all visible text from Ads Transparency Center creatives, image ads read by OCR. By advertiser or domain. No start fee.

Pricing

from $4.00 / 1,000 ad creative contents

Rating

0.0

(0)

Developer

Steadyfetch Team

Steadyfetch Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

8 hours ago

Last modified

Share

Google Ads Creative Text & OCR — what competitor ads actually say

Every Google Ads Transparency scraper returns the same thing: metadata rows — IDs, dates, formats — and stops. The Transparency Center renders every ad as a screenshot image, so the actual creative content (headline, body, CTA) never appears in their output. This actor reads it.

Advertiser or domain in → structured ad copy out:

{
"advertiserName": "HelloFresh",
"format": "TEXT",
"headline": "Dinner just levelled up - Weeknights, upgraded",
"body": "Not sure what's for dinner? Get farm-fresh ingredients and easy recipes delivered.",
"cta": "Get Offer",
"displayUrl": "www.hellofresh.ca/",
"rawText": "HelloFresh www.hellofresh.ca/ Dinner just levelled up …",
"status": "extracted",
"firstShown": 20260214,
"lastShown": 20260818
}

Output

One JSON row per creative. status: "extracted" rows carry the ad copy and are the only rows charged; everything else ships free with a statusReason saying why. Real rows from the live example run below (long text trimmed with … for the page):

statusstatusReasonadvertiserNameformatheadlinebodyctadisplayUrlfirstShownlastShown
extractednullHelloFresh SETEXTSchmeckt Deiner ganzen FamilieWeniger Einkaufsstress: Plane flexibel, wähle Rezepte und koche frisch zu Hause.nullwww.hellofresh.de/2026082020260826
not_extractedno_screenshotHelloFresh SEIMAGEnullnullnull2026081920260826
not_extractedvideo_metadata_onlyHelloFresh SEVIDEOnullnullnull2026060420260826
extractednullHelloFresh SEIMAGEHelloFresh is Hiring in PolandBring your flavour to HelloFresh — fresh roles now open in Poland!Apply Nowcareers.hellofresh.com2026040220260826

The last row is an image ad: headline, body and CTA read straight off the rendered creative by OCR — the rows other Transparency Center scrapers leave blank. The two middle rows are free.

Google Ads creative text output table — status, format, headline, body copy, CTA and display URL, including an image ad read by OCR

Browse the full live example dataset → — real output from a verified run, including the free uncharged rows.

Every row also carries chargedtrue only on rows that were actually billed, so you can reconcile the dataset against your invoice — plus advertiser, advertiserId, creativeId, rawText (all visible text, verbatim) and screenshotUrl. Non-extracted rows use statusReasonvideo_metadata_only, all_video, no_screenshot, screenshot_unavailable, ocr_no_text_found, ocr_service_unavailable (our text-reading service refused this actor's access — that is on us; the run stops cleanly, try again later), no_creatives_found, advertiser_not_found, domain_not_listed, unsupported_region — and none of them are charged.

For AI agents & LLMs — copy this block

Actor: steadyfetch/google-ads-creative-text-scraper (Apify Store)
Does: Google Ads Transparency Center creatives -> what the ad actually SAYS:
headline, body, CTA, display URL and all visible text. Image/display ads
are read by a vision model (OCR). One JSON row per creative. No Google login.
Run: POST https://api.apify.com/v2/acts/steadyfetch~google-ads-creative-text-scraper/run-sync-get-dataset-items?token=APIFY_TOKEN
Input (advertisers and/or domains — at least one):
{
"advertisers": ["HelloFresh", "AR17410177287600472065"], // names or AR… advertiser IDs
"domains": ["factormeals.com"], // every advertiser verified for it
"formats": ["TEXT", "IMAGE", "VIDEO"], // optional, this is the default
"region": "US", // optional, default US
"maxCreativesPerAdvertiser": 50 // optional, default 30
}
Output one row per creative: status, charged, statusReason, advertiser, advertiserName,
advertiserId, creativeId, format, headline, body, cta, displayUrl, rawText,
screenshotUrl, firstShown, lastShown
Pricing pay per event, platform usage INCLUDED, no start fee:
ad-creative-content $0.015 -> $0.004 per extracted creative (falls with your Apify plan tier)
Charged only on extraction — video creatives, missing screenshots and unreadable
creatives ship as free rows.
Cap any run with maxTotalChargeUsd (minimum $0.05). Empty input runs a free 2-row demo.
MCP: reachable through Apify's MCP server; ask for "what Nike's Google ads say".

What you get

  • TEXT and IMAGE creatives read by a vision model — headline, body text, CTA, display URL, and all visible text verbatim. Image/display ads included: the format most tools skip entirely.
  • Video creatives listed free — advertiser, dates, format, creative ID as metadata rows. No video is downloaded and nothing is charged for them.
  • Search by advertiser name, AR… advertiser ID, or domain (a domain spans every advertiser verified for it). Region-aware — the same brand runs different ads per country.
  • Charged only when content is extracted. A creative whose screenshot is missing, expired, or unreadable is delivered free with an honest per-row reason (screenshot_unavailable, ocr_no_text_found, …) — never a charged empty row.

Who uses this

  • Competitive ad research: pull a competitor's live headlines and offers as text you can diff, count, and track over time.
  • Ad copywriting / creative teams: mine what the market's ads say before writing yours — real inputs for ad-generation workflows.
  • Agencies: monitor client categories across regions without screenshotting by hand.

How much does it cost?

1 result = one creative's extracted content (all fields above from one ad). No start fee, no subscription. Pricing is all-inclusive — platform usage is included in the event price, no separate usage line.

What you runResultsCost
One competitor, 30 newest creatives~24 extracted~$0.36
10 competitors, 50 creatives each~400 extracted~$6.00
Track one brand's ads weekly~100/mo~$1.50/mo

Video creatives, misses, and unreadable screenshots are always $0. You stay in control with Maximum cost per run — the run stops cleanly at your cap and tells you what's left. Apify's free plan ($5 monthly credit) is enough to evaluate seriously.

Tip — search by domains for full coverage. A brand name matches exactly one verified advertiser entity, and big brands often run ads under several (plus their agencies). A domain search finds every advertiser verified for that domain, so domains: ["brand.com"] regularly surfaces creatives — and whole advertiser accounts — that a name search misses. The counts in the table above assume the advertiser you hit actually runs text/image ads; if a name search comes back thin, try the domain.

Honest scope (read before big runs)

  • v1 extracts TEXT and IMAGE creatives. Video creatives ship metadata only (free rows) — no video content is fetched. An advertiser whose ads are all video gets those free rows plus one free row pointing you to the video-transcript companion — never an empty dataset.
  • Region matters. An advertiser can show thousands of ads in one country and zero in another. Default is US; set region for others.
  • Some rich/HTML creatives have no public screenshot; those rows arrive free with no_screenshot.
  • The Transparency Center shows what Google publishes — typically ads served in roughly the last 30 days.

Input

{
"advertisers": ["HelloFresh", "AR17410177287600472065"],
"domains": ["factormeals.com"],
"formats": ["TEXT", "IMAGE", "VIDEO"],
"region": "US",
"maxCreativesPerAdvertiser": 50
}

Run with no input at all and you get a tiny free demo (2 real creatives, nothing charged).

Use it via API and MCP

curl "https://api.apify.com/v2/acts/steadyfetch~google-ads-creative-text-scraper/run-sync-get-dataset-items?token=$APIFY_TOKEN" \
-X POST -H 'Content-Type: application/json' \
-d '{"advertisers":["Nike"],"region":"US","maxCreativesPerAdvertiser":25}'

Works out of the box from any MCP client (Claude, Cursor, …) via Apify's MCP server — ask for "what do Nike's Google ads say right now" and point it at this actor.

FAQ

Why doesn't my usual Transparency scraper return the ad text? Because the Transparency Center serves ads as rendered screenshots — the text isn't in the page data. Reading it requires per-ad OCR, which row-priced scrapers don't do. That's the exact job this actor exists for.

What if an advertiser has no ads in my region? You get a free row saying no_creatives_found with guidance to try another region — not a charged empty result.

Can it read every ad? No — and it won't pretend to. Creatives without a public screenshot or whose text can't be read reliably are delivered free with the reason on the row. You pay only for extracted content.

Is this an official Google product? No. This is an independent actor from steadyfetch — unofficial, and not affiliated with, endorsed by, or sponsored by Google LLC. "Google" and "Google Ads" are trademarks of their respective owners, used here only to name the public Ads Transparency Center surface this actor reads.

Steadyfetch ad-intelligence suite

One actor per ad surface, one job each, the same contract everywhere: all-inclusive pay-per-event, no start fee, charged only on delivery — and the same row shape, so a workflow built for one platform ports to the next.

Ad creatives → transcripts (video)

Ad surfaceActorFree n8n template
Facebook & Instagram Ad LibraryFacebook Ad Library Transcript Scraper — Video Hooks & CTAsFacebook ad transcripts → · Competitor ad teardown →
Google Ads Transparency CenterGoogle Ads Video Transcripts & Hooks (Ads Transparency Center)Google Ads video transcripts →
TikTok Creative Center Top AdsTikTok Ad Transcripts & Hooks (Creative Center Top Ads)TikTok Top Ads transcripts →
LinkedIn Ad LibraryLinkedIn Ads Transcript Scraper — Video Hooks & CTAsLinkedIn Ad Library transcripts →
Instagram Reels (organic posts)Instagram Reels to Text · @handleInstagram Reel transcripts →

Ad creatives → text (image & text ads, read by OCR)

Ad surfaceActor
Google Ads Transparency Centerthis actor

All templates in one place: github.com/steadyfetch/n8n-templates — free, no community nodes needed.

The rest of the steadyfetch shelf — same contract everywhere: all-inclusive pay per event, no start fee, charged only on delivery.

FamilyActors
Ad creative intelligenceFacebook · Google Ads video · TikTok · LinkedIn · Google Ads text & OCR
Trends & keywordsGoogle Trends · Trends Now · Breakout keywords · Autocomplete keywords · Keyword volume & CPC · Social trends
YouTube transcriptsYouTube videos · YouTube channels
InstagramReel transcripts · Profile posts
JobsIndeed · Career sites by domain · Glassdoor · Multi-board
AmazonProducts · Search · Bestsellers · Sellers
Any media fileSpeech to Text · any link or file

Unlinked names are publishing shortly on the same account — search steadyfetch on Apify Store.

Feedback & support

Found an issue? Open it on the Issues tab — we respond within one business day. Feature requests welcome.