Competitor ad intelligence: tracking Facebook and Google Ads with Apify
Ad libraries are public, but that does not make competitor ad research easy.
Many tools show creative screenshots, but limit exports, hide useful fields, or decide for you which ads matter. Agencies and founders usually need sharper answers:
- What new offers did competitors launch this week?
- Which landing pages are they testing?
- Are they shifting from image ads to video?
- Which countries are they targeting?
- Which messages keep running for months?
Competitor ad intelligence is the practice of collecting public ad transparency data — Meta Ad Library and Google Ads Transparency Center listings — into a structured dataset you can diff week over week, instead of manually scrolling ad libraries and hoping you notice what changed. This Apify pipeline collects that data automatically using two Actors and turns it into a weekly competitor brief.
Quick answer
You can monitor competitor ads by scraping public ad transparency sources with Apify Actors. Use Facebook Ads Scraper Pro for Meta Ad Library data and Google Ads Scraper for Google Ads Transparency Center data. Store weekly results in an Apify dataset, deduplicate by ad ID or creative text, and flag newly launched creatives.
The ad monitoring stack
The setup relies on two CrawlerBros Actors:
- Facebook Ads Scraper Pro — extracts Facebook Ad Library data by keyword or page name, with filters for country, status, ad type, and media type.
- Google Ads Scraper — extracts ads from Google Ads Transparency Center, including advertiser info, dates, previews, and creative details.
At a high level:
\
Competitor list
-> Facebook Ads Scraper Pro
-> Google Ads Scraper
-> normalized creative table
-> weekly change report
\\
The normalized table includes advertiser, platform, ad text, media type, landing page, first seen date, last seen date, country, and source URL.
Key facts
- 2 Actors, 1 normalized table: Facebook Ads Scraper Pro and Google Ads Scraper output feed the same advertiser/platform/landing-page schema.
- Landing pages beat ad copy: a competitor testing a new pricing page is a stronger signal than a rewritten headline.
- Dedupe by ad ID first: fall back to advertiser + normalized text + landing URL when a platform ad ID isn't available.
- Start narrow: five to ten tracked competitors produces a report people actually read; wider lists produce a data dump nobody opens.
Actor configuration that matters
For Google Ads, start from direct Transparency Center advertiser URLs with startUrls, or search for advertisers using searchTerms. Region filtering uses region, resultsLimit caps ads per advertiser, and skipDetails trades detail for speed.
\json
{
"searchTerms": ["nike.com", "allbirds.com"],
"region": "US",
"resultsLimit": 100,
"skipDetails": false
}
\\
That input is enough for a weekly competitor check. For deeper research, use advertiser URLs after the first discovery run so the workflow keeps tracking the same entities.
What the output looks like
The useful unit is not just "an ad." It's an ad plus the context needed to compare it later. Keep platform, advertiserName, region, adFormat, firstShown, lastShown, headline, landingPageUrl, and sourceUrl as first-class fields.
Without timing and landing-page fields, the dataset turns into a gallery. With them, it becomes a change log.
In a small Google Ads Scraper test run for apify.com, the Actor returned five ad records. The rows included advertiserId, advertiserName, creativeId, format, firstShown, lastShown, previewUrl, adLibraryUrl, searchTerm, and scrapedAt — exactly the shape needed for weekly change detection.
Why public ad libraries are enough for many teams
Most teams do not need a giant ad-tech platform to answer practical competitive questions. Public ad libraries already expose a lot:
- active and inactive creatives
- advertiser names
- page or advertiser identity
- ad text
- media assets
- call-to-action buttons
- launch dates
- region filters
- landing page links
The missing piece is automation. Checking the libraries manually every Monday is boring and easy to skip. Running an Apify task on a schedule makes the workflow repeatable.
The Facebook side
Facebook Ads Scraper Pro is useful when the competitor operates heavily across Facebook and Instagram. Search by brand name, page name, product keyword, or industry term.
For a DTC brand, the most useful fields are usually:
- ad text
- page name
- landing page URL
- media type
- active status
- country
- CTA label
- image or video URL when available
Group ads by repeated phrases and landing pages. If five competitors start using similar "quiz funnel" language in the same week, that's a signal. If one competitor keeps the same creative live for months, mark it as a likely winner.
The Google side
Google Ads Transparency Center fills a different gap. Many B2B and SaaS companies spend more meaningfully on Google than Meta. Google Ads Scraper surfaces text, image, and video ad activity from the public transparency center.
This is especially useful for:
- SaaS competitors
- local service franchises
- political or issue advertisers
- enterprise software brands
- app install campaigns
The important part is not just collecting the ad — it's tracking timing. A new competitor campaign often appears before a pricing page changes, before a product launch gets announced, or before a sales team starts hearing new objections.
Production notes
Track landing pages, not only ad copy. The landing page is often more revealing than the creative. A competitor testing a new pricing page tells you more than a rewritten headline.
Deduplicate aggressively. Ad libraries often show variations of the same creative. Deduplicate by platform ad ID when available, then by advertiser plus normalized text plus landing URL.
Store weekly snapshots. The value comes from changes. Which ads are new? Which disappeared? Which stayed active?
Use country filters. Global brands test different messages by market. A US campaign may not match a UK or Brazil campaign.
Respect public data boundaries. This workflow monitors public ad transparency data. It does not access private account metrics, spend data, or targeting settings not exposed by the platform.
Start narrow. An early version of this workflow tracked too many brands. The output looked impressive but nobody read it. Now it starts with five to ten competitors and only expands after the alert rules prove useful. Ad intelligence should feel like a short briefing, not a data dump.
The weekly report that actually gets read
The output is only useful if it answers a decision. Turn the dataset into a short weekly report with five sections:
- new ads launched this week
- ads that stopped running
- landing pages seen for the first time
- repeated offers across competitors
- creative formats by platform
That report is small enough for a founder or account manager to read in five minutes. The raw dataset remains available when someone wants to inspect the evidence.
One pattern worth watching closely is message convergence. If three competitors start talking about "done-for-you migration" in the same month, the market is telling you something — it may mean customers are worried about switching costs. That insight can feed sales scripts, landing pages, and product onboarding.
Cost comparison
| Approach | Monthly cost | Raw export | Custom alerts | Multi-platform |
|---|---|---|---|---|
| Manual ad library checks | Analyst time | No | No | Yes, but slow |
| Ad intelligence SaaS | $99-$500+ | Limited by plan | Sometimes | Yes |
| Apify pipeline | Pay per run | Yes | Yes | Yes |
Check the current Pricing tab for Facebook Ads Scraper Pro and Google Ads Scraper before running at scale — Apify Actor pricing can change.
FAQ
Can I scrape Facebook Ad Library data with Apify?
Yes. Facebook Ads Scraper Pro collects public ad library data and exports it as structured dataset rows.
Can I monitor Google Ads competitors?
Yes. Google Ads Scraper extracts public data from Google Ads Transparency Center.
Can this replace SpyFu or ad intelligence tools?
It can replace the workflows where you need raw creative monitoring, landing page tracking, and custom alerts. It does not replace every paid keyword or spend estimate feature.
What's the fastest way to try this?
Pick five competitors. Run Facebook Ads Scraper Pro with their brand names, then run Google Ads Scraper for the same list, export both datasets, and diff them a week later.
Try it yourself
Pick five competitors. Run Facebook Ads Scraper Pro with their brand names, then run Google Ads Scraper for the same list. Export both datasets and add a platform column. Run it again next week. The difference between the two exports is your first competitor ad alert report.


Top comments (0)