Facebook Ads Analyzer: see and read a competitor's live ads avatar

Facebook Ads Analyzer: see and read a competitor's live ads

Pricing

from $40.00 / 1,000 video ad analyzeds

Go to Apify Store
Facebook Ads Analyzer: see and read a competitor's live ads

Facebook Ads Analyzer: see and read a competitor's live ads

See the Meta ads a competitor is running, no key needed: paste their page and get the measured structure of up to 3 live ads for $0.01. Add your own Anthropic key to analyse up to 20 for hook, offer, CTA and pacing, from $0.02 an ad. You pay Anthropic directly for the model.

Pricing

from $40.00 / 1,000 video ad analyzeds

Rating

0.0

(0)

Developer

FrameProbe

FrameProbe

Maintained by Community

Actor stats

0

Bookmarked

3

Total users

2

Monthly active users

3 days ago

Last modified

Categories

Share

Give it an advertiser's name or Facebook page. Get back the Meta ads they are running right now, each one read for its hook, its offer and its call to action, plus one brief across the whole set.

Actor idframeprobe/ad-teardown
Minimal input{"advertiserName": "Nike"}
Cost$0.01 per run, plus $0.04 per video ad and $0.02 per image ad that produced a full record, plus $0.15 for the cross-ad brief when it is produced. The ads themselves are fetched by apify/facebook-ads-scraper on your own Apify account at its price, roughly $0.006 an ad. A run with no Anthropic key charges only the $0.01 start on our side, and still fetches up to 10 ads on yours, so a keyless preview is about $0.07 all in, not $0.01. Your Anthropic account bills you separately for the model calls.
OutputOne row per creative: hookStyle, hookNotes, offerFraming, offerNotes, ctaPlacement, the CTA button label, onScreenText, format, duration, scene count and cut cadence. Then one brief row across the set, which needs at least 5 analyzed creatives and therefore an API key, and a run summary row last.

Click Try for free, then paste an advertiser. The form arrives prefilled with a demo video file, not an advertiser, so replace it: put a brand into advertiserName or their page into startUrls. With no API key the run still fetches that advertiser's real, currently-running ads and returns the measured structure of the first three, so you see actual competitor ads before you pay any model provider anything.

  • See every ad a competitor is running today, and read what each one is actually saying.
  • Compare hooks and offers across an advertiser's whole set instead of one ad at a time.
  • With a key, get three concrete angles to test, drawn from ads that are live right now.

Paste an advertiser's Facebook page and get their Meta ads torn down, ad by ad, plus one cross-ad brief of what is working and 3 concrete angles to test. With no API key, a run fetches the advertiser's real, currently-running ads and returns the measured structure of up to 3 of them, with no AI called. The AI teardown and the brief need your own Anthropic key. With the key, AI watches the actual creatives: for video ads it reads scene pacing, hook timing in the opening seconds, and the on-screen text; for image ads it reads the hook, the offer and the CTA off the pixels. The text-only ad tools cannot see any of that.

Try it with no key first: run with no API key and the Actor still fetches the advertiser's real, currently-running ads and returns their measured structure (format, dimensions, duration, scene count, cut cadence) for the first 3, so you see actual competitor ads pulled before you pay any model provider anything. Add your own Anthropic key to unlock the full AI teardown and the synthesis brief.

What one run gets you

For each creative, one structured record:

  • hookStyle + hookNotes: how the ad grabs attention (7 closed classes, so you can count them across an account)
  • offerFraming + offerNotes: how the offer is framed (discount, social proof, urgency, risk reversal, and so on)
  • ctaPlacement and the CTA button label
  • onScreenText: the overlay text, in order, transcribed off the creative
  • productionStyle: ugc-style, studio-polished, motion-graphics, product-shot, meme-style
  • measured video pacing: sceneCount, cutCadenceSeconds, durationSeconds (measured by ffmpeg, never guessed by the model)
  • adScore 0 to 10 (a harsh "worth copying" grade) and whyItWorks in plain language
  • the ad's own metadata passed through: advertiser, body text, landing URL, running-since date, placements

Then one synthesis brief per run: recurringHooks, repeatedOffers, ctaPatterns, winningPattern, and exactly 3 anglesToTest. The brief is what you read first; the per-ad records are the evidence.

Real output, unedited, from a run with an Anthropic key (a run with no key returns the measured structure only): SoFi's currently-running Meta ads torn down into hook, offer, CTA and score, one row per creative.

Teardown records for SoFi's real Meta ads: hook style, offer framing, CTA placement, ad score and why each works

The 60-second start

  1. Open this Actor, paste https://www.facebook.com/<advertiser> into startUrls (or just type the brand into advertiserName).
  2. Click Start with no key: the no-key preview fetches their real ads and shows the structure.
  3. Paste your Anthropic key (console.anthropic.com/settings/keys) and run again: full teardowns plus the brief.

The whole input is one field: the advertiser's page URL.

The input form with an advertiser page URL pasted into the one-step field

The one-step fetch runs apify/facebook-ads-scraper for you and is billed to your Apify account at that scraper's price for your tier (roughly $0.006 per fetched ad on the free tier, as of August 2026). The run log states the estimate before fetching and the run summary reports the exact fetched count.

Chaining and direct input

Already ran the ads scraper? Paste its datasetId (or the run ID; the Actor resolves it). Chain immediately: Meta's media URLs expire within hours, and an expired link fails with a reason telling you to re-fetch. Power users can pass direct media file URLs in mediaUrls.

Meta ads datasets get full support (nested cards, videos, images, DPA catalog ads, carousels: the first card is analyzed and cardCount says how many the ad carries). Other datasets are best-effort: a recognizable media URL field is picked up, an unknown extension is tried as video then image.

Pricing (this Actor's events)

EventPriceCharged when
Actor start$0.01once per run, after validation passes
Video ad analyzed$0.04a video creative produced a full teardown record
Image ad analyzed$0.02an image creative produced a full teardown record
Synthesis brief$0.15the brief was actually produced (needs at least 5 analyzed creatives)

Never charged: failed downloads, expired URLs, duplicates (the same creative across placement rows is analyzed once; repeats get a reference row), rejected images, model-reply parse failures, skipped briefs, and any per-ad event or brief in a keyless preview. A keyless preview run costs one $0.01 start event, plus the ads scraper's own fetch of up to 10 ads, billed to your Apify account. Your Anthropic account bills separately for the model calls, at your rates: with the default model, expect a few tenths of a cent per image and a cent or two per video, plus roughly a cent for the brief.

When something fails

Every failed row carries a reason that names the fix: expired media URLs point you at re-fetching, an out-of-credit Anthropic key points at your billing page and says re-running will not re-charge analyzed creatives, a page pasted into the wrong field names the right one. The run summary row (always the last record) totals what was analyzed, skipped, failed and charged.

Privacy and security posture

Your API key is used for the run's model calls and is never stored, logged, or written to any output. Media is downloaded through an SSRF-guarded, size-capped, timeout-bounded pipeline; scraped ad text and pixels are treated as untrusted data end to end, and every model-derived field is sanitized and pinned to closed lists before it reaches your dataset.

The SSRF guard refuses media links that are not https, or whose host is or looks up to a private, internal or cloud metadata address, 100.64.x.x included. One case gets past it: a host that gives a public address when checked and a private one a moment later when the download connects (DNS rebinding).