Google Ads Video Transcripts & Hooks (Ads Transparency Center) avatar

Google Ads Video Transcripts & Hooks (Ads Transparency Center)

Pricing

from $8.00 / 1,000 video ad transcripts

Go to Apify Store
Google Ads Video Transcripts & Hooks (Ads Transparency Center)

Google Ads Video Transcripts & Hooks (Ads Transparency Center)

Charged only when a transcript is delivered — removed and music-only ads are free rows. Google Ads Transparency Center video ads → transcript, first-3s hook, advertiser metadata. By advertiser, domain, YouTube ad URL, pasted ad link, or chained dataset. No start fee.

Pricing

from $8.00 / 1,000 video ad transcripts

Rating

0.0

(0)

Developer

Steadyfetch Team

Steadyfetch Team

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

9 minutes ago

Last modified

Share

Google Ads Video Transcript Scraper — Ads Transparency Center hooks & transcripts

Turn Google Ads Transparency Center video ads into structured transcripts — full text, the first-3-seconds hook, and advertiser/creative metadata in one JSON row per ad. Give it an advertiser name, a domain, YouTube ad video URLs, ad page links copied from the Transparency Center, or chain it straight after any Google Ads scraper run. You are charged only when a transcript is delivered — removed videos, music-only creatives, and media-less rows cost $0.

You give itYou get back
Advertiser names (or AR… IDs)transcript — the ad's full text, caption track first
…or advertiser domains (e.g. nike.com)hook3s — what's said in the first 3 seconds
…or YouTube ad video URLs / IDs / Transparency Center ad page linksadvertiserName, creativeId, language, durationSeconds, timestamped segments
…or a Google Ads scraper run's dataset IDone JSON row per video ad, misses clearly marked and free

Output

One JSON row per ad. Delivered rows carry the transcript and charged: true; anything that could not be delivered carries a status saying why, and charged: false. Real rows from the live example run below (long text trimmed with … for the page):

statuschargedadvertiserNamecreativeIdhook3stranscripttranscriptSourcelanguagedurationSeconds
no_mediafalseHelloFresh SECR16734017339195916289nullnullnullnullnull
transcribedtrueHelloFresh SECR05578336217335857153Vos soirées ne devraient pas être uneVos soirées ne devraient pas être une épreuve. Rentrez à la maison et l'eau fraîche vous attend. Des recettes faciles à cuisiner…captionsfr30
transcribedtrueHelloFresh SECR03965484600783798273Rentrez à la maison H et HLE FRE vous attend.Rentrez à la maison H et HLE FRE vous attend.captionsfr6

The first row is a creative that exposes no fetchable video: it ships with its advertiser and creative metadata and is not charged.

Google Ads video transcripts output table — advertiser, creative ID, first-3s hook, transcript, caption source and the charged flag

Full row, as JSON:

{
"status": "transcribed",
"charged": true,
"advertiserName": "HelloFresh SE",
"creativeId": "CR17857019577632817153",
"videoId": "ONzIwHyQGJs",
"videoUrl": "https://www.youtube.com/watch?v=ONzIwHyQGJs",
"hook3s": "What if your food was smarter?",
"transcript": "What if your food was smarter? If your meals were packed with the nutrition you need...",
"transcriptSource": "captions",
"language": "en",
"durationSeconds": 15,
"segments": [{ "start": 0, "end": 2.1, "text": "What if your food was smarter?" }],
"chargeEvents": { "transcript": 1, "surchargeMinutes": 0 }
}

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

Every field is always present (explicit null over silent omission). Non-delivered rows carry status + statusReason instead — no_speech (music-only ad), unavailable_removed, unavailable_expired (a signed media link expired), no_media (the creative exposes no fetchable video), audio_too_long_for_speech (no caption track, and the ad is too long for the speech-to-text route — see the FAQ), no_videos_found, no_creative_found, advertiser_not_found, domain_not_listed, input_error, blocked (YouTube served a bot challenge — re-run later), source_blocked (the Transparency Center stopped answering — wait and re-run), skipped_too_large (per-item data cap), blocked_by_robots (robots.txt kill-switch), asr_unavailable (our speech-to-text service refused this actor's access mid-run — that is on us; captioned ads still deliver, try again later), or failed_* (also listed in the run's ERRORS record). None of them are charged.

For AI agents & LLMs — copy this block

Actor: steadyfetch/google-ads-video-transcript-scraper (Apify Store)
Does: Google Ads Transparency Center video ads -> full transcript +
first-3-seconds hook + advertiser/creative metadata. One JSON row per ad.
Caption-track first, speech recognition as fallback. No Google login.
Run: POST https://api.apify.com/v2/acts/steadyfetch~google-ads-video-transcript-scraper/run-sync-get-dataset-items?token=APIFY_TOKEN
Input (any ONE of the first four fields is enough):
{
"advertisers": ["HelloFresh"], // advertiser names or AR… advertiser IDs, or an
// adstransparency.google.com/advertiser/AR… page link
"domains": ["nike.com"], // every advertiser verified for the domain
"videoUrls": ["https://www.youtube.com/watch?v=ONzIwHyQGJs"],
// YouTube watch URLs, bare 11-char video IDs, or
// .../advertiser/AR…/creative/CR… ad page links
"datasetId": "<dataset id of any Google Ads Transparency scraper run>",
"region": "US", // optional, default US
"maxItems": 100 // optional cap
}
Output one row per ad: status, charged, advertiserName, creativeId, videoId, videoUrl,
title, hook3s, transcript, transcriptSource, language, durationSeconds, segments[]
Pricing pay per event, platform usage INCLUDED, no start fee:
video-ad-transcript $0.020 -> $0.008 per delivered transcript (falls with your Apify plan tier)
long-video-surcharge $0.005 per started minute past the first 3 minutes
Charged only on delivery — removed ads, music-only ads and failures cost $0.
Cap any run with maxTotalChargeUsd (minimum $0.05).
MCP: reachable through Apify's MCP server; ask for "google ads video transcripts".

Why this Google Ads transcript scraper?

  • One hop from advertiser to transcripts. No other tool goes name → video ads → what they actually say in a single run. Most Ads Transparency Center scrapers stop at metadata and video links.
  • Charged only on delivery. A transcript either lands in your dataset or the row is free. Removed video → free row that says so. Music-only ad → free row that says so.
  • Old datasets still work. YouTube video IDs don't expire the way ad-CDN links on other platforms do — you can transcribe a dataset scraped weeks ago. Ads that have since been removed come back as free unavailable_removed rows.
  • Any length on the caption route. Long-form ads transcribe fine — videos past 3 minutes add a small per-started-minute surcharge instead of failing or being cut off. The speech-to-text fallback, which only runs when an ad has no caption track at all, works on short ads: past a few minutes YouTube stops releasing the audio to anything but its own player, so a long caption-less ad comes back audio_too_long_for_speech and uncharged rather than half-transcribed. Ads that carry captions — the large majority, and nearly every spoken one — are unaffected at any length.
  • Hook as data. The first-3s hook is the line media buyers study; you get it as its own field, plus full segment timestamps.
  • Works with any scraper's output. The dataset input deep-scans your rows for YouTube ad video links — no field mapping, no glue code.

This actor may fail when the platform changes things — failed items are never charged.

How to transcribe Google video ads (no code)

  1. Type an advertiser name (e.g. HelloFresh) into Advertisers — or paste your Google Ads scraper run's dataset ID.
  2. Click Start. The actor finds the advertiser's video ads in the Ads Transparency Center and transcribes each one.
  3. Each video ad comes back as one JSON row: transcript + hook + advertiser metadata.
  4. Export as JSON/CSV, or read it via API.

Prefer URLs? Paste YouTube watch URLs or bare 11-character video IDs into videoUrls directly. Browsing the Ads Transparency Center and found an ad worth transcribing? Copy the page link from your browser (adstransparency.google.com/advertiser/AR…/creative/CR…, any ?region= value) and paste it into videoUrls — the ad is looked up and transcribed directly. An advertiser page link (without /creative/…) goes in Advertisers and transcribes that advertiser's video ads.

How much does it cost to transcribe Google ads?

One result = one ad's full transcript payload (transcript + hook + metadata + segments). The first 3 minutes of each video are included; longer videos add a small per-started-minute surcharge. No start fee, no subscription, no third-party API key needed.

JobApprox. cost
50 competitor video ads≈ $1.00
500 ads (a serious creative teardown)≈ $10
Apify free plan ($5 credit)250 ad transcripts

Platform usage (compute + transfer) is included in the event price — the per-transcript price you see is the whole price. Failed or empty fetches charge no result fee.

Works with — Google Ads scrapers you can chain from

The dataset input reads the YouTube video link value in each row (watch URLs, youtu.be links, or a videoId field), not a fixed field name — so it works with any Ads Transparency Center scraper that exports video links, including:

ScraperChain by
silva95gustavo/google-ads-scraperdataset ID or pasted rows
lexis-solutions/google-ads-scraperdataset ID or pasted rows
solidcode/ads-transparency-scraperdataset ID or pasted rows
Any scraper whose rows carry the ad's YouTube linkdataset ID or pasted rows

How to chain: run the scraper with video ads in scope → copy the run's dataset ID into this actor's Dataset ID field (or use Apify's Connect Actor integration) → Start. Rows without a YouTube link come back as uncharged no_creative_found. You can also skip the other scraper entirely — this actor enumerates advertisers itself.

Want the text of an advertiser's image and text ads too? Pair this with Google Ads Creative Text Scraper — same input, extracts headlines, body copy, and CTAs from the non-video creatives.

Use it via API, MCP, and integrations

  • API: standard Apify run API — POST .../acts/steadyfetch~google-ads-video-transcript-scraper/runs with { "advertisers": ["HelloFresh"] }. Python/Node clients work as with any actor.
  • MCP: works from Claude, Cursor, and any MCP client through Apify's MCP server — ask for "google ads video transcripts" with an advertiser name or dataset ID.
  • n8n: a free ready-made template, no community nodes needed — Google Ads video transcripts → (one advertiser or domain → hooks & transcripts → spreadsheet-shaped rows, 3-minute setup).
  • Make / Zapier: call it as a regular Apify actor step right after your scraper node, or run it standalone with advertiser names.

FAQ

Where do the videos come from? Google's own Ads Transparency Center — the public surface Google publishes so anyone can see who runs which ads. Most Google video ads are hosted on YouTube; this actor transcribes those, plus inline video creatives where the media is fetchable.

What's transcriptSource? captions means the ad's own caption track was used (fast, exact); asr means the audio was transcribed with speech recognition. Both count as one transcript — same price, same fields.

An ad came back audio_too_long_for_speech? That ad has no caption track, so the only route left was speech-to-text on its audio — and past a few minutes YouTube stops releasing a video's audio to anything but its own player. We can't reach enough of it for a complete transcript, and a partial transcript is never sold as a whole one, so the row is free and says so plainly instead of telling you to re-run something that can never succeed. Short caption-less ads transcribe as before, and captioned ads are unaffected at any length.

Music-only ads? Speech-recognition models hallucinate filler on music. We detect that and return an honest, uncharged no_speech row instead of selling you a fake transcript.

Some video creatives come back no_media? A minority of Ads Transparency Center video creatives expose no fetchable video stream (they render as static previews or script-only embeds). Those rows ship free with their advertiser/creative metadata and are clearly marked.

An advertiser returned no_videos_found? Video inventory is lumpy — many large advertisers run only text and image ads in a given region. Try another region code or advertiser. The row is free.

Typos in bare video IDs? A mistyped 11-character ID is indistinguishable from a real one, so it surfaces as an honest unavailable_removed row rather than an input error.

Is it legal to transcribe Google ads? The Ads Transparency Center is public by design (ad transparency). As always, how you use the data is on you.

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", "Google Ads" and "YouTube" 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 Centerthis actorGoogle 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 CenterGoogle Ads Creative Text & OCR (Transparency Center)

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.