The Meta Ad Library exposes no spend, no impressions, and no conversions for commercial advertisers. It does expose the date an ad started and whether it is still running. That is enough, because an advertiser will not keep paying to run an ad that loses money. Past roughly 60 days, an ad is almost certainly working. That is the closest thing to a public conversion signal that exists.
The logic
You cannot see whether an ad converts. You can see whether someone is still paying for it, and that is a decision made by somebody with full access to the data you do not have.
Every day an ad stays live is a day its owner looked at the numbers and chose not to turn it off. A creative running 18 months has survived hundreds of those decisions. It is a conversion signal reported by the only person who can see conversions, and it is free.
This inverts how most competitor research works. Instead of guessing which of a competitor’s messages is best, you let their own budget tell you.
Reading the pattern
Once you have start dates, the shape of an ad account tells you what stage the company is at.
| What you see | What it means |
|---|---|
| One creative, 500+ days | A proven offer. Copy the offer, not the design. |
| A handful of ads, 60–120 days | Working. Worth reading closely. |
| 80 variants, all under 14 days | Aggressive testing. They have not found it yet. |
| Many ads, none older than 30 days | Either new, or nothing has stuck. |
| Long-running ad, one creative, no website | The offer is carrying it. Study the words. |
That last row is not hypothetical. In this dataset one company ran a Messenger-only funnel with no website at all for 92 days. Eight of the 30 companies had no website. That is a real strategy: test an offer with zero build cost, and only build once something works.
The 564-day ad
The longest-running creative in the set belongs to Neelgai and says: “4 Devs. 4 Months. $4K/Month.” One creative. 564 days. A concrete team composition attached to a concrete monthly number, and it has outlasted every cleverer piece of copy in the market.
Here is the part that reframes everything. Their ad destination has been returning a hard 404 that entire time. The link points at a broken route on their own site.
They have paid for 564 days of traffic into a dead page and that offer still outlasted competitors with working funnels, better design, and more budget. Whatever you believe about landing page optimisation, this is a data point about where the leverage actually sits. The offer statement is doing more work than the page it points at.
It is also, obviously, an enormous unforced error. Somebody is losing a great deal of money to a routing bug nobody has checked in 18 months. Which is its own lesson: click your own ads.
The trap that breaks the method
This is the part I got wrong on my first pass, and it invalidates the whole exercise if you miss it.
The ad library paginates at 30 results. A response containing exactly 30 ads has more behind the cursor. If you read the first page and stop, you are reading the most recent 30 ads and calling it the account’s full history.
Since recent ads are by definition the newest, every longevity figure you calculate will be far too short. On my first sweep this understated ad age by roughly a factor of ten. Companies that had been running the same creative for over a year looked like they had started last month.
The tell is simple: if a response holds exactly 30 results, you are not done. Any round number that equals the page size should be treated as a truncation, not a total. This applies well beyond ad libraries.
One useful shortcut: if you only need the ad count rather than the creatives, the first page of a company query usually carries a total-results field. That is one request, no pagination, and it is the true total. Paginate only when you actually need to read the ads.
What to do with it
- Sort by start date, not relevance. The default ordering surfaces what is new. You want what is old.
- Read the oldest ad first. It is the one that has been validated most.
- Steal offers, not creative. A long-running ad proves the promise works. It says nothing about whether the design does.
- Check whether the destination still works. Free, takes ten seconds, and it found a 564-day 404 here.
- Re-run it on a schedule. The diff between sweeps tells you who entered the market and who died, which no single snapshot can.
- Include dead ads when measuring longevity. Filtering to active-only removes the ads that ran a long time and recently stopped, which is exactly the data you want for the maths.
What it cannot tell you
Being fair about the limits, because this method is easy to over-trust.
Longevity does not measure volume. A cheap ad running to a tiny audience can survive a long time on trivial spend. It does not distinguish a great offer from a merely acceptable one in a category with no competition. It does not account for a company running ads for brand reasons rather than direct response. And a badly-run account can keep a losing ad live purely through neglect — which, given the 404 above, is not a theoretical concern.
Treat it as strong evidence, not proof. It is still the best free signal available.
FAQ
Does the Meta Ad Library show spend or performance?
Not for commercial advertisers. It shows creative, advertiser, start date, and active status. Longevity is the proxy.
How long before an ad counts as proven?
Past about 60 days it is very likely paying for itself. Under 30 days you are usually watching a test. The longest single creative here has run 564 days.
What does 80 near-identical ads mean?
Aggressive testing, not success. Eighty variants under two weeks old is a company searching; one creative running 18 months is a company that already found it.
What is the biggest mistake reading the ad library?
Not paginating. A page of exactly 30 results always has more behind it, and reading only the first page makes every advertiser look far newer than they are.
Full method and findings: I analyzed 866 ads from 30 custom software companies. Related: the false-zero machine, a search trap that will hand you a confident wrong answer.