Google Ads Transparency API – YouTube Video Ads avatar

Google Ads Transparency API – YouTube Video Ads

Pricing

from $2.20 / 1,000 video ads

Go to Apify Store
Google Ads Transparency API – YouTube Video Ads

Google Ads Transparency API – YouTube Video Ads

Get any advertiser's YouTube video ads from Google Ads Transparency by brand, domain or advertiser ID. Returns video link, title, views, first/last shown dates, days running and creative IDs; optional transcript. $0.003 per ad (+$0.002 transcript); not-found advertisers are free. · by TubeText

Pricing

from $2.20 / 1,000 video ads

Rating

0.0

(0)

Developer

TubeText Labs

TubeText Labs

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

7 hours ago

Last modified

Share

TubeText · Ads & marketing · Pay per result. No login. Ready for AI agents. All tools

Get any advertiser's video ads from Google's public Ads Transparency Center. You can use a brand name, a website domain or an advertiser ID.

You get one row per unique video:

  • the YouTube video (link, title, channel, views, likes, duration);
  • first and last shown dates and days running;
  • every creative ID that runs the video;
  • the ad's page on Google;
  • optionally, the transcript.

No login, no Google Ads account.

What you can do with it

  • Competitor ad research: see which video ads a competitor runs on YouTube, how long each has been live, and what it says.
  • Weekly monitoring: schedule it with Only new ads to get only the video ads that appeared since the last run. Skipped ads are free.
  • Creative libraries for AI: feed the YouTube links and transcripts to an LLM, or to our Video Ad Analyzer for hook, angle and script teardowns.

Input

FieldWhat it does
advertisersBrand names (Nike), domains (nike.com), advertiser IDs (AR…) or adstransparency.google.com advertiser links. A brand's own domain finds its ads most reliably.
regionOnly ads shown in this country (US, GB, DE, …), or anywhere.
dateFrom / dateToOnly ads shown in this period: a date (2026-09-01) or a period (30 days).
maxAdsPerAdvertiserUnique playable videos per advertiser, newest first. Default 20, up to 500.
onlyNewSkip videos this account already got for the same advertiser and region.
includeVideoStatsYouTube title, channel, views, likes, publish time, duration. Default on.
includeTranscript, transcriptLanguages, includeSrtSpoken text from the video's YouTube captions.

Example:

{ "advertisers": ["nike.com", "adidas.com"], "region": "US", "dateFrom": "30 days", "maxAdsPerAdvertiser": 20, "includeTranscript": true }

Output (one row per unique video ad)

{
"advertiserName": "Duolingo Inc",
"matchedAs": "domain duolingo.com",
"advertiserAdCountRange": "7",
"videoHost": "youtube",
"youtubeVideoId": "…",
"youtubeUrl": "https://www.youtube.com/watch?v=…",
"videoTitle": "Duo Plushie - Owl on the Prowl",
"videoViews": 1308083,
"firstShown": "2025-11-05",
"lastShown": "2026-03-27",
"daysRunning": 143,
"creativeIds": ["CR…", "CR…", "CR…"],
"adUrl": "https://adstransparency.google.com/advertiser/AR…/creative/CR…",
"transcriptStatus": "ok",
"transcript": "…",
"status": "ok",
"charged": true
}
  • Video ads hosted by Google, not on YouTube (bought through Display & Video 360), come with videoHost: "google" and an HLS videoStreamUrl instead of a YouTube link.
  • Free explanation rows: not_found, no_ads, no_playable_video, no_new_ads, error, cost_limit_reached.

Pricing

  • $0.003 per video ad delivered (lower on higher Apify plans).
  • +$0.002 per transcript, only when transcripts are on and the video has captions.
  • Free: advertisers not found, advertisers without video ads, skipped creatives, ads already delivered (with onlyNew), and failures.
  • Maximum cost per run is respected. The run stops before the limit and adds a row telling you how to continue.

Use it from code (API)

curl -X POST "https://api.apify.com/v2/acts/tubetext~google-ads-transparency-video/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"advertisers":["nike.com"],"region":"US","maxAdsPerAdvertiser":10}'

Limits

  • About 15–18% of video creatives can't be resolved to a video and are skipped free. These are AMP previews that load the ad from an internal Google host; neither the preview nor Google's public creative lookup names the video. The status line says how many were skipped. Every other video creative comes with its YouTube video or its Google-hosted stream.
  • Text and image ads are not included. This Actor is for video ads only.
  • Transcripts exist only for YouTube-hosted videos with captions. Google-hosted videos get transcriptStatus: "not_on_youtube" and are not charged for a transcript.
  • An ad is charged when its row is delivered, i.e. with its video ID, all creative IDs and its dates. That holds even if YouTube refused the extra video stats for that one row (videoStatsStatus says so; the stats fields are then empty).
  • Dates are what Google's transparency report shows (first and last shown, per day). firstShown/lastShown are the ad's worldwide dates; the region and date filters use Google's per-region dates, so an ad can match "last 30 days" in a region while its worldwide lastShown looks older (or the other way round).
  • Max ads per advertiser counts playable videos: the Actor keeps reading the advertiser's creatives (up to 1,000) until it has that many, or the advertiser has no more. Impression ranges are not included yet.

Support

Found a bug or missing a field? Open an issue. We read every one.

Cost telemetry: when a run ends unusually (for example it cost more than it earned), the Actor sends us a small anonymous summary via a webhook: run ID, duration, memory, compute and AI cost, whether the account is on a free or paid plan, and counts of free rows. We use it to keep prices fair. Your inputs, links and results are never sent.