Facebook Ad Spy — scrape any brand's live ad creatives in 30s
Type a competitor's Facebook page URL → get every ad they're running right now, with video playback, carousel navigation, and run dates.
Quick answer
Why "see their ads" beats "see their socials"
A competitor's organic content tells you what they want to say; their paid creative tells you what they actually bet money on. The ad they ran for 8 weeks straight is the ad that converted. The ad they killed after 3 days didn't.
Reading that pattern — which hooks they kept, which angles they cut, what CTA copy they doubled down on — is the cheapest market research you can do. KOLens makes it a 30-second loop instead of a manual-Ad-Library-tab spelunk.
How an Ad Spy scrape works
- On
/ad-spy, paste either:- A Facebook page URL (
https://www.facebook.com/SHEINOFFICIAL/) — scopes to one brand. - A Meta Ad Library search URL — returns mixed advertisers matching a keyword / category.
- A Facebook page URL (
- Pick a max ad count (default 100 = 10 credits) and a country filter (optional).
- Active-only is the default — historical/ended creatives dilute the signal. Flip to "All" for a longevity analysis.
- Hit Scrape. ~30-90 seconds later you're looking at the brand's full creative wall.
The creative viewer
Each ad card in the gallery supports the three Meta creative types natively:
- Image — single still creative, click to enlarge.
- Video — big center play button → inline
<video controls autoplay>. No bouncing to TikTok-style modal video viewers; the creative plays in place. - Carousel — chevron arrows + dot indicator cycle through the multi-card creative. The card shows
3 / 5-style position counter.
Each card also shows a running/ended badge (green vs grey), the longevity in days, the publisher platforms (Facebook / Instagram / Messenger / Audience Network), and a single-click "View details" button to a dedicated full-spread page.
The detail page
/ad-spy/ads/[ad_archive_id] is a two-column spread:
- Left: the big creative (same video/carousel controls, larger).
- Right: status / type / longevity badges, the advertiser strip (links back), full headline + body + CTA button, run window (start → end), publisher platforms.
- Performance card — only renders when EU DSA transparency data is present (impressions buckets, reach, spend lower/upper bounds).
- Snapshot history — refresh-by-refresh timeline of Running/Ended flips. Useful for spotting a brand that re-ran an old creative.
Sorting that actually surfaces winners
The advertiser detail page (/ad-spy/advertisers/[id]) sorts six ways:
- Recent — newest first. Default for the "what are they testing this week" question.
- Longevity ↓ — longest-running first. The most useful sort. Ads a brand has kept live for 30+ days converted; ads killed after 3 days didn't. Longevity is your free reverse-engineered creative scorecard.
- Active first — surface live creatives over historical.
- Spend ↓ / Impressions ↓ / Reach ↓ — EU DSA transparency data, when present. The hard performance numbers.
Pricing
Pre-charged at submit: ceil(max_ads / 10) credits (default 100 ads = 10 credits = ~$1). Refunded automatically when the Apify call errors out before pulling anything.
Coming soon
On the roadmap (tracked as "AS-3 / AS-5"):
- Advertiser watchlist + 24h auto-refresh — pick competitors, KOLens re-scrapes them every day and tags any new ad.
- "New creative" alerts → Discord / generic webhook — push notifications the moment a watched brand launches new creative.
Frequently asked
- What's the Meta Ad Library?
- A public Meta product mandated by EU and US transparency laws that exposes every Facebook / Instagram / Audience Network / Messenger ad currently running for any business page. KOLens scrapes the same data Meta already publishes — just structured into a feed you can sort, filter, and watch inline.
- Does it show ad spend?
- Only for EU-targeted ads (DSA Transparency mandates spend brackets and impressions for political/issue ads in the EU). For everything else, Meta hides exact spend. KOLens shows the EU numbers when present and labels their absence rather than guessing.
- Can I monitor a competitor over time?
- Yes — KOLens stores every ad it scrapes plus a per-refresh snapshot, so you can see when an ad started, when it ended, and how its spend / reach drifted. The PR roadmap adds 24h auto-refresh + 'new ad' delta alerts as a next step.
- Is scraping the Ad Library allowed?
- The Ad Library is explicitly a public-transparency product; Meta provides both a web UI and an official Ads Library API for the same data. KOLens fetches through the same Apify actor many compliance and competitive-intelligence teams use.
Read next
How to find TikTok KOLs by keyword (with verified emails)
KOLens crawls TikTok live, ranks 200+ creators by engagement, and extracts the verified business emails from every bio link — in under one minute. No annual contracts.
Automate TikTok KOL discovery — Discovery Plans run daily for you
Set a keyword + interval. KOLens re-scrapes TikTok every 24h, surfaces only new creators, and auto-adds them to your KOL list. No ChatGPT needed; just the keyword.