Google Ads Transparency API – YouTube Video Ads
Pricing
from $2.20 / 1,000 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
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
7 hours ago
Last modified
Categories
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
| Field | What it does |
|---|---|
advertisers | Brand names (Nike), domains (nike.com), advertiser IDs (AR…) or adstransparency.google.com advertiser links. A brand's own domain finds its ads most reliably. |
region | Only ads shown in this country (US, GB, DE, …), or anywhere. |
dateFrom / dateTo | Only ads shown in this period: a date (2026-09-01) or a period (30 days). |
maxAdsPerAdvertiser | Unique playable videos per advertiser, newest first. Default 20, up to 500. |
onlyNew | Skip videos this account already got for the same advertiser and region. |
includeVideoStats | YouTube title, channel, views, likes, publish time, duration. Default on. |
includeTranscript, transcriptLanguages, includeSrt | Spoken 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 HLSvideoStreamUrlinstead 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 (
videoStatsStatussays so; the stats fields are then empty). - Dates are what Google's transparency report shows (first and last shown, per day).
firstShown/lastShownare the ad's worldwide dates; theregionand date filters use Google's per-region dates, so an ad can match "last 30 days" in a region while its worldwidelastShownlooks 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.
Related TubeText tools
- Video Ad Analyzer: AI teardown (hook, angle, script, shot list) of video ads from Google Ads Transparency, the Meta Ad Library or links.
- Meta Ad Library Scraper: Facebook and Instagram ads.
- YouTube Transcript API: transcripts of any YouTube video, playlist or channel.
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.