# Changelog of Google Ads Scraper (`autofacts/google-ads-scraper`) Actor

- **URL**: https://apify.com/autofacts/google-ads-scraper/changelog.md
- **Full Actor documentation**: https://apify.com/autofacts/google-ads-scraper.md

## Changelog

### 0.1 — unreleased

#### Added

- Ads that advertisers run on Google, by advertiser ID, domain, advertiser name or page URL, filtered by country, platform, format and date. One row per ad: advertiser, format, first and last shown, days shown, preview image.
- `includeDetails`: countries an ad ran in; for EU ads, impression ranges in total, by country and by platform, and audience selection. Charged as `ad-details`.
- `includeAdContent`: text-ad headline and description, Shopping products, YouTube video, and landing page where the preview links to one. Charged as `ad-content`, only when something is found.
- `recordType` on every row: `ad`.
- A run that Apify restarts, or that you resurrect, picks up where it left off: ads already stored are not stored or charged again, and finished searches are not run again.
- `adAccountId` and `adGroupId` on ads Google renders live; with details or content on, also on ads listed as a picture that have a rendered variation.
- `content.textStatus`, `content.displayUrl` and `content.keywordInsertions`.
- `onlyAdsWithText`: leaves out ads with no text to give; they are not stored or charged.
- A `SUMMARY` record in the run's key-value store, linked from the output: each search's Google count, ads stored, and how it ended.
- The README opens with a banner, generated with Codex from `.actor/readme-hero-v1-brief.md` and served from the key-value store `google-ads-scraper-readme`; CLAUDE.md says how to replace it.

#### Changed

- With content on, every row has a `content` object; before, it was null when nothing was found.

#### Fixed

- An ad's preview script that comes back as a block page, an empty body or a JSON error is fetched again instead of being read as an ad with nothing in it.
