New - Connect AutoAdy to your AI agent.See how →

How to Research Competitor Meta Ads with AI (Browser Agent + AutoAdy)

This workflow uses both in sequence: observe public creative, then check your hypotheses against your own data, then write a brief and optionally generate test variants.

Kristians, Founder, AutoAdy9 min read
Editorial illustration of advertising image studies; not actual competitor ads.
Contents (9 sections)

The Meta Ad Library shows a competitor's active public ads to anyone with a browser. AutoAdy reads measured performance from your own authorized Meta account.

What you can actually see and what you can't

What this workflow produces

Browse a competitor's public ads with a browser-capable agent, organize what you observe into hypotheses, then check those hypotheses against your own measured performance in AutoAdy. End with a written brief and one generated test batch. The two halves use different tools for different reasons: the browser observes public ad records, AutoAdy reads your selected authorized account.

Meta's public Ad Library (facebook.com/ads/library) displays active ads running across Meta platforms. For a typical US commercial competitor, you'll see their active creatives, start dates, and platforms.

You will not see their cost per acquisition, their audience targeting parameters, or whether any given ad is profitable. Start dates tell you when an ad began running, which gives you a date to investigate rather than proof of a win. Advertisers sometimes leave underperforming ads running for reasons unrelated to returns.

So the honest version: you can collect public creative. You can note start dates. You can read the copy, see the format, and observe the hook. Anything beyond what's on the public page is your hypothesis, not their data.

What each signal establishes

  • Public creative

    Source
    Public Ad Library
    Useful for
    Hook, offer, format and the start date shown
    Does not establish
    Profitability
  • Own-account pattern

    Source
    get_creative_analytics
    Useful for
    Measured angle, hook and format patterns, and where coverage is thin
    Does not establish
    Causality or competitor results
  • Ad teardown

    Source
    analyze_winning_ad
    Useful for
    Available copy, targeting, budget and objective fields
    Does not establish
    Why an ad worked

Reviewed from the public Ad Library interface and the AutoAdy tool schemas inspected 2026-10-07. Each row states the limit of the signal, not a result.

Know which source can answer your question

Choose the evidence source

Meta Ad Library

Observe the creative. Keep performance as an unknown.

Creative
Hook text, copy and visible format
Timing
Start date shown on the listing
Distribution
Platforms listed on the public page

Competitor spend, CPA, targeting and profitability are not established by this view.

Switch between public observations and your own account evidence. This is an explanatory guide, not a live account report.

Connect AutoAdy and a browser-capable agent

You need two things connected before this workflow does anything useful.

AutoAdy connector. Follow the setup guide at /claude to connect AutoAdy as an MCP tool in your Claude environment. Once connected, confirm your selected account is live:

Confirm the connected accountPaste into AutoAdy MCP

Runs against your selected ad account through the AutoAdy connector.

Which Meta account am I connected to, and what's its delivery status?

What comes back: The account name, currency and delivery status reported by get_connected_account.

This calls get_connected_account. You're checking for the account name, currency, and that the account is actively delivering. If the account is disabled or paused, historical stats from it aren't current delivery evidence.

Browser-capable agent. The competitor-observation half requires an agent that can open a browser, scroll, and read page content. Claude's computer-use capability handles this. This is a Claude feature, not an AutoAdy feature. Enable it according to your Claude plan's documentation and verify it works by asking Claude to open any public webpage and describe what it sees.

The four stages of one session

Explore a stage in the research workflow

Browser agent

Record the visible hook, format, start date and source link. Use a bounded sample.

Start with
A competitor’s public Ad Library page
Leave with
An observed sample, with its collection limits
Go to this step
Schematic of the workflow described here: two stages read public creative in a browser, two stages read your selected authorized account. No counts, spend or results are shown.

Collect a bounded public ad sample

Open the Meta Ad Library through your browser agent and pull a specific competitor's active ads. Be precise about the filters, or you'll get noise.

Collect the public ad samplePaste into Browser agent

Runs in Claude's computer-use browser. No AutoAdy account needed.

Open https://www.facebook.com/ads/library, search for [COMPETITOR NAME],
filter to [COUNTRY] and active ads only. For each visible ad, record:
- Hook (first line of primary text)
- Body angle (what problem or desire it speaks to)
- Offer or CTA
- Format: static image, video, carousel, or UGC-style
- Start date shown in the library
- Direct link to the ad if available

Sort by longest-running first. Stop after 15 ads or when you've
scrolled through all active results, whichever comes first.

What comes back: A list of public creative: hook, body angle, offer or CTA, format and the start date shown in the library.

The 15-ad cap is a suggested bounded review size for a single session.

What you're collecting: public creative visible to anyone visiting the Ad Library on the date you run this. The start dates are real. The creative is real. Everything else; why they're running it, whether it's profitable, what audience sees it; is inference. Label it that way from the start.

The Ad Library page loads dynamically and may not surface every ad in a single scroll session. Country and category filters affect what's shown. Your sample is bounded by these constraints.

Separate observations from hypotheses

With your collected competitor ads, you now have raw material that's tempting to over-interpret. Resist that.

Split observations from hypothesesPaste into Browser agent

Runs in Claude's computer-use browser. No AutoAdy account needed.

From the ads you just collected, organize them into two columns.
Column 1, Observations: what you can verify from the public listing
(format, hook text, start date, visual style).
Column 2, Hypotheses: what you're inferring but can't confirm
(which psychological trigger it targets, whether longevity suggests
performance, what audience segment likely sees it).
Group the hypotheses by type of trigger: curiosity, fear of loss,
authority, social proof, urgency, aspiration, status.
Name which triggers appear repeatedly and which are absent.

What comes back: Two columns — what the public listing verifies, and what you are inferring — with the inferences grouped by trigger.

Three competitors running discount-focused hooks doesn't mean the category is saturated with discounting. It means three competitors you sampled on one date are running discount hooks. The distinction matters when you're about to spend money based on it.

An absent trigger is interesting, not automatically valuable. If no competitor in your sample uses authority-based hooks, that might mean the angle is available. It might also mean someone tried it, it failed, and they pulled the ads before you looked. You don't know. Write down what you don't know.

Observation, hypothesis, check

An observation is what the public listing shows: hook text, format and the start date. A hypothesis is the inference drawn from it: which trigger it targets, whether longevity implies performance, who likely sees it. A check is what your own selected authorized account can measure: angle patterns, format patterns and where coverage is thin. A check can support or weaken a hypothesis; it cannot establish the competitor's results.

ObservationVisible on the public listing
  • Hook text
  • Format
  • Start date shown
HypothesisYour inference, not their data
  • Which trigger it targets
  • Whether longevity implies performance
  • Who likely sees it
CheckYour selected authorized account
  • Measured angle patterns
  • Measured format patterns
  • Where coverage is thin

A check can support or weaken your hypothesis. It cannot establish what the competitor measured.

How one line of the brief is meant to travel: what the public listing shows, what you are inferring from it, and which check could support or weaken that inference. Schematic of the method only; no counts or metrics.

Check hypotheses against your own measured patterns

Now bring in the data you actually own. AutoAdy's get_creative_analytics reports measured patterns by messaging angle, hook style, visual format, and angle-style combinations within your selected authorized account. It also surfaces 28-day cost trends and flags where evidence is thin. The tool accepts an optional account_id parameter; it does not accept date-range parameters.

For top-performer details over a specific window, use get_top_performing_ads separately with date_preset=last_30d.

Check against selected-account analyticsPaste into AutoAdy MCP

Runs against your selected ad account through the AutoAdy connector.

Run get_creative_analytics for my connected account.
Show angle cost trends, format breakdowns, and flag where
coverage is thin or sample counts are low.

Also run get_top_performing_ads with date_preset=last_30d.
Return my best ads with their measured metrics.

Then compare: does any competitor angle I hypothesized overlap
with patterns visible in my own data?

What comes back: Measured angle, hook and format patterns from your selected authorized account, plus the places the tool flags evidence as thin.

Scope. get_creative_analytics reports on your selected authorized account only. It doesn't establish cross-account patterns or category-wide truths. The tool will report where evidence is unavailable or coverage is limited. Note sample counts and coverage where provided, and flag unknowns.

Match the result type to your campaign objective: purchases and ROAS for sales campaigns, cost per lead for lead generation.

Tear down one of your own top-performing ads

Before writing a brief, pull the anatomy of one of your top performers so the new creative inherits structure that's already working for your pixel.

Tear down one of your own adsPaste into AutoAdy MCP

Runs against your selected ad account through the AutoAdy connector.

Give me the teardown of ad [YOUR AD ID]: primary text,
headline, description, CTA button, destination link, creative URL,
targeting, adset budget, optimization goal, and campaign objective.

What comes back: The available creative, targeting, budget and objective fields for that ad. Not an explanation of why it won.

This calls analyze_winning_ad with a specific ad ID from your account. The tool returns available creative, targeting, budget, and objective fields. Some fields may have missing evidence depending on your account configuration.

You're pulling this for a specific reason: your next test ad should deviate from this performer on exactly one variable, not seven. If your top ad uses a short hook, direct CTA, and broad targeting in a purchase-optimized campaign, your competitor-inspired test should change the hook angle while keeping the rest of that scaffolding. Changing the hook, the format, the targeting, and the CTA simultaneously tells you nothing about which change mattered.

analyze_winning_ad does not explain why the ad worked. It shows you what the ad is. The "why" is your job, informed by the patterns from creative analytics and the competitor observations you organized.

Inspect the structure before changing it

Ad anatomy · Template

Choose an ad element to inspect

Primary text / headline

Hook

The opening idea earns attention. If this is your test variable, change the angle while keeping the rest of the ad consistent.

Read the actual primary text and headline from your own ad.

An ad anatomy template, not an actual ad. Select an element to see what to inspect in your own teardown.

Write a reviewable creative brief

A brief that skips the evidence trail is just a mood board with opinions.


CREATIVE BRIEF WORKSHEET (copy and complete)

Creative brief worksheet - TEMPLATEBlank template with fill-in placeholders.
Date: [today's date]
Competitor sampled: [name, Ad Library URL, country filter, date collected]
Ads reviewed: [observed count]/[total visible], e.g. "12 active ads as of 2026-10-07"
Collection method: Browser agent reading Meta Ad Library public page
Collection limits: [e.g. "single scroll session, US filter only, may not
                    include all active ads"]

OBSERVATIONS (verified from public listing):
- Dominant formats: [e.g. "[observed count]/[sample count] are short video"]
- Common hooks: [e.g. "[observed count]/[sample count] lead with discount"]
- Longest-running ad start date: [date from Ad Library]

HYPOTHESES (inferred, not confirmed):
- Underused trigger: [e.g. "authority/expertise; 0 of [sample count] use it"]
- Possible gap: [describe in one sentence]
- Why this might be wrong: [e.g. "authority ads may have been tested
  and pulled before this sample"]

OWN-ACCOUNT EVIDENCE (from get_creative_analytics / get_top_performing_ads):
- Observed pattern: [your measured messaging angle and result]
- Format pattern: [your measured format performance]
- Thin evidence: [angles or formats with insufficient data]
- Coverage notes: [sample counts, missing evidence flagged by tool]

BRIEF:
- Hook: [one sentence, adapted from competitor gap + own observed style]
- Format: [specific format, e.g. "15-sec video, text overlay, no voiceover"]
- Audience: [from your own targeting data, not competitor's]
- Test variable: [exactly one thing that differs from your current top ad]
- Success metric: [e.g. "cost per lead under $X within 7 days at $Y spend"
 ; consistent with campaign objective]
- What this test will NOT tell you: [e.g. "whether the angle works in
  carousel format; that's a separate test"]

UNKNOWNS:
- Whether competitor tested and rejected this angle: not visible
- Whether your audience responds to this trigger: untested

Every bracket is a placeholder you fill in from your own session. This is a blank template, not a worked example — no competitor research was run for this article.


The unknowns section prevents over-committing budget to a hypothesis you built from a handful of public ads and one observation session.

Turn your brief into a single-variable test

Editable template · Your edits stay on this page

Copy-ready test plan
CREATIVE TEST PLAN — TEMPLATE
Hypothesis: [what you want to check]
Baseline ad: [your own ad ID or description]
One test variable: Hook angle
Proposed change: [the change you will test]
Keep fixed: [format, targeting, offer or CTA that stays the same]
Success metric: [your metric and review window, matched to the campaign objective]
Unknowns: [missing evidence and what this test cannot tell you]

Review before publishing. This template does not create or publish ads.

Copy this plan into your creative brief, then review it before testing.

A local planning template. Fill in your own evidence; the copy output contains only what you enter and unfilled placeholders.

Generate the creative, then decide separately whether to publish

If you have access to url_to_ads (see /pricing for current plan availability), you can generate creative variants from your own landing page. The tool accepts a URL, a count of variants, predefined angles, and aspect ratio. Use your brief to choose from the supported generation options, then review the output against your brief.

Generate variants from your own pagePaste into AutoAdy MCP

Runs against your selected ad account through the AutoAdy connector.

Generate [count] ad variants from [YOUR LANDING PAGE URL]
using the [angle] angle in [aspect ratio] format.

What comes back: Task IDs. Generation runs asynchronously, and the output is generated images, not live ads.

The tool returns task IDs. These are not finished images yet; generation runs asynchronously. Once complete, the output is generated images based on your page content and brand elements, built around the angles and options you selected. They are not live ads. Publishing Meta ads requires separate approval and action on your part.

Sources, method notes, and what this workflow doesn't do

Sources used in this article:

Method for this article: No competitor research was conducted, no campaign was tested, and no results were measured for this piece. The workflow described is a documented process using verified tool capabilities. The brief worksheet is a template with fill-in placeholders, not a completed analysis.

Sources checked

  • Product capability claims reflect tool schemas as of the inspection date.
  • The brief worksheet is a blank template with fill-in placeholders. The figures are schematics of the method and report no counts, spend or performance.
Public
creative
Your
account

Check what works in your own ads.

Compare your ideas with real account results, then prepare your next creative.

Launch agents

$1 setup · 7-day trial.
Card required. View pricing

FAQ

Common questions

What's the difference between get_creative_analytics and get_top_performing_ads?

Both report on your selected authorized account. get_creative_analytics returns measured patterns by angle, hook, format, and combinations, plus 28-day cost trends and coverage gaps. It accepts an optional account_id but not date parameters. get_top_performing_ads accepts a date_preset (e.g. last_30d) and returns your actual top ads with metrics. For this workflow, use both: get_creative_analytics for pattern comparison, get_top_performing_ads for specific top-performer details.

Do I need a paid AutoAdy plan for this workflow?

The observation, analysis, and brief-writing steps use browser and analytics tools. Generating creative variants with url_to_ads requires a paid plan. Check /pricing for current plan details. The brief worksheet itself is the core deliverable and doesn't depend on image generation.

Can I use this workflow for multiple competitors in one session?

You can, but each competitor adds another sample to organize and cross-reference. If you want to survey a category, consider running separate sessions and comparing the brief worksheets afterward.

What if my AutoAdy account shows limited data or thin evidence?

get_creative_analytics flags where evidence is insufficient and surfaces coverage gaps. If your account has few active ads or minimal spend history, the comparison step will be sparse. You can still complete the competitor observation and brief, but note in the unknowns field that your own baseline evidence is thin. Running the test is how you build that evidence.

Related guides