# Changelog of Google Ads Creative & Competitor Monitor (`nexascout/google-ads-creative-competitor-monitor`) Actor

- **URL**: https://apify.com/nexascout/google-ads-creative-competitor-monitor/changelog.md
- **Full Actor documentation**: https://apify.com/nexascout/google-ads-creative-competitor-monitor.md

## Changelog

### 0.1.8

- Added pay-per-event budget detection before browser collection begins.
- Capped expensive creative-detail work and billable output to the remaining maximum cost per run.
- Stopped output immediately when the dataset-item event limit is reached.
- Added pricing-safety diagnostics to the run summary and regression tests for capped and uncapped runs.

### 0.1.6

- Removed Google's concatenated `YesVisit site` interface label before selecting the creative headline.
- Kept otherwise complete rows complete when only normal Google interface labels were filtered.
- Marked video creatives without an exposed public media asset as `PARTIAL` and documented the limitation.

### 0.1.5

- Classified text-labelled creatives as images when only preview image media is available and no usable copy was extracted.
- Removed Google ad-template placeholders and interface labels from creative copy.
- Prioritized actual `tpc.googlesyndication.com` creative assets over Google Maps interface icons.
- Marked rows as `PARTIAL` when template contamination had to be filtered.

### 0.1.4

- Classified image-only and video creatives by the media actually exposed in the public creative frame.
- Preserved Google's reported text format when usable visible ad copy was extracted.
- Switched creative-detail navigation to `DOMContentLoaded` so slow background resources do not cause false timeouts.
- Increased creative-detail retries from one to two retries.

### 0.1.3

- Filtered Closure Library license text, `_setImgSrc` payloads, and embedded Base64 content.
- Preserved human-readable ad copy appended after Google CSS selector wrappers.
- Rejected Google tracking redirects as advertiser landing pages.
- Excluded inline `data:` media from output while retaining public HTTP(S) creative assets.
- Marked medium- and low-quality rows as `PARTIAL` instead of `COMPLETE`.

### 0.1.2

- Preserved creative-frame line boundaries instead of collapsing all visible text into one line.
- Filtered Google wrapper JavaScript, CSS, and interface boilerplate from creative text fields.
- Selected the strongest nested creative frame when several Google frames are present.
- Added regression tests for polluted and collapsed wrapper payloads.

### 0.1.1

- Replaced the unsupported `multiSelect` input editor with Apify's valid `select` editor for the `adFormats` array.

### 0.1.0

- Initial Google Ads Transparency Center domain, advertiser-name, direct-advertiser, and direct-creative collection.
- Creative detail extraction with copy, media, format, dates, destination, hooks, offers, CTAs, and message themes.
- Private baseline history with new, changed, unchanged, and guarded removed-creative events.
- Optional landing-page analysis and content fingerprinting.
- MCP-friendly input/output schemas, four dataset views, run diagnostics, tests, and public Task examples.
