YouTube Ads Scraper: Competitor Video Ads Library avatar

YouTube Ads Scraper: Competitor Video Ads Library

Pricing

$3.00 / 1,000 ad scrapeds

Go to Apify Store
YouTube Ads Scraper: Competitor Video Ads Library

YouTube Ads Scraper: Competitor Video Ads Library

Scrape the YouTube ads any brand runs, from the Google Ads Transparency Center: YouTube video ID and watch URL, first and last shown dates, days active, countries and EU impressions. Search by brand, domain or advertiser ID. No login. $3 per 1,000 ads.

Pricing

$3.00 / 1,000 ad scrapeds

Rating

0.0

(0)

Developer

PulseData

PulseData

Maintained by Community

Actor stats

0

Bookmarked

2

Total users

1

Monthly active users

2 hours ago

Last modified

Share

This actor exports the ads a brand runs on YouTube, taken from the public Google Ads Transparency Center with the platform filter fixed to YouTube. You enter a brand name, a domain such as nike.com, an advertiser ID or a Transparency Center URL, and get one JSON item per ad with the YouTube video ID and watch URL, first and last shown dates, days shown, the countries it ran in and, for ads shown in the EU, impression ranges per country.

The actor does not visit youtube.com. Everything comes from Google's own ad library, which lists the ads of verified advertisers. No Google account, login or cookies are needed. PulseData is not affiliated with Google or YouTube.

Price: $3.00 per 1,000 ads ($0.003 per ad). There is no start fee, and details and video IDs are included in that price.

What you can do with it

  • See every YouTube ad a competitor is running. Enter their domain and get the video ads that point to it.
  • Get the YouTube video ID and link of each ad. Open the ads, download them, or pass the IDs to a transcript or comments tool.
  • Find YouTube ads shown in one country. Filter by any two-letter country code, such as US, DE or GB.
  • Get EU impression ranges for YouTube ads. Google publishes an impression range per EU country, and the actor returns it.
  • Compare the YouTube ads of several brands in one run, with the query stored on every row.
  • Track how long a brand keeps an ad live. firstShown, lastShown and daysShown show which creatives run for months.
  • Find the text and image ads Google shows on YouTube, mostly from Performance Max and Demand Gen campaigns, by switching the format to All.
  • Look up ads by Google advertiser ID (AR...) when a brand name matches several accounts.

Use cases

Competitor research. Marketing teams check which video ads a competitor has running now, which ones they keep for a long time and in which markets. Ads that stay live for months are usually the ones that perform.

Creative swipe files. Agencies collect the video IDs of a category's ads, watch them in bulk and tag hooks, lengths and calls to action. The YouTube Transcript Scraper turns the same video IDs into text.

Market entry checks. Before launching in a country, filter a competitor's YouTube ads to that region and see how much they advertise there and since when.

Monitoring. Schedule a run per week with the same queries and compare creativeId values to spot new ads the day they appear in the library.

Reseller and affiliate checks. A domain query also returns ads from other advertisers that send viewers to that domain, for example sellers advertising their Amazon listings or agencies booking ads for a brand.

Quick start

{ "queries": ["nike.com"], "maxAdsPerQuery": 100 }

This returns up to 100 video ads pointing to nike.com that Google lists as shown on YouTube. Add more lines to queries to compare several competitors in one run.

Input

FieldWhat it does
queriesAdvertiser names (Nike), domains (nike.com), advertiser IDs (AR...) or Transparency Center URLs, one per line. Required.
regionOnly ads shown in this country (US, DE, GB, ...) or anywhere (default).
formatVIDEO (default) for YouTube video ads. ALL also returns the image and text ads Google lists as shown on YouTube. TEXT and IMAGE return only those.
startDate, endDateOnly ads shown in this date range (YYYY-MM-DD).
maxAdsPerQueryStop after this many ads per query. Default 100. 0 means no limit, and large advertisers can have thousands of ads.
advertiserMatchFor names: best takes the single most relevant advertiser, all takes every suggested advertiser that contains the name.
includeDetailsPer-country dates, EU impression ranges and targeting flags. On by default, one extra request per ad.
enrichPreviewsExtracts the YouTube video ID, watch URL and image URLs from the creative preview. On by default, one extra request per ad.
proxyConfigurationKeep Apify residential proxies (default). Google blocks shared datacenter IPs quickly.

Example with a country filter and several competitors:

{
"queries": ["nike.com", "adidas.com", "puma.com"],
"region": "DE",
"format": "VIDEO",
"maxAdsPerQuery": 50
}

Output

One item per ad. This is a shortened real item from a test run:

{
"query": "nike.com",
"advertiserId": "AR08817325674072113153",
"advertiserName": "Mediabrands Netherlands B.V.",
"creativeId": "CR15582989562979287041",
"format": "VIDEO",
"firstShown": "2026-08-24T14:00:00.000Z",
"lastShown": "2026-09-25T11:00:00.000Z",
"daysShown": 33,
"youtubeVideoId": "iC3pw6o5bN4",
"youtubeUrl": "https://www.youtube.com/watch?v=iC3pw6o5bN4",
"regionsShownIn": "FI",
"regions": [
{ "regionCode": "FI", "regionName": "Finland", "firstShown": "2026-08-24", "lastShown": "2026-09-25", "impressionsLow": null, "impressionsHigh": null, "platforms": [] }
],
"euTotals": { "impressionsLow": null, "impressionsHigh": null, "firstShown": "2026-08-24", "lastShown": "2026-09-25", "platforms": [] },
"targeting": {
"demographic": { "included": true, "excluded": true },
"geographic": { "included": true, "excluded": false },
"contextual": { "included": true, "excluded": false }
},
"variationsCount": 2,
"url": "https://adstransparency.google.com/advertiser/AR08817325674072113153/creative/CR15582989562979287041?region=anywhere",
"advertiserUrl": "https://adstransparency.google.com/advertiser/AR08817325674072113153?region=anywhere",
"scrapedAt": "2026-09-25T12:49:03.309Z"
}

Other fields: previewUrl, previewImageUrl, imageUrls, destinationUrl, appId, topicId and detailLastShown. For ads shown in the EU, impressionsLow and impressionsHigh hold Google's published range, for example 15,000 to 20,000. The targeting block says whether demographic, geographic and contextual targeting was used, not the actual audience.

Export the dataset as JSON, CSV or Excel, or read it through the Apify API. The table view shows advertiser, format, dates, preview, video ID, regions and the ad link.

Limits

  • The video ID is missing on some ads. It is read from the ad preview, and some video ads have no public preview. In our tests 164 of 181 video ads had a youtubeVideoId. The other rows still have dates, countries and the Transparency Center link.
  • ALL is not only video. With the format set to All, Google also lists text and image ads as shown on YouTube, mostly Performance Max and Demand Gen placements. Those rows have no video ID. Keep the default VIDEO if you only want video ads.
  • Google shows ads in the Transparency Center only for verified advertisers. Ads that ran before an advertiser was verified may be missing.
  • Impression ranges are published only for ads shown in the EU.
  • A domain query returns every advertiser whose ads point to that domain, which can include agencies, regional companies and resellers. Use an advertiser ID to get one account only.
  • Google rate-limits the Transparency Center. The actor paces requests and rotates residential proxy sessions, but a run can still end with a "Google is currently blocking the proxy exits" message. Nothing is charged for queries that returned no ads, and running it again later usually works.

Price

$3.00 per 1,000 ads, charged as the ad-scraped event ($0.003 per ad). No start fee. Details and preview enrichment are included, so turning them off does not lower the price, only the run time. Apify platform usage is billed to us, not to you. Set a "Maximum cost per run" and the actor stops at that amount with a SUCCEEDED status and a message saying how to get the rest.

FAQ

Does it scrape YouTube itself? No. It reads Google's public ad library and returns the ads Google lists as shown on YouTube.

Why is the advertiser name not the brand I searched for? A domain query returns every advertiser whose ads link to that domain. Big brands often buy ads through regional companies or media agencies, so a nike.com query can return "Nike Retail BV" or an agency name.

Why did a brand name return no ads? With advertiserMatch: best, the actor picks the largest advertiser whose name matches. That account may run no YouTube ads. Try the brand's domain, set advertiserMatch to all, or paste the advertiser ID from the Transparency Center URL.

Can I get view counts or ad spend? No. Google does not publish them. You get dates, days shown, countries and EU impression ranges.

Can I download the video files? The actor returns the YouTube video ID and watch URL. It does not download video files.

I need ads from Search, Shopping or Maps too. Use the Google Ads Transparency Center Scraper, which covers every Google surface.

Example pages

More ad libraries by PulseData