See exactly what ads your competitors are running on Google — in one report. Enter a competitor brand name or domain and get their active-ad volume, creative format mix (image / video / display / text), newest creatives, sample previews with preview and transparency links, and a plain-English ad-strategy summary. This competitor ad intelligence scraper turns Google's public advertising transparency data into a decision-ready competitive audit — with no API key, no login, no cookies, and thousands of data rows per run.
This repository is the documentation and usage guide for the hosted Apify Actor. The Actor itself runs entirely on the Apify platform — nothing to install, no source to build. Just open it, add a brand, and export the report.
Every run produces two kinds of rows, tagged by a rowType field:
- A per-brand strategy summary —
estimatedActiveAds,adsAnalyzed,formatMix,dominantFormats,newestCreativeDate,oldestCreativeDate, and a human-readablestrategySummaryyou can paste straight into a slide. - Individual creative rows — one per sampled ad, with
format,dimensions(width/height),previewUrl,transparencyUrl,firstShown,lastShown,daysRunningand anisActiveflag.
Output highlights:
- 🎯 Brand → strategy report — type a competitor's name and get a playbook, not just a raw ad dump.
- 📊 Creative format mix — read a rival's channel strategy at a glance (image vs. video vs. display vs. text).
- 🔥 Freshness signals — newest and oldest creative dates plus days-running per ad tell you how aggressive and current their advertising is.
- 🖼️ Sample creatives — direct
previewUrland GoogletransparencyUrllinks per ad. - 🧾 Estimated active-ad volume — how many ads the advertiser is running right now (range).
- 🌍 Region targeting — focus on one country or search worldwide.
- 🧠 Auto brand resolution — brand names resolve to advertiser IDs automatically, or search directly by domain.
- 🔑 Key-free — no token, no login, no cookie, no fragile page scraping.
- Pre-launch competitor recon — check how many ads a rival runs and in what formats before you spend a dollar on a campaign.
- Monthly competitive ad report — track competitors' active-ad volume and creative mix over time on a schedule.
- Creative inspiration & swipe file — pull a competitor's live creatives (with preview URLs) to brief designers and copywriters.
- Category benchmark — run 10 brands in one job and rank who is advertising hardest and in which formats.
- Media-buying budget prep — read a rival's format mix before allocating spend across search, display and video.
- Agency new-business pitches — build a competitive ad-audit slide in minutes for a prospect deck.
- Ad creative trend tracking — monitor which formats a brand is leaning into quarter over quarter.
- Brand & trademark monitoring — see who is advertising against a brand name or domain.
- Open the Actor: apify.com/logiover/competitor-ad-intelligence
- Click Try for free.
- Add one or more competitor brand names (e.g.
Nike,HubSpot) and/or domains (nike.com), pick a region, then click Start. Running with the default input returns a working report out of the box. - Read the
strategySummaryin the Output tab, or Export to JSON / CSV / Excel.
npm i -g apify-cli
apify login
apify call logiover/competitor-ad-intelligence \
--input '{ "brands": ["Nike", "HubSpot"], "region": "US", "maxAdsPerBrand": 60 }'curl -X POST "https://api.apify.com/v2/acts/logiover~competitor-ad-intelligence/run-sync-get-dataset-items?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{ "brands": ["Nike", "HubSpot"], "region": "US", "maxAdsPerBrand": 60 }'import { ApifyClient } from 'apify-client';
const client = new ApifyClient({ token: 'YOUR_TOKEN' });
const run = await client.actor('logiover/competitor-ad-intelligence').call({
brands: ['Nike', 'HubSpot'],
region: 'US',
maxAdsPerBrand: 60,
});
const { items } = await client.dataset(run.defaultDatasetId).listItems();
console.log(items);from apify_client import ApifyClient
client = ApifyClient("YOUR_TOKEN")
run = client.actor("logiover/competitor-ad-intelligence").call(run_input={
"brands": ["Nike", "HubSpot"],
"region": "US",
"maxAdsPerBrand": 60,
})
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
print(item.get("brand"), item.get("rowType"), item.get("strategySummary") or item.get("format"))More detailed snippets live in examples/.
All fields are optional. Supply at least one brands entry and/or one domains entry; leave everything empty to analyze a popular default brand.
| Field | Type | Default | Description |
|---|---|---|---|
brands |
array (string list) | ["Nike", "HubSpot"] |
Competitor / advertiser brand names to analyze; resolved automatically to advertiser IDs. |
domains |
array (string list) | — | Alternatively (or additionally), search ads by advertiser domain, e.g. nike.com. |
region |
string (dropdown) | anywhere |
Country to search ads in — anywhere (worldwide) or an ISO code such as US, GB, DE, FR, TR, CA, AU, BR, IN, JP … (41 countries). |
format |
string (dropdown) | all |
Restrict to one creative format: all, IMAGE, VIDEO, TEXT, or DISPLAY. |
maxAdsPerBrand |
integer | 60 |
Sample size per competitor for the format-mix analysis. Min 10, max 300. |
Tip: Add several brands or domains in a single run to benchmark a whole category and see who is advertising hardest and in which formats.
regionandformatare dropdowns in the Console.
The dataset contains a per-brand summary row plus individual ad rows, distinguished by rowType. Every run is exportable to JSON, CSV, JSONL, Excel or XML.
| Field | Row type | Description |
|---|---|---|
rowType |
both | summary (per-brand report) or ad (individual creative). |
brand |
both | Advertiser / competitor brand name (auto-resolved from input). |
domain |
summary | Advertiser domain. |
advertiserId |
summary | Advertiser ID. |
advertiserDomain / advertiserCountry |
ad | Advertiser domain and registered country code for the creative. |
regionSearched |
both | Region the ads were searched in. |
estimatedActiveAds |
summary | Reported active-ad count range for the advertiser (e.g. 8000-9000). |
adsAnalyzed |
summary | How many creatives were pulled into the analysis. |
recentlyActiveAds |
summary | How many analyzed creatives ran in the last 30 days. |
formatMix |
summary | Count of analyzed creatives per format (object). |
dominantFormats |
summary | Formats ordered by frequency (array). |
newestCreativeDate / oldestCreativeDate |
summary | Freshness window of sampled creatives. |
strategySummary |
summary | Plain-English competitor ad-strategy summary. |
rank |
ad | Position of this creative within the analyzed sample. |
creativeId |
ad | Creative ID. |
format |
ad | Creative format: IMAGE / VIDEO / TEXT / DISPLAY / UNKNOWN. |
dimensions / width / height |
ad | Creative dimensions (e.g. 300x250) and pixel size. |
previewUrl |
ad | Direct URL to the creative preview. |
transparencyUrl |
ad | Ad transparency page for the creative or advertiser. |
firstShown / lastShown |
ad | Dates the creative was first and last shown (YYYY-MM-DD). |
daysRunning |
ad | Days between first and last shown. |
isActive |
ad | true if the creative ran within the last 30 days. |
scrapedAt |
both | ISO timestamp when the report was compiled. |
[
{
"rowType": "summary",
"brand": "Nike, Inc.",
"domain": "nike.com",
"regionSearched": "US",
"estimatedActiveAds": "8000-9000",
"adsAnalyzed": 60,
"recentlyActiveAds": 44,
"formatMix": { "IMAGE": 52, "DISPLAY": 8, "VIDEO": 0, "TEXT": 0 },
"dominantFormats": ["IMAGE", "DISPLAY"],
"newestCreativeDate": "2026-05-30",
"oldestCreativeDate": "2025-11-02",
"strategySummary": "Nike, Inc. is running roughly 8000-9000 ads on Google. Creative mix is led by IMAGE + DISPLAY. Most recent creative seen 2026-05-30.",
"scrapedAt": "2026-07-12T08:30:11.000Z"
},
{
"rowType": "ad",
"brand": "Nike, Inc.",
"rank": 1,
"format": "IMAGE",
"dimensions": "300x250",
"width": 300,
"height": 250,
"previewUrl": "https://adstransparency.google.com/advertiser/AR.../creative/CR...",
"transparencyUrl": "https://adstransparency.google.com/advertiser/AR...",
"firstShown": "2026-04-11",
"lastShown": "2026-05-30",
"daysRunning": 49,
"isActive": true,
"scrapedAt": "2026-07-12T08:30:11.000Z"
}
]- Schedules — run on a schedule (weekly / monthly) to track competitors' ad volume, format mix and creative freshness over time, then diff datasets to spot new campaigns.
- Webhooks — fire an Apify webhook on run completion to notify Slack or trigger a downstream job.
- Google Sheets / Amazon S3 / databases — push the dataset to Sheets, S3 or your own DB through Apify integrations.
- Zapier · Make · n8n · Pipedream — feed a competitive-intelligence dashboard or automated client-reporting pipeline.
- API access — pull results in JSON, CSV, XLSX or JSONL via the Apify dataset API.
CSV · JSON · JSONL · Excel (XLSX) · XML — from the Console Export button or the Apify API.
Enter the competitor's brand name or domain and the Actor compiles a report showing their active-ad volume, creative format mix and newest creatives, plus per-creative preview and transparency links.
There is no official public API for this data, so the Actor acts as an unofficial ad transparency API alternative — it returns clean, structured JSON with no key, login or cookie.
No. Just enter brand names or domains and run. Only an Apify account is required — no ad-platform token, login or cookie.
The Actor reads only publicly available advertising-transparency data that is published specifically for public transparency. You remain responsible for complying with the source platform's terms and applicable laws.
Yes — use the domains field. Brand names in brands are auto-resolved to advertiser IDs; domains are searched directly. You can combine both.
Every run writes a clean dataset you can export to CSV, Excel, JSON or JSONL, or pull via the Apify API — the per-brand summary plus every sampled creative with its format, preview URL and dates.
Set maxAdsPerBrand up to 300 creatives sampled per competitor, and add as many brands/domains as you like in one run. The summary also reports the estimated total active-ad volume, which can run into the thousands.
Yes. Add multiple brands or domains in one run — each produces its own compiled report, so you can benchmark a whole category in a single job.
Yes. Set format to VIDEO, IMAGE, TEXT or DISPLAY to restrict the analysis to a single creative format, or leave it all.
Yes — schedule recurring runs to track competitors' ad activity, format mix and creative freshness over time, and diff datasets to catch new campaigns.
- Meta Ad Library Scraper — Facebook & Instagram ads, spend & impressions for cross-platform ad intelligence.
- Company Deep Research Scraper — compiled company intelligence dossier to pair with a competitor's ad strategy.
👉 Browse all logiover scrapers on Apify Store.
📄 Documentation only — this repository contains no scraper source code. The Actor runs on the Apify platform.
Licensed under the MIT License · © 2026 logiover