Every ad an advertiser runs on Google: Search, YouTube, Shopping, Maps and Play. Search by advertiser, domain or brand; filter by country, platform, format and date. Each ad: first and last shown, days shown, preview image; details add countries, EU impressions and audience targeting.
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.