Skip to content

logiover/competitor-ad-intelligence

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Competitor Ad Intelligence Scraper — Spy on Rivals' Google Ads (No API Key)

Apify Actor Run on Apify No API key Pay per result Export

▶️ Run Competitor Ad Intelligence on Apify →

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.


✨ What you get

Every run produces two kinds of rows, tagged by a rowType field:

  • A per-brand strategy summaryestimatedActiveAds, adsAnalyzed, formatMix, dominantFormats, newestCreativeDate, oldestCreativeDate, and a human-readable strategySummary you can paste straight into a slide.
  • Individual creative rows — one per sampled ad, with format, dimensions (width / height), previewUrl, transparencyUrl, firstShown, lastShown, daysRunning and an isActive flag.

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 previewUrl and Google transparencyUrl links 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.

💡 Use cases

  • 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.

🚀 Quick start

1) Apify Console (no code)

  1. Open the Actor: apify.com/logiover/competitor-ad-intelligence
  2. Click Try for free.
  3. 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.
  4. Read the strategySummary in the Output tab, or Export to JSON / CSV / Excel.

2) Apify CLI

npm i -g apify-cli
apify login
apify call logiover/competitor-ad-intelligence \
  --input '{ "brands": ["Nike", "HubSpot"], "region": "US", "maxAdsPerBrand": 60 }'

3) API / cURL

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 }'

4) JavaScript (apify-client)

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);

5) Python (apify-client)

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/.

📥 Input

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. region and format are dropdowns in the Console.

📤 Output

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.

Fields

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.

Sample JSON

[
  {
    "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"
  }
]

🔌 Integrations & automation

  • 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.

📦 Export formats

CSV · JSON · JSONL · Excel (XLSX) · XML — from the Console Export button or the Apify API.

❓ FAQ

How do I see what ads a competitor is running on Google?

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.

Is there a Google Ads Transparency API — and is this an API alternative?

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.

Do I need an API key or a login?

No. Just enter brand names or domains and run. Only an Apify account is required — no ad-platform token, login or cookie.

Is it legal to spy on competitor ads?

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.

Can I search by domain instead of brand name?

Yes — use the domains field. Brand names in brands are auto-resolved to advertiser IDs; domains are searched directly. You can combine both.

How do I export competitor ad data to CSV or Excel?

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.

How many results / how much data can I get?

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.

Can I compare several competitors at once?

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.

Can I filter to only video (or only image) ads?

Yes. Set format to VIDEO, IMAGE, TEXT or DISPLAY to restrict the analysis to a single creative format, or leave it all.

Can I run it on a schedule?

Yes — schedule recurring runs to track competitors' ad activity, format mix and creative freshness over time, and diff datasets to catch new campaigns.

🔗 Related actors by logiover

👉 Browse all logiover scrapers on Apify Store.


📄 Documentation only — this repository contains no scraper source code. The Actor runs on the Apify platform. ▶️ Run it: apify.com/logiover/competitor-ad-intelligence

Licensed under the MIT License · © 2026 logiover

About

Competitor Ad Intelligence scraper — spy on rivals' Google ads: active-ad volume, creative format mix & strategy report. No API key, export CSV/JSON. Docs for the Apify Actor.

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors