Two advertiser folders hold creative cards, source pointers, and dated observation markers.
Keep creative identity and dated source evidence together.

Domain searches can match several different advertiser accounts. Check advertiser identity and keep unknown values. A later unavailable link does not prove that Google deleted the ad.

Definitions

  • Creative: One public ad item. It is not a campaign.
  • Advertiser ID: Google's account identity for an advertiser.
  • Creative ID: Google's identity for a creative under an advertiser.
  • Observation: A record of a creative at collection time.
  • Pointer: A link to a remote media or preview resource.
  • Manifest: A collection settings and summary file.
  • Variation: A media or preview item inside one creative record. It is not necessarily a separate ad test.
  • Preview: A source resource used to show a creative. It can require rendering and is not always a downloadable file.
  • Actor: A hosted data collection program.
  • Published Task: A saved public Actor setup.
  • **`null`**: No usable value is available. It is not zero.

Collection Setup and Scope

To collect creative data, configure an Actor such as the public Google Ads Transparency Scraper. The Actor accepts one to one hundred targets, which can be names, domains, IDs, advertiser URLs, or creative URLs. The `maxItems` setting ranges from one to five thousand, with a default of ten shared across all targets.

The published task defaults to `nike.com`, region `ANYWHERE`, platform `ALL`, ad format `ALL`, delivery details off, and a cap of twenty items Google Ads Creative Library Export | Ads Data. Domain searches can match multiple advertiser accounts, so you must use a verified exact advertiser ID or URL when investigating one specific account. Use a domain search only if you plan to review and separate the accounts afterward. Reduce the collection cap and keep delivery details off unless your research specifically requires delivery metadata. Optional date filters accept real dates through today. Remember that a collection cap is a limit, not a complete ad history.

Field Map and Data Limits

Each saved row maps specific data fields from the source platform. The `advertiserId` and `creativeId` form a unique creative identity pair. You must never identify an account by brand name alone. The `creativeUrl` points to the public source detail page. Both `mediaUrl` and `previewUrl` are remote source pointers that can return `null`, and a preview can be a JavaScript resource rather than a direct file. The `variations` list and `variationCount` record nested child assets with their URLs and dimensions, but these child assets are not independent campaign variants.

The `firstShownAt` and `lastShownAt` fields provide public shown dates when available, but they do not guarantee continuous delivery or collection time. The `approxDaysShown` field is an approximate source value and must not be turned into exact continuous days, ad spend, or campaign success. The `observedAt` timestamp records when the Actor collected the record. Requested region, platform, and format fields provide collection context rather than a complete list of served locations. The `status` and `statusReason` fields indicate row quality, where `ok` means successful collection and `partial` can mean a missing format. Optional payer fields may be absent or turned off, and a payer is not necessarily the advertiser. Furthermore, Google's source repository can expose location-specific fields that this Actor does not return Google Ads transparency Help.

Observation Keys and Reader-Made Manifests

Advertiser and creative IDs must be treated as a pair because the same creative ID under two different advertisers represents two distinct identities. The Actor removes duplicates of this pair only within a single run, whereas later runs retain a new observation. Because the Actor row does not supply a run ID, you must create reader-made fields.

Create a reader-made `collection_batch_id` for your batch grouping. Retain the actual run ID, build version, dataset identity, collection settings, collection times, and run summary in a separate reader-made collection manifest. Your suggested observation key combines the batch ID, advertiser ID, and creative ID. Keep your internal run receipts separate from your final evidence report.

JSON Data Storage and Variations

JSON is a text data format that preserves structured hierarchies. Full JSON files preserve nested variations, whereas a CSV export is only an optional flat table view. One parent observation row can contain nested variation rows, but those child variations are not separate creative or campaign tests. Always preserve `null` values instead of replacing them with zero or invented data. A display library is a derived view, meaning you must always preserve your original observation files underneath it.

Complete Collection and Retention Method

  1. Configure your target scope, region, public date window, and item cap. Use a verified exact advertiser ID or URL when investigating one specific account, and use domain searches only with post-collection review. Keep delivery details off unless required.
  2. Execute the Actor run Google Ads Transparency Scraper using settings from the published task Google Ads Creative Library Export | Ads Data.
  3. Record your collection setup in a reader-made manifest. Store the run ID, build version, dataset identity, collection settings, collection times, and run summary separately from your public evidence report.
  4. Inspect OUTPUT summary fields including `creativesSaved`, `duplicatesSkipped`, `unusableCreativesSkipped`, `stopReason`, and `targetOutcomes`. Keep partial records, failed targets, zero results, and cap stops distinct. Remember that an empty or reduced output dataset cannot prove an advertiser ran no ads.
  5. Apply the exact acceptance rule: require nonblank `advertiserId`, `creativeId`, `creativeUrl`, and `observedAt` for an identified observation. Review the `status` and `statusReason` fields. Preserve explicit missing `mediaUrl` or `previewUrl` values; do not turn `null` into zero or invent a link. Quarantine rows with missing identity into a separate review file instead of merging blanks.
  6. Create reader-made columns separate from Actor fields. Assign a reader-made `collection_batch_id` and build your observation key by combining the batch ID, advertiser ID, and creative ID.
  7. Store full JSON observation files to preserve nested variations. Retain child variation records under their parent observation row without counting child assets as independent creative or campaign tests.
  8. Perform and record separate independent link checks with check time, pointer type, method, and result. Preserve earlier pointers when new pointers arrive, and keep observation records even when remote links become unavailable.
  9. Append later collection batches without replacing your earlier observation files. Retain historical records alongside your derived latest-view display.
  10. Deliver your finalized source library, collection manifest, dated link-check records, and derived latest view to the reporting step. Use the original advertiser and creative ID pair to find the source again, stopping before any creative scoring or campaign recommendations.

Independent Link Checks and HTTP HEAD Requests

Create a separate link-check record containing the parent identity and batch, pointer type, check time, method, and result. An HTTP HEAD request asks a server only for response headers rather than file content. Rendering means successfully displaying a preview inside a browser. A 200 HTTP response code means the resource answered at that check, but an `image/png` response differs from an `application/javascript` response.

None of these responses prove a rendered image, permanent file archival, reuse rights, or lasting availability. The small metadata check from October 13, 2026, saved two `ok` observations from two accounts, but header checks only proved dated responses rather than repeated history or full coverage. Downloading assets and rendering previews are outside the scope of this source-link method.

Appending Later Batches and Handling Unavailable Pointers

Append later batches without replacing your earlier observation files. A current display can show the latest observation per identity pair, but it must link back to historical records. When an old pointer fails, retain its source record, record the failed check, and inspect the public source page during a later authorized review if needed. One failed pointer or an absent capped observation does not prove that an ad was deleted. Do not guess URLs or attempt to recover deleted ads. Because no repeated-run or long-term tests were performed, the example teaches retention reasoning only.

Fictional Example and Count Analysis

All records and IDs in this example are fictional. A/B/C1/C2 are teaching labels and not real source fixtures. No media files are downloaded.

Fictional Example and Count Analysis
BatchAdvertiserCreativeVariationsLink situation
S1AC12media pointer available at fictional check October1 2026 12:05 UTC
S1AC21preview pointer available at that check
S1BC11media pointer available at that check
S2AC11new pointer available at fictional check October2 2026 12:05 UTC; keep S1 pointer
S2AC21pointer unavailable at that later check; retain observation

This collection yields 5 observation rows, calculated as 3 rows in batch S1 plus 2 rows in batch S2 (3 + 2 = 5). There are 3 unique creative identity pairs: A:C1, A:C2, and B:C1. Summing the variation counts across all retained rows gives 6 variation observations, calculated as 2 plus 1 plus 1 plus 1 plus 1 (2 + 1 + 1 + 1 + 1 = 6). These variation observations are child assets within parent records, not 6 unique creatives or separate ad tests.

A latest-per-identity view contains 3 rows matching the 3 unique identities, featuring two dated available link checks and one unavailable check. Advertiser B:C1 remains represented by its S1 observation, and its absence from batch S2 does not prove ad deletion. All 5 observations must be kept in the library. This record retention preserves evidence records and pointers without claiming complete ad history, permanent media file storage, ad success, or live repeated-run test outcomes.

Public visibility does not grant a general reuse permission Google Terms: Other content. This method retains source records and pointers; downloading or republishing assets is outside this source-link workflow.

Sources & further reading

By Chronometrica · Updated

Back to top ↑