Facebook Ad Library Winning Ads Finder: AI creative breakdown
Pricing
from $3.00 / 1,000 qualified ad (rules only)s
Facebook Ad Library Winning Ads Finder: AI creative breakdown
First 25 ads free. Facebook Ad Library winning ads: collapses variants, drops dead, political and seen ads, scores each Facebook and Instagram creative by days running, adds an AI hook, angle and offer. Pay per qualified ad. Free demo on any plan; live search runs on your own Apify account.
Pricing
from $3.00 / 1,000 qualified ad (rules only)s
Rating
0.0
(0)
Developer
Rich Minds
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 hours ago
Last modified
Categories
Share
Your competitors' longest-running Facebook ads — hook, offer and angle broken down, one row each.
⚡ First 25 ads free · 💵 $0.003 per qualified ad · 🤖 $0.012 with AI assessment · 🔑 No API key needed — the AI uses the model access of your Apify plan, or your own key · ⏱️ demo in 1 s; ~2 min for 150 scanned ads (estimate)

Try it in 30 seconds. Click Try it — the form is already filled with a working example (8 sample Ad Library records, free). Your first 25 qualified ads are free, and ads that fail your filters are never charged. → What a run costs · What the AI adds · Run it weekly · Swipe file in Google Sheets
⚡ At a glance
| What you get | one row per winning creative: winner score 0–100, days running, offer, landing domain, hook — with AI also angle, evidence and a rewrite for your product; a summary per competitor and a report to forward |
| You provide | 1–10 search terms or competitor Facebook pages; optionally one sentence about your product |
| Output | JSON / CSV / Excel, best-first, plus the funnel in OUTPUT and a DIGEST for Slack / e-mail |
| Typical run | 3 terms × 50 ads = 150 scanned → ≈ 20–50 qualified (one qualified ad replaces 3–7 raw rows) |
| Cost of that run | ≈ $0.11 on the source + your first 25 ads free here, then $0.003 each ($0.012 with AI) |
| AI tier, all in | ≈ $0.015 per ad ($0.012 event + ≈ $0.003 AI tokens with the default model) |
| Keys / setup | none — the demo runs on any plan; the live search runs the source Store Actor on your Apify plan (else sourceMode: dataset) |
| Works with | Schedules, e-mail, Slack, webhooks, Google Sheets, Make / n8n / Zapier, MCP & AI agents |
🎯 What this Actor does
You pay only for the ads that pass your filters:
- One row per creative — it collapses variants (
variantCount) and drops dead, political and seen ads free. - Which ads are winning — it scores each creative 0–100 with reasons: days running, active, variants, placements.
- The offer and the landing page — discount, free shipping, price, bundle, urgency, the clean landing URL — and,
with
enrichLandingPages, the store and product behind it. - AI creative breakdown — hook, angle, offer, CTA, audience with verbatim quotes, a fit score against your product and a rewrite of the angle for it.
- A weekly monitor that reports changes — new ads, alerts when an ad stops or passes 30 / 60 / 90 days, a summary per competitor and a report to forward to your client.
🧭 Search the Meta Ad Library by keyword, page or URL
searchTerms in your country, competitorPages or adLibraryUrls; mediaType, maxAdsToScan and
maxAdsPerSearch bound the source bill, OUTPUT.yieldByQuery shows what each term paid.
🏆 Winner score and free filters — the winning ads finder rule
minWinnerScore (40): days running ≤ 40 points, active 15, variants ≤ 20, 2+ placements 10, impressions ≤ 15.
minDaysRunning, minVariants, platforms, landingDomainIncludes / landingDomainExcludes, excludeAdvertisers,
includePoliticalAds, adLanguage, targetFlags and suppressionList drop ads before any charge.
🛍️ Landing pages: store, product and price
enrichLandingPages: true reads each qualified ad's landing page: store platform, product, price, rating, reviews —
$0.004 per page that yields a store or product.
🔔 Change alerts: stopped ads and confirmed winners
changeAlerts: true: one rowType: alert row when a competitor stopped an ad you have, or it passed 30 / 60 /
90 days — in the Change alerts view, the digest and the webhook, $0.003 each. The free demo ends with one sample.
📊 Competitor reports and a client-ready report
advertiserReports: true— onerowType: advertiserrow per top advertiser (≤ 10): active, new, stopped and 30+-day ads, average days running, share of voice, top angles and offers ($0.02 each, Competitor report view).- Competitors to watch — every search lists its top 10 advertisers by long-running ads in
OUTPUTand the digest, withOUTPUT.saveAsMonitor: the ready input of a weekly monitor on them. REPORT— every run writes a client-ready HTML page (thumbnails, hooks, offers, AI breakdown) to forward; its link isOUTPUT.reportUrl. Free.
🆚 Why this instead of a Facebook Ad Library scraper?
Facebook Ad Library Scraper (curious_coder/facebook-ads-library-scraper) | Facebook Ad Library Winning Ads Finder: AI creative breakdown | |
|---|---|---|
| Price | $0.00075 per result + $0.00005 per run start · 5,855 users / 30 days | from $0.003 per qualified ad, first 25 free, no start fee |
| What you pay for | every row scraped — each variant, dead, political and duplicate ad | only qualified ads — anything that fails your filters costs $0 |
| Same 100 winning ads, all in | ≈ 700 raw rows: $0.53 here, then hours of sorting — or $4.06 on apify/facebook-ads-scraper (700 × $0.0058) | $0.83 basic (source $0.53 + 100 × $0.003) — ≈ 80 % less than the Apify route; $2.03 with AI, all in |
| Landing-page details | apify/facebook-ads-scraper: + $0.0057 per URL enriched | enrichLandingPages: $0.004 per page that yields a store or product |
| Which ads work | you sort by start date in a spreadsheet | winner score 0–100 with reasons, variants collapsed |
| Hook / offer / angle | raw copy only | offer on every row; AI breakdown with verbatim evidence |
| Repeat runs | the same ads again next week | only new ads delivered and charged, plus stopped / 30-60-90-day alerts |
| Spend control | count only | hard caps: maxAdsToScan, maxQualified, maxDiscoveryChargeUsd |
💸 Cheaper than an ad spy tool seat — an AdSpy alternative
| AdSpy / Minea-style spy tool | This Actor, weekly monitor of 10 competitors | |
|---|---|---|
| Monthly cost | $149/month per seat (AdSpy list price) | ≈ $3.70/month (≈ $4.60 with competitor reports) |
| Data | their own ad database | the live Meta Ad Library, your countries |
| Delivery | log in and search | e-mail, Slack, webhook, API, client report |
💵 Pricing — what a run really costs
Pay per result: one event per qualified ad, plus three opt-in add-ons.
| Event | When it is charged | Price |
|---|---|---|
free-tier | your first 25 qualified ads on this Actor, in any mode | $0.00 |
qualified-ad-basic | AI off — fields, offer, flags, winner score, rule hook | $0.003 |
qualified-ad-ai | AI on — plus the creative breakdown, fit score and rewrite for your product | $0.012 |
ad-alert | changeAlerts on — an ad you already have stopped or passed 30 / 60 / 90 days | $0.003 |
landing-enriched | enrichLandingPages on — a paid ad's landing page yielded a store or a product | $0.004 |
advertiser-report | advertiserReports on — one competitor summary row per top advertiser (≤ 10) | $0.02 |
Never charged: the search, variants, filtered, political or already-received ads, unreachable pages, the
REPORT page, compute.
How that compares — $0.003 is 3× a raw Ad Library row (the median of the 5 raw scrapers a Store search shows next to this one is $0.001; the research median $0.00075), but one qualified ad replaces 3–7 raw rows ≈ $0.0004–0.001 per raw-row equivalent. The winning-ads finders next to it charge $0.004–$0.01 per ad, so $0.003 is 25–70 % less per ad.
Worked example — 1,000 ads scanned → 150 qualified with AI on: source $0.75 on your account + 125 × $0.012 (first 25 free) + ≈ $0.45 tokens → $2.70 total, about $0.018 per qualified ad. AI off: $1.13.
AI tier, all in: ≈ $0.015 per ad ($0.012 here + ≈ $0.003 tokens with the default model, estimated).
🚀 How to use it
- Click
Try it— the pre-filled example works as is (8 sample ads, nothing charged). - Switch
sourceModeto the live search and type yoursearchTermsorcompetitorPages. - Say what you sell (
productBrief, optional), setminScore, press Start. - Open the dataset — winning ads best-first in the Shortlist view.
📚 Learn more: Step-by-step tutorial — how to find winning Facebook ads with this Actor
🤖 What the AI tier adds
The same demo ad, AI off — rule winner score, offer and hook from the ad itself:
{"advertiserName": "Aligna Posture", "winnerScore": 85, "score": 85, "label": "hot", "fitScore": null,"creative": {"hook": "Tired of that 3pm neck ache at your desk?", "angle": "social-proof","offerSummary": "30% OFF · free shipping · 30-day money-back", "cta": "Shop now", "targetAudience": null,"emotionalTrigger": null, "formatNotes": "video ad · 12 variant(s) · facebook, instagram, messenger","evidence": ["Tired of that 3pm neck ache at your desk?"]},"aiStatus": "off"}
AI on (qualified-ad-ai, $0.012) — the same keys, judged against the demo brief "An ergonomic laptop stand for
people who work from home …":
{"advertiserName": "Aligna Posture", "winnerScore": 85, "fitScore": 70, "score": 79, "label": "hot","fitReason": "Both ads target desk‑workers with posture discomfort; the problem‑solution angle and price‑sensitive audience align with the laptop‑stand brief.","creative": {"hook": "Sit taller in 7 days", "angle": "problem-solution", "offerSummary": "30% OFF + free shipping","cta": "Shop now", "targetAudience": "Appears aimed at desk‑bound professionals who experience neck or posture discomfort during the workday.","emotionalTrigger": "relief", "formatNotes": "The video demonstrates the device gently pulling shoulders back, visually showing the posture correction in action.","evidence": ["Sit taller in 7 days", "Tired of that 3pm neck ache at your desk?", "50,000+ happy customers."]},"aiStatus": "ok"}
Cut from a local run of storage-example/INPUT.ai.json on 2026-09-26 (groq:openai/gpt-oss-120b, not yet the
platform's default model). With a strong fit it also writes adaptationIdea, a rewrite for your product. About 5
minutes of a strategist's work per ad, for ≈ $0.015.
🧠 Ad creative analysis: hook, angle, offer
enableAi fills creative (hook, one of 10 angles, offer, CTA, audience, emotion, ≤ 3 verbatim quotes); with
productBrief also fitScore and adaptationIdea. score = winner 60 % + fit 40 %.
⚙️ Input
| Field | Default | What it does |
|---|---|---|
sourceMode | actor | Live search, an existing dataset, or pasted records (list) — with nothing to search ({} over the API) the free demo runs, nothing charged |
searchTerms | — | One Ad Library keyword search per term |
competitorPages | — | Facebook pages whose ads are scanned |
productBrief | — | Your product — the AI fit score and rewrite |
country | US | Ad Library country from a list, or ALL; over the API UK, USA or a name work too |
minScore | 40 | The field that decides what you pay: below this = not delivered, not charged |
maxAdsToScan | 150 | Ads the source scans — its bill on your account (≈ $0.00075 each) |
maxDiscoveryChargeUsd | 0.5 | Stops the source Actor at this spend — in the form and over the API |
maxQualified | 100 | The cap on what this Actor charges: 100 × $0.012 = $1.20 at most with AI |
enableAi | true | AI creative breakdown on/off |
changeAlerts | false | Stopped / 30-60-90-day alerts on ads you already have |
advertiserReports | false | One competitor summary row per top advertiser |
enrichLandingPages | false | Store, product and price from each landing page |
All 47 options are in the Input tab — among them slackWebhookUrl, webhookHeaders, period and dedupeStoreName.
📤 Output
One dataset item per qualified ad (rowType: ad), change alert (alert) or competitor summary (advertiser) — JSON,
CSV or Excel. Aligna Posture from the free demo (sample record, AI off): winnerScore 85, 98 days running, 12 variants.
Output fields
Upsert key for a CRM or Sheet: dedupeKey — col:<collationId>, else txt:<pageId>:<text hash>, else
ad:<adArchiveId>; alert rows add #ad-stopped / #ad-milestone-60, advertiser rows are advertiser:<pageId>.
Map url and score — their twins carry the same value. Views: Shortlist, Creative brief (swipe file), Products &
offers, Change alerts, Competitor report, Overview. OUTPUT holds the funnel, chargeSplit, aiCoverage,
competitorsToWatch, saveAsMonitor, reportUrl and timing; DIGEST (Markdown) and REPORT (HTML) sit next to it.

⭐ Found it useful? A review on the Store helps others find it — it takes a minute on the Actor's page.
🔁 Run it weekly
- Actions → Schedule weekly with your address in
notifyEmail— every run with news e-mails you the digest (top 10 with links and hooks, the change alerts, competitors to watch);slackWebhookUrlposts it to a Slack channel. - Leave
onlyNewAds: true— the next run delivers and charges only what is new; the memory is kept per search. - Turn on
changeAlertsandadvertiserReports— stopped ads, 30 / 60 / 90-day winners and a row per competitor. - Point the swipe-file Sheet or a webhook at the run.
Weekly cost: 10 competitor pages × 50 ads = 500 scanned ≈ $0.38 on the source + ≈ 30 new winners × $0.015 all-in + ≈ 10 alerts × $0.003 → ≈ $0.86 a week per client monitor (+ $0.20 with competitor reports).
🔁 Weekly competitor ad research
Searched by keyword? Paste OUTPUT.saveAsMonitor into a saved Task — pages, alerts and reports are set.
Monday's digest lists the new long-running ads and the stopped ones; forward REPORT to the client.
🎯 Try it for your niche
| Niche | Task (storage-example/tasks/) |
|---|---|
| DTC / Shopify brand — 3 product terms, Shopify landing pages, 14+ days | dtc-shopify-winners.json |
Agency monitor — 5 competitor pages, notifyEmail, alerts, reports | agency-competitor-monitor.json |
| Product research — 4 dropshipping terms, video only, 5+ variants | dropshipping-products.json |
🔌 Integrations, automation and API
- E-mail / Slack —
notifyEmaile-mails the digest,slackWebhookUrlposts it to a channel as a readable message. - Webhook —
webhookUrlPOSTs{"event": "ad.qualified", "ad": {…}, "runId": "…"}per row (webhookBatchSize> 1:{"event": "ads.qualified", "ads": [{…}]}); a 429 / 5xx is retried once, a failure never fails the run. - Google Sheets / HubSpot — one click from the Integrations tab.
- AI agents / MCP — plain typed inputs. First call = the free trial: or an empty{"sourceMode": "list", "itemsList": [...]}
{}(the free demo).
📋 Swipe file in Google Sheets
Save your search as a Task, then in a Sheet cell A1:
=IMPORTDATA("https://api.apify.com/v2/actor-tasks/<TASK_ID>/runs/last/dataset/items?format=csv&view=creativeBrief&token=<SCOPED_TOKEN>")
— hook, angle, offer, your rewrite and thumbnailUrl (=IMAGE(L2)), refreshed after every scheduled run. Make /
n8n: Watch task runs → Get dataset items → Sheets / Notion / Airtable: add row.
Run outcomes — what your integration sees
👥 Who is it for?
| You are… | You run it to… | Start with |
|---|---|---|
| DTC / Shopify / dropshipping owner | the competitor ads that run for weeks, with hook and offer | product terms + productBrief |
| Agency media buyer / creative strategist | Monday's new long-running and stopped competitor ads, a client report | competitorPages + advertiserReports |
| Product researcher | the products and prices long-running ads push | searchTerms + enrichLandingPages |
| AI agent / automation | "top 20 winning ads for a keyword as JSON" | searchTerms, maxQualified: 20 |
🛒 Dropshipping winning products: landing domains and offers
The Products & offers view: domain, store, product, price, discount, days running.
🧠 How the AI works
🔒 Data, compliance and limits
- Public data only: the Meta Ad Library's advertiser pages and ads, no user data, no login; landing pages read once.
- Impressions and spend exist only for political / EU ads; days running is a proxy for profit, not a performance figure.
- Keep your use within Meta's terms and the law (GDPR, CCPA); never copy a creative — the rewrite exists for that.
❓ FAQ
How much will my first real search cost? 3 terms × 50 ads = 150 scanned ≈ $0.11 on your account, capped by
maxDiscoveryChargeUsd ($0.50); that yields ≈ 20–50 qualified ads — the first 25 free, the rest at $0.003 ($0.015
with AI, all in).
Which Apify plan do I need? Any plan runs the free demo and dataset / list mode. The live search and Apify's
model access need a plan that can run Store Actors; on the Free plan qualify a dataset you already have and use
llmProvider: "byok" with your own key.
Does it find Instagram ads? Yes — Meta's Ad Library covers Instagram, and platforms: ["instagram"] keeps only
ads shown there: an Instagram ads library search with the same winner score and AI breakdown.
How long does a run take? The demo about 1 s; the source ~2 min for 150 ads (estimate). With AI through Apify's
model access a few seconds per ad (estimate). With your own key (llmProvider: byok) 2 calls at a time, one after a
rate limit, waiting what the provider asks: a rate-limited key measured 27 s per ad, so the worst case per 100
qualified ads is ≈ 45 min; after 120 s of unbroken rate limits the rest keep their rule score. Pass
timeoutSecs: 3600maxQualified 100 with AI; OUTPUT.timing reports each run's phases.
Can I use it for competitor ad research and ad creative analysis? Yes — competitorPages +
advertiserReports for a summary per rival; enableAi breaks each creative into hook, angle, offer and audience.
Can I find dropshipping winning products with it? Yes — search product terms, set minVariants: 5,
minDaysRunning: 21 and enrichLandingPages: true, and open the Products & offers view.
🧩 More Actors from the same developer
Not quite your use case? The same pay-per-qualified-result model, closest to this Actor's buyers first:
- Instagram Influencer Finder — instagram creators to run the winning angle with: vetted for your niche, with a contact
- LinkedIn Buying Intent Leads — people posting about competitor switching: linkedin buying intent, with an opener
- YouTube Outlier Videos Finder — youtube competitor analysis: the videos that beat their channel's average, and why
🆘 Support
Missing something? Open an issue on the Actor's page — buyer requests ship first.
📝 Changelog
One line per published build, newest first — /actor-publish adds it with the commit subject.
- 0.3 (2026-09-26) — competitor report rows (
advertiserReports), competitors to watch +saveAsMonitor, the client-readyREPORTpage, Slack digest,countryas a list, AI coverage in every AI status, onecreativeshape.