Back to News & Insights
Digital Marketing October 8, 2026 · 11 min read

How to Monitor Your Competitors' Ads Automatically (Google, LinkedIn and Bing) with Apify

Step-by-step guide to tracking competitors' new ads from Google Ads Transparency Center, LinkedIn Ad Library and Microsoft Ad Library, with daily alerts, Python code and pandas analysis.

How to Monitor Your Competitors' Ads Automatically (Google, LinkedIn and Bing) with Apify

When a competitor launches a new offer, you usually see it in their ads first: a new headline, a new landing page, a new video, a webinar promo. You can watch for these yourself, because Google, LinkedIn and Microsoft all publish public ad libraries that show who is advertising and what they are running.

What these libraries don't give you is a way to say "tell me when something new shows up." This tutorial covers how to turn them into an automated feed of new competitor ads, delivered to Slack or email every morning, plus how to pull the same data with Python and analyze it with pandas.

What you'll build: A daily job that checks your competitors on Google (Search, Display, YouTube), LinkedIn and Bing Output that contains only ads that appeared since the previous run Alerts in Slack or email, or a webhook into Zapier, Make or n8n A small Python script that collects the results and counts new ads per competitor per week

Disclosure: I built the three Apify actors used in this guide. I've tried to be clear about what they can't do. Each section on limits comes straight from the actors' documentation.

Ad transparency libraries exist so the public can see who is paying to show them ads. For Europe, the EU Digital Services Act (DSA) is the main driver. It's why LinkedIn and Microsoft publish run dates, reach and targeting for ads shown in the EU. For marketers, these libraries are the most reliable public source of competitor creative, because the platforms publish the data themselves.

| | Google Ads Transparency Center | LinkedIn Ad Library | Microsoft Ad Library | |---|---|---|---| | Website | adstransparency.google.com | linkedin.com/ad-library | adlibrary.ads.microsoft.com | | Coverage | Ads on Search, YouTube, Display and Shopping, any country | Ads that ran on LinkedIn in roughly the last year | Bing / Microsoft Advertising ads with impressions in the EU/EEA only | | Who's behind it | Verified advertiser name and ID | Advertiser, "Paid for by" | Advertiser, "paid for by" (e.g. an agency) | | Dates | First and last shown | Start/end dates for EU ads | First/last impression in the EU/EEA | | Reach | Impression ranges per country (where Google shows them) | Impression range and share by country (EU ads) | Impression range and share by country | | Targeting | Not shown | Language, location and which parameters were used (EU ads) | Targeting types (Location, Age, Gender, Audiences) | | Spend / clicks | No | No | No |

The last row matters: none of these libraries publish spend or clicks for commercial ads. If a tool claims to show competitors' exact budgets from these sources, be skeptical.

You can do all of this by hand: Open each library and search for a competitor. Scroll through the results, newest first. Try to remember (or screenshot) what was there last week. Repeat for every competitor, every country and every platform.

With five competitors on three platforms you're running 15 searches, and that's before you add countries. The real problem is step 3. None of these websites tells you what's new since you last looked, so you end up eyeballing grids of creatives and comparing them from memory. Most teams do this once, maybe twice, and then stop.

Automation fixes exactly that step. A script checks every competitor on a schedule, remembers which ads it has already seen, and reports only the difference.

I'll use three actors from Apify Store. Each one wraps one library and follows the same conventions: Google Ads Transparency Scraper & New Ads Monitor: input competitor domains, advertiser IDs (AR…) or advertiser names. LinkedIn Ad Library Scraper & New Ads Monitor: input company names, keywords from ad copy, or payers. No LinkedIn login or cookies needed. Bing Ads Library Scraper – Microsoft Ads Monitor (EU): input advertiser names, advertiser IDs, or search terms. It uses Microsoft's documented public Ad Library API.

What they have in common is an "Only new ads" mode (onlyNewAds). Each actor stores the IDs of ads it has seen in a named key-value store on your Apify account. On later runs it outputs only ads it hasn't seen before. Every ad row has an isNew flag, and every competitor/search gets a free summary row with a newAdsSinceLastRun count.

Step 1: Run your first check in Apify Console Create an Apify account (the free plan includes monthly platform credit you can use to try these). Open the actor page, e.g. Google Ads Transparency Monitor, and click Try for free. Switch the input editor to JSON and paste an input (examples below). Click Start. When the run finishes, open the Output tab and export as JSON, CSV or Excel.

Useful options: regions accepts any country or "anywhere". formats filters to text, image or video. lastDays (or dateFrom/dateTo) sets a date window. extractAdContent returns ad copy and YouTube video IDs where Google exposes them. enrichDetails adds per-country dates and impression ranges.

Add "includeDetails": true to get the full ad copy, CTA, landing page, payer and, for EU ads, run dates, impressions and targeting. Add "exactCompanyMatch": true if a name search also matches partner pages (searching "HubSpot" also returns pages like "HubSpot Platinum Partner"). "skipMemberAds": true drops ads posted from individual members' profiles.

To research a theme instead of a brand, use searchTerms, e.g. { "searchTerms": ["car insurance"], "countries": ["DE"], "lastDays": 30, "onlyNewAds": false }.

And a LinkedIn row with details turned on. The landingPageUrl UTM parameters often reveal the campaign name:

Each competitor also gets a summary row ("type": "summary") that isn't charged. Failed checks appear as "type": "error" rows with a hint, and those aren't charged either.

Want to discuss this further?

Book a free strategy call with our team to see how these insights apply to your specific business goals.

Book a consultation