Nimbryxo Studio

YouTube Ad Creative & Advertiser Tracker

Find the video and image ad creatives an advertiser is running on YouTube, discovered by keyword, advertiser name, or advertiser ID, with country, format, and first/last-shown dates.

Input schema

Input fields, types, required flags, descriptions, defaults, and prefills come from the published definition. Prefill examples are distinct from defaults.

FieldTypeRequiredDescription
advertisersarrayoptionalAdvertiser names or AR-IDs to scrape YouTube ads for (e.g. 'Nike, Inc.', 'AR16735076323512287233'). Leave empty to use searchTerms.
searchTermsarrayoptionalKeywords or domain names to discover advertisers, then scrape their YouTube ads (e.g. 'electric car', 'nike.com').
countriesarrayoptionalCountry codes to filter ads by (ISO 3166-1 alpha-2).
Show all input fields
FieldTypeRequiredDescription
advertisersarrayoptionalAdvertiser names or AR-IDs to scrape YouTube ads for (e.g. 'Nike, Inc.', 'AR16735076323512287233'). Leave empty to use searchTerms.
searchTermsarrayoptionalKeywords or domain names to discover advertisers, then scrape their YouTube ads (e.g. 'electric car', 'nike.com').
countriesarrayoptionalCountry codes to filter ads by (ISO 3166-1 alpha-2).
dateFromstringoptionalOnly return ads first shown on or after this date (YYYY-MM-DD).
dateTostringoptionalOnly return ads last shown on or before this date (YYYY-MM-DD).
includeVideoDetailsbooleanoptionalFetch the ad detail page for each ad to resolve the video URL and format (slower, but gives the actual video asset for video ads).
maxAdvertisersPerTermintegeroptionalMaximum advertisers to scrape per keyword (when searchTerms is used).
maxItemsintegeroptionalHard cap on total ad records returned (1-5000).
maxConcurrencyintegeroptionalAdvertisers scraped in parallel. Higher is faster but increases rate-limit risk.
outputFormatstringoptionalDataset always receives JSON records. Additionally export results as CSV, Excel, or HTML in the key-value store (OUTPUT.csv / OUTPUT.xlsx / OUTPUT.html).
proxyConfigurationobjectoptionalOptional proxy. For moderate traffic no proxy is needed. Enable Apify proxy for high-volume scraping.

Download the published input schema

View complete JSON
{
  "description": "Scrape YouTube ads from Google's Ads Transparency Center. Search by advertiser, keyword, or country, and export the results.",
  "properties": {
    "advertisers": {
      "description": "Advertiser names or AR-IDs to scrape YouTube ads for (e.g. 'Nike, Inc.', 'AR16735076323512287233'). Leave empty to use searchTerms.",
      "editor": "stringList",
      "example": [
        "Nike, Inc.",
        "Samsung Electronics America"
      ],
      "items": {
        "type": "string"
      },
      "title": "Advertisers",
      "type": "array"
    },
    "countries": {
      "description": "Country codes to filter ads by (ISO 3166-1 alpha-2).",
      "editor": "select",
      "items": {
        "enum": [
          "AD",
          "AE",
          "AG",
          "AI",
          "AL",
          "AM",
          "AO",
          "AQ",
          "AR",
          "AS",
          "AT",
          "AU",
          "AW",
          "AZ",
          "BA",
          "BB",
          "BD",
          "BE",
          "BF",
          "BG",
          "BH",
          "BI",
          "BJ",
          "BM",
          "BN",
          "BO",
          "BQ",
          "BR",
          "BS",
          "BT",
          "BV",
          "BW",
          "BY",
          "BZ",
          "CA",
          "CC",
          "CD",
          "CF",
          "CG",
          "CH",
          "CI",
          "CK",
          "CL",
          "CM",
          "CN",
          "CO",
          "CR",
          "CV",
          "CW",
          "CX",
          "CY",
          "CZ",
          "DE",
          "DJ",
          "DK",
          "DM",
          "DO",
          "DZ",
          "EC",
          "EE",
          "EG",
          "EH",
          "ER",
          "ES",
          "ET",
          "FI",
          "FJ",
          "FK",
          "FM",
          "FO",
          "FR",
          "GA",
          "GB",
          "GD",
          "GE",
          "GF",
          "GG",
          "GH",
          "GI",
          "GL",
          "GM",
          "GN",
          "GP",
          "GQ",
          "GR",
          "GS",
          "GT",
          "GU",
          "GW",
          "GY",
          "HK",
          "HM",
          "HN",
          "HR",
          "HT",
          "HU",
          "ID",
          "IE",
          "IL",
          "IM",
          "IN",
          "IO",
          "IQ",
          "IS",
          "IT",
          "JE",
          "JM",
          "JO",
          "JP",
          "KE",
          "KG",
          "KH",
          "KI",
          "KM",
          "KN",
          "KR",
          "KW",
          "KY",
          "KZ",
          "LA",
          "LB",
          "LC",
          "LI",
          "LK",
          "LR",
          "LS",
          "LT",
          "LU",
          "LV",
          "LY",
          "MA",
          "MC",
          "MD",
          "ME",
          "MG",
          "MH",
          "MK",
          "ML",
          "MM",
          "MN",
          "MO",
          "MP",
          "MQ",
          "MR",
          "MS",
          "MT",
          "MU",
          "MV",
          "MW",
          "MX",
          "MY",
          "MZ",
          "NA",
          "NC",
          "NE",
          "NF",
          "NG",
          "NI",
          "NL",
          "NO",
          "NP",
          "NR",
          "NU",
          "NZ",
          "OM",
          "PA",
          "PE",
          "PF",
          "PG",
          "PH",
          "PK",
          "PL",
          "PM",
          "PN",
          "PR",
          "PS",
          "PT",
          "PW",
          "PY",
          "QA",
          "RE",
          "RO",
          "RW",
          "SA",
          "SB",
          "SC",
          "SE",
          "SG",
          "SH",
          "SI",
          "SJ",
          "SK",
          "SL",
          "SM",
          "SN",
          "SO",
          "SR",
          "ST",
          "SV",
          "SX",
          "SZ",
          "TC",
          "TD",
          "TF",
          "TG",
          "TH",
          "TJ",
          "TK",
          "TL",
          "TM",
          "TN",
          "TO",
          "TR",
          "TT",
          "TV",
          "TW",
          "TZ",
          "UA",
          "UG",
          "UM",
          "US",
          "UY",
          "UZ",
          "VA",
          "VC",
          "VE",
          "VG",
          "VI",
          "VN",
          "VU",
          "WF",
          "WS",
          "YE",
          "YT",
          "ZA",
          "ZM",
          "ZW"
        ],
        "enumTitles": [
          "Andorra",
          "United Arab Emirates",
          "Antigua and Barbuda",
          "Anguilla",
          "Albania",
          "Armenia",
          "Angola",
          "Antarctica",
          "Argentina",
          "American Samoa",
          "Austria",
          "Australia",
          "Aruba",
          "Azerbaijan",
          "Bosnia and Herzegovina",
          "Barbados",
          "Bangladesh",
          "Belgium",
          "Burkina Faso",
          "Bulgaria",
          "Bahrain",
          "Burundi",
          "Benin",
          "Bermuda",
          "Brunei Darussalam",
          "Bolivia, Plurinational State of",
          "Bonaire, Sint Eustatius and Saba",
          "Brazil",
          "Bahamas",
          "Bhutan",
          "Bouvet Island",
          "Botswana",
          "Belarus",
          "Belize",
          "Canada",
          "Cocos (Keeling) Islands",
          "Congo, The Democratic Republic of the",
          "Central African Republic",
          "Congo",
          "Switzerland",
          "Côte d'Ivoire",
          "Cook Islands",
          "Chile",
          "Cameroon",
          "China",
          "Colombia",
          "Costa Rica",
          "Cabo Verde",
          "Curaçao",
          "Christmas Island",
          "Cyprus",
          "Czechia",
          "Germany",
          "Djibouti",
          "Denmark",
          "Dominica",
          "Dominican Republic",
          "Algeria",
          "Ecuador",
          "Estonia",
          "Egypt",
          "Western Sahara",
          "Eritrea",
          "Spain",
          "Ethiopia",
          "Finland",
          "Fiji",
          "Falkland Islands (Malvinas)",
          "Micronesia, Federated States of",
          "Faroe Islands",
          "France",
          "Gabon",
          "United Kingdom",
          "Grenada",
          "Georgia",
          "French Guiana",
          "Guernsey",
          "Ghana",
          "Gibraltar",
          "Greenland",
          "Gambia",
          "Guinea",
          "Guadeloupe",
          "Equatorial Guinea",
          "Greece",
          "South Georgia and the South Sandwich Islands",
          "Guatemala",
          "Guam",
          "Guinea-Bissau",
          "Guyana",
          "Hong Kong",
          "Heard Island and McDonald Islands",
          "Honduras",
          "Croatia",
          "Haiti",
          "Hungary",
          "Indonesia",
          "Ireland",
          "Israel",
          "Isle of Man",
          "India",
          "British Indian Ocean Territory",
          "Iraq",
          "Iceland",
          "Italy",
          "Jersey",
          "Jamaica",
          "Jordan",
          "Japan",
          "Kenya",
          "Kyrgyzstan",
          "Cambodia",
          "Kiribati",
          "Comoros",
          "Saint Kitts and Nevis",
          "Korea, Republic of",
          "Kuwait",
          "Cayman Islands",
          "Kazakhstan",
          "Lao People's Democratic Republic",
          "Lebanon",
          "Saint Lucia",
          "Liechtenstein",
          "Sri Lanka",
          "Liberia",
          "Lesotho",
          "Lithuania",
          "Luxembourg",
          "Latvia",
          "Libya",
          "Morocco",
          "Monaco",
          "Moldova, Republic of",
          "Montenegro",
          "Madagascar",
          "Marshall Islands",
          "North Macedonia",
          "Mali",
          "Myanmar",
          "Mongolia",
          "Macao",
          "Northern Mariana Islands",
          "Martinique",
          "Mauritania",
          "Montserrat",
          "Malta",
          "Mauritius",
          "Maldives",
          "Malawi",
          "Mexico",
          "Malaysia",
          "Mozambique",
          "Namibia",
          "New Caledonia",
          "Niger",
          "Norfolk Island",
          "Nigeria",
          "Nicaragua",
          "Netherlands",
          "Norway",
          "Nepal",
          "Nauru",
          "Niue",
          "New Zealand",
          "Oman",
          "Panama",
          "Peru",
          "French Polynesia",
          "Papua New Guinea",
          "Philippines",
          "Pakistan",
          "Poland",
          "Saint Pierre and Miquelon",
          "Pitcairn",
          "Puerto Rico",
          "Palestine, State of",
          "Portugal",
          "Palau",
          "Paraguay",
          "Qatar",
          "Réunion",
          "Romania",
          "Rwanda",
          "Saudi Arabia",
          "Solomon Islands",
          "Seychelles",
          "Sweden",
          "Singapore",
          "Saint Helena, Ascension and Tristan da Cunha",
          "Slovenia",
          "Svalbard and Jan Mayen",
          "Slovakia",
          "Sierra Leone",
          "San Marino",
          "Senegal",
          "Somalia",
          "Suriname",
          "Sao Tome and Principe",
          "El Salvador",
          "Sint Maarten (Dutch part)",
          "Eswatini",
          "Turks and Caicos Islands",
          "Chad",
          "French Southern Territories",
          "Togo",
          "Thailand",
          "Tajikistan",
          "Tokelau",
          "Timor-Leste",
          "Turkmenistan",
          "Tunisia",
          "Tonga",
          "Türkiye",
          "Trinidad and Tobago",
          "Tuvalu",
          "Taiwan, Province of China",
          "Tanzania, United Republic of",
          "Ukraine",
          "Uganda",
          "United States Minor Outlying Islands",
          "United States",
          "Uruguay",
          "Uzbekistan",
          "Holy See (Vatican City State)",
          "Saint Vincent and the Grenadines",
          "Venezuela, Bolivarian Republic of",
          "Virgin Islands, British",
          "Virgin Islands, U.S.",
          "Viet Nam",
          "Vanuatu",
          "Wallis and Futuna",
          "Samoa",
          "Yemen",
          "Mayotte",
          "South Africa",
          "Zambia",
          "Zimbabwe"
        ],
        "type": "string"
      },
      "prefill": [
        "US"
      ],
      "title": "Countries",
      "type": "array"
    },
    "dateFrom": {
      "description": "Only return ads first shown on or after this date (YYYY-MM-DD).",
      "editor": "datepicker",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "title": "First shown on/after (YYYY-MM-DD)",
      "type": "string"
    },
    "dateTo": {
      "description": "Only return ads last shown on or before this date (YYYY-MM-DD).",
      "editor": "datepicker",
      "pattern": "^\\d{4}-\\d{2}-\\d{2}$",
      "title": "First shown on/before (YYYY-MM-DD)",
      "type": "string"
    },
    "includeVideoDetails": {
      "default": false,
      "description": "Fetch the ad detail page for each ad to resolve the video URL and format (slower, but gives the actual video asset for video ads).",
      "prefill": false,
      "title": "Include video details",
      "type": "boolean"
    },
    "maxAdvertisersPerTerm": {
      "default": 5,
      "description": "Maximum advertisers to scrape per keyword (when searchTerms is used).",
      "maximum": 50,
      "minimum": 1,
      "prefill": 5,
      "title": "Max advertisers per search term",
      "type": "integer"
    },
    "maxConcurrency": {
      "default": 2,
      "description": "Advertisers scraped in parallel. Higher is faster but increases rate-limit risk.",
      "maximum": 5,
      "minimum": 1,
      "prefill": 2,
      "title": "Max concurrency",
      "type": "integer"
    },
    "maxItems": {
      "default": 100,
      "description": "Hard cap on total ad records returned (1-5000).",
      "maximum": 5000,
      "minimum": 1,
      "prefill": 50,
      "title": "Max items",
      "type": "integer"
    },
    "outputFormat": {
      "default": "json",
      "description": "Dataset always receives JSON records. Additionally export results as CSV, Excel, or HTML in the key-value store (OUTPUT.csv / OUTPUT.xlsx / OUTPUT.html).",
      "editor": "select",
      "enum": [
        "json",
        "csv",
        "excel",
        "html"
      ],
      "enumTitles": [
        "JSON (dataset only)",
        "CSV (OUTPUT.csv)",
        "Excel (OUTPUT.xlsx)",
        "HTML (OUTPUT.html)"
      ],
      "prefill": "json",
      "title": "Output format",
      "type": "string"
    },
    "proxyConfiguration": {
      "description": "Optional proxy. For moderate traffic no proxy is needed. Enable Apify proxy for high-volume scraping.",
      "editor": "proxy",
      "title": "Proxy Configuration",
      "type": "object"
    },
    "searchTerms": {
      "description": "Keywords or domain names to discover advertisers, then scrape their YouTube ads (e.g. 'electric car', 'nike.com').",
      "editor": "stringList",
      "items": {
        "type": "string"
      },
      "prefill": [
        "electric car"
      ],
      "title": "Search Terms (keywords)",
      "type": "array"
    }
  },
  "schemaVersion": 1,
  "title": "YouTube Ads Scraper Input",
  "type": "object"
}

Output schema

Published result links and storage locations. This schema is not an exhaustive contract for every field in a dataset record.

FieldTypeRequiredDescription
adsstringoptionalDataset containing all scraped YouTube ad creative records.

Download the published output schema

View complete JSON
{
  "actorOutputSchemaVersion": 1,
  "description": "YouTube ad creative records with advertiser, country, format, thumbnail, and first/last-shown dates, sourced from the Google Ads Transparency Center.",
  "properties": {
    "ads": {
      "description": "Dataset containing all scraped YouTube ad creative records.",
      "template": "{{links.apiDefaultDatasetUrl}}/items",
      "title": "YouTube ad creatives",
      "type": "string"
    }
  },
  "title": "YouTube Ad Creative & Advertiser Tracker Output"
}

Dataset schema

Published dataset views and any declared field definitions. A view can select only a subset of the returned record fields.

Download the published dataset schema

View complete JSON
{
  "actorSpecification": 1,
  "fields": {
    "properties": {
      "adCount": {
        "description": "Advertiser total ad count",
        "type": [
          "integer",
          "null"
        ]
      },
      "adId": {
        "description": "Google creative ID (CR...)",
        "type": [
          "string",
          "null"
        ]
      },
      "advertiserId": {
        "description": "Google advertiser ID (AR...)",
        "type": [
          "string",
          "null"
        ]
      },
      "advertiserName": {
        "description": "Advertiser display name",
        "type": [
          "string",
          "null"
        ]
      },
      "countryCode": {
        "description": "Advertiser country (ISO-2)",
        "type": [
          "string",
          "null"
        ]
      },
      "firstShown": {
        "description": "First shown date (ISO 8601)",
        "type": [
          "string",
          "null"
        ]
      },
      "format": {
        "description": "Ad format: VIDEO / IMAGE / TEXT",
        "type": [
          "string",
          "null"
        ]
      },
      "imageHeight": {
        "description": "Media height in pixels",
        "type": [
          "integer",
          "null"
        ]
      },
      "imageUrl": {
        "description": "Ad thumbnail / image URL",
        "type": [
          "string",
          "null"
        ]
      },
      "imageWidth": {
        "description": "Media width in pixels",
        "type": [
          "integer",
          "null"
        ]
      },
      "lastShown": {
        "description": "Last shown date (ISO 8601)",
        "type": [
          "string",
          "null"
        ]
      },
      "mediaType": {
        "description": "image / video / text / unknown",
        "type": [
          "string",
          "null"
        ]
      },
      "scrapedAt": {
        "description": "ISO 8601 scrape timestamp",
        "type": [
          "string",
          "null"
        ]
      },
      "searchTerm": {
        "description": "Keyword that discovered this ad (search mode)",
        "type": [
          "string",
          "null"
        ]
      },
      "sourceUrl": {
        "description": "Ads Transparency Center detail URL",
        "type": [
          "string",
          "null"
        ]
      },
      "type": {
        "description": "ad or advertiser",
        "type": [
          "string",
          "null"
        ]
      },
      "videoUrl": {
        "description": "Resolved video URL (video ads, when includeVideoDetails is on)",
        "type": [
          "string",
          "null"
        ]
      }
    },
    "type": "object"
  },
  "title": "YouTube Ads",
  "views": {
    "overview": {
      "display": {
        "component": "table",
        "properties": {
          "advertiserName": {
            "format": "text",
            "label": "Advertiser"
          },
          "countryCode": {
            "format": "text",
            "label": "Country"
          },
          "firstShown": {
            "format": "text",
            "label": "First shown"
          },
          "format": {
            "format": "text",
            "label": "Format"
          },
          "imageUrl": {
            "format": "image",
            "label": "Media"
          },
          "lastShown": {
            "format": "text",
            "label": "Last shown"
          },
          "videoUrl": {
            "format": "link",
            "label": "Video"
          }
        }
      },
      "title": "YouTube Ads Overview",
      "transformation": {
        "fields": [
          "advertiserName",
          "countryCode",
          "format",
          "firstShown",
          "lastShown",
          "imageUrl",
          "videoUrl"
        ]
      }
    }
  }
}

Key-value schema

Published key-value store definitions, when provided by this build.

This definition is not present in the default published build. See the published README for available documentation.

Published README

Read the full published documentation

YouTube Ad Creative & Advertiser Tracker

Pull the ad creatives a brand is actually running on YouTube, straight from Google's public Ads Transparency Center. Hand it a keyword, an advertiser name, or an advertiser AR-ID and get back every matching ad creative with its thumbnail, format, country, and the dates it was first and last shown.

What this actor does

  • Two ways in: pass advertiser names/AR-IDs directly, or give keywords and let the actor discover matching advertisers first
  • YouTube-scoped: every creative returned was served on YouTube, not Google's wider display network
  • Country and date filters: narrow by ISO-2 country code and by first-shown date window
  • Multiple export formats: dataset JSON always, plus optional CSV, Excel, or HTML written to the key-value store
  • Empty fields are omitted — a record only carries the values Google actually returned for that creative

Output per ad creative

  • adId — the creative's unique ID (e.g. CR09196456782480801793)
  • advertiserId — the advertiser's AR-ID
  • advertiserName — advertiser display name
  • countryCode — ISO-2 country this creative was matched under (omitted when advertisers were passed directly by AR-ID)
  • format — VIDEO or IMAGE
  • mediaType — video or image
  • imageUrl, imageWidth, imageHeight — the creative's thumbnail/preview image and its dimensions
  • videoUrl — resolved playable video URL, only present when includeVideoDetails is enabled and Google exposes it
  • firstShown, lastShown — timestamps the creative was first and most recently observed running
  • adCount — total creative count Google reports for the advertiser at query time
  • searchTerm — the keyword that surfaced this advertiser (present only for keyword-discovered results)
  • sourceUrl — the Ads Transparency Center page for this exact creative
  • scrapedAt — when the actor fetched the record

When no ad creatives match the input at all, the dataset instead gets a single status row (recordType: "status", status: "no_ads_found") echoing back the searchTerms/countries/dateFrom/dateTo that were tried, so an empty dataset always comes with an explanation.

Input

Field Type Default Description
advertisers array — Advertiser names or AR-IDs to pull ads for directly (e.g. Nike, Inc., AR16735076323512287233).
searchTerms array – Keywords used to discover advertisers before pulling their ads.
countries array – ISO-2 country codes to match advertisers against. Leave empty for all countries.
dateFrom string — Keep only creatives first shown on or after this YYYY-MM-DD date.
dateTo string — Keep only creatives first shown on or before this YYYY-MM-DD date.
includeVideoDetails boolean false Also fetch each creative's detail page to try to resolve a playable video URL.
maxAdvertisersPerTerm integer 5 Advertisers to pull per keyword in searchTerms (1–50).
maxItems integer 100 Hard cap on total ad creative records returned (1–5000).
maxConcurrency integer 2 Advertisers processed in parallel (1–5).
outputFormat string json Also export to the key-value store as OUTPUT.csv, OUTPUT.xlsx, or OUTPUT.html.
proxyConfiguration object — Optional Apify proxy for higher-volume runs.

At least one of advertisers or searchTerms is required.

Example: discover advertisers by keyword

{
  "searchTerms": ["electric car"],
  "countries": ["US"],
  "maxAdvertisersPerTerm": 5,
  "maxItems": 50
}

Example: pull a known advertiser's creatives directly

{
  "advertisers": ["AR16735076323512287233"],
  "countries": ["US", "GB"],
  "maxItems": 40
}

Example: narrow window with resolved video URLs

{
  "searchTerms": ["nike"],
  "dateFrom": "2026-01-01",
  "dateTo": "2026-03-31",
  "includeVideoDetails": true,
  "outputFormat": "csv"
}

Use cases

  • Competitive ad monitoring — see which creatives a rival brand is currently running on YouTube
  • Creative swipe files — collect thumbnails and formats from an industry to spot creative trends
  • Flight tracking — watch firstShown/lastShown to know when a competitor's campaign started or stopped
  • Agency reporting — export a client's or competitor's ad library to CSV/Excel for a deck
  • Market scans — run a keyword across multiple countries to see who is advertising where

FAQ

Where does this data come from? Google's own public Ads Transparency Center, filtered to creatives shown on YouTube — the same tool anyone can browse at adstransparency.google.com.

Do I need an API key, login, or cookies? No. The Transparency Center is public and the actor reads it without any authentication.

Why is there no YouTube video ID or embeddable video for most ads? Google's Transparency Center does not publish the underlying YouTube video ID for most creatives, only a thumbnail and the ad's detail page. Enabling includeVideoDetails resolves a playable video URL when Google's detail page exposes one.

Why is countryCode missing on some records? It's only populated when an advertiser was found through keyword search. When you pass an advertiser AR-ID directly, Google's API doesn't expose that advertiser's country, so the field is left out.

How far back does the data go? Google's Transparency Center indexes ads from September 2023 onward, and it isn't a complete archive — older or very low-volume creatives may not appear.

Is there a limit on how many creatives one advertiser can return? Yes, Google's own library caps each advertiser's results at roughly 40 creatives per query; the actor returns the most recent ones and deduplicates by adId across repeated queries.

What's the difference between the advertisers and searchTerms inputs? advertisers goes straight to a known advertiser's ad library. searchTerms runs a keyword search first to find matching advertisers, then pulls each one's ads — useful when you don't already know the advertiser's exact name or AR-ID.

Is this affiliated with Google or YouTube? No. This is an independent actor that reads Google's publicly available Ads Transparency Center data.

Python quickstart

Use a schema-derived input and the Python standard library to start a run. An Apify account and token are required for execution.

Open the step-by-step Python guide →

Source build 5d8QxabyrsPwre1lD. Documentation is regenerated from the default published build; private drafts are not included.