Facebook Ad Library: research competitor ads without inventing the results
Find public competitor ads, preserve the exact source and export a brief without inventing targeting or performance.
To search real B2B ads from Meta, use our Meta ad library.
The search is easy. The research gets messy when one card has a Library ID, says it has multiple versions and reports that several ads use the same creative and text. Those are different facts. None of them tells you which ad made money.
Use this workflow to capture the search, keep ads separate from visible versions, export JSON, CSV or Markdown and turn the evidence into one controlled test hypothesis.
What the Meta Ad Library shows
The current public tool asks for a location and ad category before search. It accepts a keyword or advertiser. A result card can show the advertiser, Library ID, start date, visible copy, destination action, platform icons, media and a notice that the ad has multiple versions.
Meta also displays phrases such as “8 ads use this creative and text.” Record that phrase as a displayed count. Do not rename it “eight concepts,” “eight winning ads” or “eight reviewed variants.” The public card did not establish any of those units.
The selected Quickbase and Xero records in this guide did not disclose spend, clicks, leads, revenue or campaign performance. They also did not explain why an advertiser chose a placement or audience. Keep those fields Unknown.
Meta says ads and updates can take up to 24 hours to appear. A capture is therefore an observation at a time and within a search scope, not a permanent inventory.
Start with one question
Write the research question before you search. A good question names the market and the decision you want to make.
- Which message angle do B2B operations platforms use for an AI product launch?
- How do accounting platforms sell setup help versus product savings?
- Which offers appear in video ads for a named set of competitors?
- What visible proof does each advertiser put next to a demo or signup action?
“What ads are my competitors running?” is too broad. You will collect unrelated cards and still have no decision.
The worked example asks: Which visible message and offer angles could become one controlled B2B Meta creative test?
Run a search someone else can reproduce
Use an advertiser search when you know the company. Use a keyword search when you want to discover advertisers using the same phrase or offer.
Record these fields before selecting ads:
- Research question.
- Country and ad category.
- Advertiser or exact keyword.
- Active status and any media or platform filter.
- Observation date.
- Search URL.
- Approximate result count exactly as displayed.
Our current examples used United States, All ads and Active ads on October 6, 2026. Quickbase displayed approximately 43 results. Xero displayed approximately 310. Those totals can change, and they are not unique-ad counts.
Preserve the ad identity before the creative
For each selected record, save the exact Library ID and public URL first. Then record the advertiser, start date, visible copy, headline, action, destination domain, platform labels and media type when shown.
If the card says This ad has multiple versions, record that notice. If it says 8 ads use this creative and text, preserve that exact displayed unit separately. One Library ID, a multiple-versions notice and a displayed creative/text-use count are not interchangeable.
Use these evidence states:
observed: the field is visible on the selected public record.Unknown: the public record did not disclose it.Missing: the researcher has not finished the capture.Conflict: the supplied Library ID and public URL do not match, or the records use different search scopes.NO_RESULT_OBSERVED: the recorded search returned no result at the observation time.
Known zero is different from Unknown. If a public field explicitly shows zero, keep zero. Never turn an empty box into zero.
Worked example: six current B2B records
These examples show how to write a source-backed observation. They do not rank the advertisers or claim the ads worked.
Quickbase: build an operational app in minutes
Open Library ID 928084500021442
Visible message: “AI can generate an app. Pave lets you build one that runs your operation for real” and says it can happen in minutes.
Headline: “Build a real app, free.”
Action: Learn More.
Version evidence: The card displayed a multiple-versions notice and said two ads use this creative and text.
Unknown: Targeting, spend, impressions, clicks, qualified demos, revenue and performance.
The observation supports a speed-to-build message angle. It does not show that speed was the reason anyone clicked.
Quickbase: completeness and hidden cost
Open Library ID 3633603946816181
Visible message: “Build apps that come complete. Don’t get billed for the gaps later.”
Headline: “Ready-to-run apps. No extra tools. Pave by Quickbase.”
Action: Learn More.
Media: A 16-second video player was visible.
Unknown: Targeting, spend, impressions, clicks, qualified demos, revenue and performance.
This record gives us a completeness-and-cost angle. The video duration is visible. The reason the advertiser chose 16 seconds is not.
Quickbase: connectors as the product news
Open Library ID 4537455406510412
Visible message: “New in Pave: Connectors” followed by a claim that the product links apps to more than 350 services.
Action: Learn More.
Media: A 30-second video player was visible.
Unknown: Targeting, spend, response and business outcomes.
This is a feature-announcement angle. It belongs in a different test from the hidden-cost message unless the campaign question explicitly compares those two promises.
Xero: setup support as the offer
Open Library ID 1561905522233885
Visible message: Free setup support from a Xero Coach for the first 90 days.
Headline: “Setup support that sets you up.”
Action: Sign Up.
Version evidence: The card displayed a multiple-versions notice and said eight ads use this creative and text.
Unknown: Targeting, spend, response and whether setup support improved activation.
The public evidence establishes the offer and displayed count. It does not establish that the offer produced better customers.
Xero: brand promise in six seconds
Open Library ID 1092686610370600
Visible message: See and manage finances in one place, followed by “Love is why you started. Xero is why you can't be stopped.”
Headline: “Xero. For the love of small business.”
Action: Sign Up.
Media: A six-second video was visible. The card said five ads use this creative and text.
Unknown: Targeting, spend, response and brand lift.
Xero: remove an operating fee
Open Library ID 1989663508689059
Visible message: Standard ACH payments are included in all Xero business plans, with fees applying to other methods.
Headline: “ACH fees? Not your problem.”
Action: Sign Up.
Version evidence: The card said nine ads use this creative and text.
Unknown: Targeting, spend, response and whether fee removal changed signup quality.
What an old Library link can and cannot prove
The archive used for this research contains a Quickbase record with Library ID 1000878149361808 and a Xero record with Library ID 1010960361920468. On October 6, 2026, both old detail links resolved to current advertiser result sets with different current Library IDs.
The observed redirect establishes that the old URL can become a route into a current advertiser search. It does not establish that the archived creative, offer or media remains live. Keep the archived record dated. Capture the current record under its current Library ID.
Turn observations into one bounded test
The two current Quickbase Pave records give us two visible message angles:
- Build an operational app in minutes.
- Get a complete app without paying for missing pieces later.
Test this hypothesis: For our own B2B operations offer, the completeness-and-hidden-cost message may produce more qualified demo starts than the speed-to-build message.
That is a test proposal, not a conclusion about Quickbase. Hold the audience, offer, destination, format, placement, spend and delivery window constant. Change only the message angle. Judge the test with your agreed qualified-demo metric from your own campaign data.
Watch the task in the interface
HubSpot Marketing published a step-by-step walkthrough of the Facebook Ads Library. It is a dated third-party tutorial, so current Meta behavior controls when the interface differs.
The walkthrough shows country, query, language, active status and media filters, then makes a winner inference the public record cannot prove.
From 2:03 to 3:06, the presenter demonstrates country, keyword, company, language, delivery-status and media filters. At the end of the passage, the presenter calls a long-running ad likely to be a winner. Treat that sentence as an inference. The public record does not supply the result needed to validate it.
The presenter compares message, proof, urgency and format and recommends adapting the framework instead of copying the ad.
From 6:13 to 7:08, the presenter compares storytelling, proof, urgency and format, then recommends adapting a framework instead of copying an exact ad. Use those visible fields to write a test. Let your own result decide what worked.
Use the research ledger
The browser ledger keeps the question, country, category, status, query, observation date and each Library ID attached to the record. “Selected ads” counts distinct Library IDs. “Selected variants” counts only entries in each ad’s variants array; the displayed creative/text-use count remains a separate Meta observation. It returns one of these states:
SCOPE_REQUIRED: the research question or required search scope is missing.CAPTURE_REQUIRED: the search scope is complete, but a selected ad or its public identity is missing.FACTS_RECORDED: source identity is complete, but the observation or comparison is unfinished.READY_TO_COMPARE: one complete record needs a comparable second record.RESEARCH_BRIEF_READY: at least two comparable records preserve facts, Unknowns and one bounded hypothesis.REPAIR_REQUIRED: IDs conflict, scopes differ or the record claims unsupported targeting or performance.NO_RESULT_OBSERVED: the reproducible search produced no result at the recorded time.
The evaluator checks the record you supply. It does not fetch Meta or certify that pasted copy is true. Export JSON, CSV or Markdown, then reimport the JSON before handoff. JSON preserves a missing displayed count as null; CSV and Markdown label it NOT_DISPLAYED. Unicode, long URLs, explicit Unknown values and the ad-versus-version relationship survive unchanged.
Copy the standalone research prompt
The downloadable prompt contains the source boundary, required fields, state rules and output shape. It works in a fresh chat without this article.
With complete evidence, it returns the exact search scope, a source table, observed patterns and differences, explicit Unknowns and one controlled hypothesis. With missing or conflicting evidence, it stops and asks for the exact repair. It must not say it opened a source URL or fill an unavailable outcome.
Read and copy the complete prompt
# Meta Ad Library research brief prompt
Review the JSON worksheet supplied after this prompt. Work only from supplied fields. Do not claim that you opened a URL.
## Source boundary
Meta's public commercial-ad records can show advertiser, Library ID, start date, visible copy, destination action, platform labels, media, a multiple-versions notice and a displayed count such as “8 ads use this creative and text.” These are different units. The public record does not establish targeting, spend, impressions, clicks, leads, revenue, profit or performance. Keep unavailable values `Unknown`. Longevity and repetition are observations, not proof that an ad won.
## Required input
- `search`: research_question, query_type (`advertiser` or `keyword`), query_value, country, ad_category, active_status, capture_date and exact search_url.
- At least two comparable `records` with the same question and scope.
- Each record: one distinct numeric library_id; canonical `https://www.facebook.com/ads/library/?id={id}` URL; advertiser; capture_date; start date when shown; visible message; offer observation; media observation; destination domain or `Unknown`; platform-label array or `["Unknown"]`; Boolean multiple_versions_notice; integer displayed creative/text-use count or null; optional separately observed entries in `variants`; and targeting, spend, impressions, clicks, leads, revenue and performance set to `Unknown`.
- repeated_patterns, differences and exceptions. Use `none_observed` when that is the honest result.
- one test_hypothesis, test_control and separate first-party result_source.
## State rules
1. Return `REPAIR_REQUIRED` for an ID/URL conflict, duplicated Library ID, mixed scope, invalid count or unsupported outcome claim.
2. Return `SCOPE_REQUIRED` for a missing research question, query type/value, country, category, status, observation date or search URL.
3. Return `CAPTURE_REQUIRED` when scope is complete but a selected ad, advertiser, Library ID or public URL is missing.
4. Return `NO_RESULT_OBSERVED` only when the complete recorded search returned no result at the observation time.
5. Return `READY_TO_COMPARE` for one complete record.
6. Return `FACTS_RECORDED` when identity is complete but observations or test fields are unfinished.
7. Return `RESEARCH_BRIEF_READY` only for two or more comparable complete records with an explicit bounded test.
Blank, `Missing`, `Unknown`, `Conflict` and numeric zero are different states. Do not convert one into another.
## Output for complete evidence
Return: status; exact search scope; source table; ad-versus-version fields; observed patterns; differences; exceptions; explicit Unknowns; one untested hypothesis; held-constant variables; and the separate first-party result source needed to judge it.
## Output for missing or conflicting evidence
Stop before the brief. List each exact field, why it blocks the work and the exact repair. Never fill a blank with an inference.
Common mistakes
Calling visible duration a performance signal
A start date and active status are observations. They do not reveal profit, lead quality or why the ad remains active.
Counting versions as concepts
Keep Library ID, multiple-versions notice and creative/text-use count in separate fields. Do not add them together.
Turning copy into targeting
Copy that addresses field teams shows that the copy addresses field teams. It does not prove a field-team audience was targeted.
Comparing different jobs
A setup-support signup and an AI product launch can both be good examples. They do not answer the same test question unless you define a shared decision.
Losing the observation date
Public records change. Preserve the date, search scope, Library ID and public URL before writing conclusions.
Facebook Ad Library FAQ
Is the Meta Ad Library free?
Yes. The public search can be used without paying for an ads research tool.
Should I search an advertiser or a keyword?
Search an advertiser when you know the company. Search a keyword when you want to discover companies using the same message or offer.
Can I see competitor targeting?
Do not infer exact targeting from copy, platform icons or a destination. Record only transparency fields that the selected public record displays.
Can I see spend or results?
The ordinary commercial-ad records inspected for this guide did not show spend, clicks, leads, revenue or performance. Political and issue-ad reporting has different transparency rules.
What does “multiple versions” mean?
It establishes that Meta displays multiple versions for that record. Keep any accompanying “ads use this creative and text” count in a separate field. The notice does not identify a winning variation.
Why did an old Library link show different ads?
An old detail link can route into a current advertiser result set. Capture the current cards under their current Library IDs and keep the old record dated.
Build a brief another operator can audit
Open the official library, write one question and capture two comparable records before you analyze anything. Preserve the IDs and Unknowns, then export one bounded test.
If you want Maestro to turn the research into a paid-media plan, talk to us about B2B Meta ads. Bring the exported brief so the work starts from evidence.