Advertising·19 min read

Meta Ad Library Competitor Analysis: What the Library Counts and What It Withholds

Read what the Meta Ad Library will not tell you, measured on 14 brands: disclosed spend, worldwide rank, run length and version count behind each one's best ad.

Meta Ad Library Competitor Analysis: What the Library Counts and What It Withholds

Every guide to the Meta Ad Library lists the same five limitations. No spend. No performance. No history. No way to sort. No way to tell a test from a winner. The lists are correct and they are all written the same way, which is from memory, without a single figure attached to any of it.

The gap is worth measuring rather than asserting, because the Ad Library does give you one number: how many ads an advertiser has running. That number is free, it is prominent, and almost every competitor workflow built on the library treats it as a proxy for how much the advertiser is spending.

It is not one. Across the 14 brands below, the ad count and the money run in opposite directions often enough that ordering by it is worse than not ordering at all. Gymshark's best disclosed ad sits in the top 1% of 3.1k active ads and carries €24.9k. Swyft runs a fifth as many and its best ad carries €191k.

Together the 14 ads on this page disclose €1.49M of EU and UK spend and 148.3 million people reached, and every figure quoted is on the card in the screenshot beside it.

The 14 brands

Ordered by the disclosed EU and UK spend on each brand's single best ad, highest first. Watch the active-ad column fail to follow it.

# Brand Sells Active ads Rank EU/UK spend
1 Swyft Sofas 621 Top 1% €191k
2 Nutrition Geeks Supplements 753 Top 1% €139k
3 Alpensattel Bike saddles 165 Top 1% €133k
4 Omaze Prize draws 272 Top 1% €128k
5 prepmymeal Prepared meals 325 Top 1% €128k
6 DUSK Bedding, furniture 159 Top 20% €124k
7 Medicube Skincare 849 Top 1% €111k
8 Cabaia Bags 2.3k Top 1% €107k
9 DOONAILS Press-on nails 242 Top 1% €107k
10 AYBL Gymwear 438 Top 3% €104k
11 SKIMS Shapewear 1.4k Top 1% €100k
12 Meller Sunglasses 6.1k Top 1% €72.5k
13 Gymshark Gym clothing 3.1k Top 1% €24.9k
14 D.Franklin Sunglasses 1.4k Top 3% €22.6k

How to read the numbers

Active ads is the number the Ad Library shows you, and it is the only one it shows you. The figure in this column is the one printed on each ad's own card, "Top 1% of 621 active ads", so the count and the rank are measured against each other rather than pulled from different places.

The rank is worldwide. The money is not. A rank badge is computed across everything that brand runs in every market. Spend and reach are only the slice EU and UK disclosure rules force advertisers to publish. So a modest euro figure next to a Top 1% badge means most of the budget is undisclosed, not that the ad underperformed. That asymmetry is exactly why ad count and disclosed spend refuse to line up.

Eleven of the fourteen are Top 1% ads. This is not a list of a brand's typical ad. It is each brand's best one, which is the fair comparison: the strongest thing each advertiser has, measured the same way.

Most of these runs have finished. The card says Ended or Active and the entry says which. A finished run is the more useful number here, because the disclosed total is final rather than still climbing.

1. Swyft: €191k behind one ad

See this ad in Brandsearch

Swyft's ad card in Brandsearch showing Top 1% of 621 active ads, 85 days, 16 versions and €191k of EU and UK spend

The British sofa-in-a-box brand has the highest disclosed figure in the set and one of the smaller libraries behind it. The card reads Top 1% of 621 active ads, 85 days, ×16 versions, €191k. The creative is a dining furniture ad, not the sofa the brand is known for.

The version count is the part the Ad Library cannot express. Sixteen copies of this creative ran at once, which in the native library looks like sixteen separate entries with no way to tell they are one ad. Anyone counting entries to size up Swyft is counting the same ad sixteen times.

2. Nutrition Geeks: €139k behind one ad

See this ad in Brandsearch

Nutrition Geeks' ad card in Brandsearch showing Top 1% of 753 active ads, 214 days and €139k of EU and UK spend

Top 1% of 753 active ads, 214 days, ×3 versions, €139k. The ad is a straight offer: "Get 30% Off Your First Order + Free Delivery".

Seven months is the signal here. The Ad Library will tell you this ad is active, and it will tell you the same thing about an ad launched yesterday. A discount offer that a supplement brand kept funding for 214 days is not a promotion, it is the acquisition engine, and the distinction only exists once you can see the duration.

3. Alpensattel: €133k behind one ad

See this ad in Brandsearch

Alpensattel's ad card in Brandsearch showing Top 1% of 165 active ads, 120 days and €133k of EU and UK spend

The smallest library in the top half and the third highest disclosed spend. Top 1% of 165 active ads, 120 days, €133k. The German brand sells one thing, a universal bike saddle, and the ad leads on delivery: "Lieferung in 1-3 Tagen mit DHL 📦".

A 165-ad advertiser looks like a minor player in the Ad Library, next to a fashion brand showing thousands of entries. It is out-disclosing almost every larger library on this page.

Where the spend actually lands

Swyft's landing pages in Brandsearch, ranked with the ad count and disclosed spend behind each

Ad count has a second problem, which is that it says nothing about where the traffic goes. The Landing pages view ranks a brand's pages by the ads pointing at them and attaches the disclosed spend to each, so you can see the handful of destinations carrying the account rather than the hundreds of creatives feeding them.

Pull any competitor's landing pages, ranked by the ads behind them

4. Omaze: €128k behind one ad

See this ad in Brandsearch

Omaze's ad card in Brandsearch showing Top 1% of 272 active ads, 39 days, 6 versions and €128k of EU and UK spend

Top 1% of 272 active ads, 39 days, ×6 versions, €128k. Omaze sells prize-draw entries rather than a product, and the ad is the Million Pound House Draw.

Thirty-nine days for €128k is the densest spend rate on this page. It also shows why "how long has it been running" and "how much has it spent" are two different questions: prepmymeal's ad below ran thirteen times longer for the same money.

5. prepmymeal: €128k behind one ad

See this ad in Brandsearch

prepmymeal's ad card in Brandsearch showing Top 1% of 325 active ads, 517 days, 10 versions and €128k of EU and UK spend

Top 1% of 325 active ads, 517 days, ×10 versions, €128k. The German meal-delivery brand kept one video alive for nearly seventeen months.

Put this card next to Omaze's and the two headline numbers are identical while the stories are opposites. One is a burst, one is an annuity. The Ad Library labels both of them "Active" and stops there, which is the single most expensive thing it withholds: the only free proxy anyone has for profitability is how long an advertiser has been willing to keep paying, and the library does not show it.

6. DUSK: €124k behind one ad

See this ad in Brandsearch

DUSK's ad card in Brandsearch showing Top 20% of 159 active ads, 51 days running and €124k of EU and UK spend

The smallest library on the page, 159 active ads, and the only entry whose best ad is not in its brand's top 1%. Top 20% of 159 active ads, 51 days, ×3 versions, €124k, and it is still running.

That combination is worth sitting with. DUSK's best disclosed ad is merely in the top fifth of its own library and it still out-discloses Gymshark, SKIMS and Meller. A rank is relative to the advertiser that owns it, which means comparing rank badges across brands tells you much less than comparing the money.

7. Medicube: €111k behind one ad

See this ad in Brandsearch

Medicube's ad card in Brandsearch showing Top 1% of 849 active ads, 19 days and €111k of EU and UK spend

Top 1% of 849 active ads, 19 days, €111k. Nineteen days, and the creative is a creator post asking people to comment "link" for DMs.

This is the fastest spend on the page by a wide margin and it is an organic-format ad, not a produced one. Neither of those facts is visible from an entry in the native library.

The catalog behind a small library

DUSK's products in Brandsearch, ranked by bestseller position with prices

DUSK runs 159 active ads, the fewest here, against a catalog the Products view ranks by bestseller position. A brand with a wide catalog and a narrow ad library is making a deliberate choice about where variety lives, and reading the ad count alone would file it as a small advertiser.

Check any store's catalog against the ads it runs

8. Cabaia: €107k behind one ad

See this ad in Brandsearch

Cabaia's ad card in Brandsearch showing Top 1% of 2.3k active ads, 23 days, 10 versions and €107k of EU and UK spend

Top 1% of 2.3k active ads, 23 days, ×10 versions, €107k. The French accessories brand runs one of the larger libraries here, and its best ad is a discount: "-30% sur une sélection".

Twenty-three days and ten simultaneous versions is a brand pushing hard on a promotional window. The library would show you ten near-identical entries appearing at once and give you no way to read that as one push. Spotting the push after the fact is useful on its own, and reading a creative velocity spike as a sale about to launch is the same pattern used as a forecast.

9. DOONAILS: €107k behind one ad

See this ad in Brandsearch

DOONAILS' ad card in Brandsearch showing Top 1% of 242 active ads, 272 days, 5 versions and €107k of EU and UK spend

Top 1% of 242 active ads, 272 days, ×5 versions, €107k. A buy-one-get-one offer that ran for nine months.

Cabaia and DOONAILS disclose the same figure from opposite strategies: 2.3k ads over 23 days against 242 ads over 272 days. Same money, an order of magnitude apart on both axes the library shows and the one it does not.

Stop reading about winners. Find them yourself.

Search 15M+ brands, their ads, revenue, and products — all in one place.

Try Brandsearch free

10. AYBL: €104k behind one ad

See this ad in Brandsearch

AYBL's ad card in Brandsearch showing Top 3% of 438 active ads, 411 days running and €104k of EU and UK spend

Top 3% of 438 active ads, 411 days, €104k, still running. The gymwear brand has had this one live for over thirteen months.

An ad that has survived 411 days has outlived most of the strategies built around it. It is also the clearest case on the page of a creative the native library flags identically on day 1 and day 411.

The rest of the category

Swyft's competitors in Brandsearch, matching stores scored by product similarity with traffic and active ad counts

The Competitors view answers the question the ad count is usually a bad proxy for, which is who else is in this market and how big they actually are. It scores matching stores by how close their products are and puts monthly visits and active ad count on each one.

Find every store selling what you sell

11. SKIMS: €100k behind one ad

See this ad in Brandsearch

SKIMS' ad card in Brandsearch showing Top 1% of 1.4k active ads, 134 days running and €100k of EU and UK spend

Top 1% of 1.4k active ads, 134 days, €100k, still running. The ad is a product ad for the Fits Everybody Triangle Bralette.

SKIMS is by some distance the largest brand on this page by traffic, and its best disclosed ad sits between DOONAILS and Meller. That is the disclosure asymmetry doing its work: the ranks are worldwide and SKIMS is mostly a US advertiser, so very little of its budget is in the European figure at all.

12. Meller: €72.5k behind one ad

See this ad in Brandsearch

Meller's ad card in Brandsearch showing Top 1% of 6.1k active ads, 59 days running and €72.5k of EU and UK spend

The biggest library on this page by a distance. Top 1% of 6.1k active ads, 59 days, ×3 versions, €72.5k, still running.

Six thousand one hundred active ads is the number that would put Meller at the top of any ad-count ranking, and its best disclosed ad carries a third of what Swyft's does on a library a tenth the size. The ad itself is a piece of brand copy about sunglasses becoming part of the landscape, which is not what a 6,100-ad library usually implies.

13. Gymshark: €24.9k behind one ad

See this ad in Brandsearch

Gymshark's ad card in Brandsearch showing Top 1% of 3.1k active ads, 18 days, 8 versions and €24.9k of EU and UK spend

Top 1% of 3.1k active ads, 18 days, ×8 versions, €24.9k. This is the clearest single answer to the question the page opened with.

It is also worth reading the creative, because the ad's title field is the literal string {{product.brand}}. An unrendered template variable, shipped live, on an ad that still reached the top 1% of its brand's library. Anyone treating an Ad Library entry as evidence of a considered strategy should sit with that for a moment.

14. D.Franklin: €22.6k behind one ad

See this ad in Brandsearch

D.Franklin's ad card in Brandsearch showing Top 3% of 1.4k active ads, 126 days and €22.6k of EU and UK spend

Top 3% of 1.4k active ads, 126 days, €22.6k. The Spanish eyewear and footwear brand closes the list.

D.Franklin and Alpensattel make the point between them. D.Franklin's library is roughly eight times larger; Alpensattel's best ad discloses roughly six times more. If you had sorted this market by the number the Ad Library gives you, you would have had these two the wrong way round by a factor of about fifty.

What the 14 have in common

Ad count did not order this list and nothing close to it did. The three highest disclosed figures come from libraries of 621, 753 and 165 active ads. The three largest libraries, 6.1k, 3.1k and 2.3k, sit at positions 12, 13 and 8. The correlation a lot of competitor research quietly assumes is not there.

The version count is invisible in the native library and it changes the arithmetic. Swyft ran ×16 copies of one creative, Cabaia and prepmymeal ×10, Gymshark ×8. Every one of those appears in the Ad Library as that many separate entries, so the count the library shows is inflated by exactly the thing you would most want to factor out.

Run length separates two brands with identical money. Omaze and prepmymeal both disclose €128k, across 39 days and 517 days. The library labels both "Active".

A rank is relative to its own advertiser. DUSK's top-20% ad out-discloses three brands' top-1% ads. Comparing badges between brands is close to meaningless; comparing the money is not.

The practical version: if you are using the Ad Library to decide who to study, you are ranking by the one metric that does not rank anything. Pull the disclosed spend, the run length and the version count first, then decide who is worth reading.

Check your own numbers against the 14

What the Meta Ad Library does and does not give you

The library is a transparency product. It was built so anyone could see who is running political and issue ads, and it was later widened to all advertisers. Judged as that, it works. Judged as competitive research, the shape of the gap is specific.

What it does give you, free and for any advertiser: the creative, the headline, the placements, the date the ad started, and whether it is running now. In the EU and UK it also publishes reach and a spend range for ads covered by the disclosure rules, which is where every euro figure on this page ultimately comes from.

What it does not give you is the part this page measures. There is no total run length, so an ad on day 1 and an ad on day 517 read the same. There is no de-duplication, so sixteen copies of one creative are sixteen entries. There is no ranking, so you cannot tell an advertiser's best ad from its worst. And there is no keyword search across advertiser copy, which is the quiet one: you can look up a brand you already know, but you cannot ask which brands are running a particular angle this month. That last gap is why the library answers "what is this brand doing" and never "who in my category has found something".

None of that is a defect. It is a transparency tool being used for a job it was not built for, which is worth being clear-eyed about before building a research routine on top of it.

If what you actually want is a shortlist of tools that close these gaps, that is a different question from this one and it has its own page: Meta Ad Library alternatives covers the library-replacement options, and the best ad spy tools for ecommerce ranks the wider set on price and coverage.

Method

Fourteen Shopify DTC brands, read on 12 September 2026 from the Brandsearch index of 13.7M stores (9M Shopify). The candidate set was pulled in four bands of active-ad count, from 100 to 2,000-plus, specifically so the list would contain both ends rather than only the brands that spend most.

Every "Sells" cell was read from the brand's own store description on its Brandsearch brand card, never from memory. That check caught one in the candidate set: the niche field files Alo Yoga under Beauty and Skincare, and its store description sells yoga wear.

Every figure in the table and in every entry is read off the ad card in that entry's screenshot, not from the API. Those two disagree: Swyft's card says "of 621 active ads" where the brand record says 702, because the rank is scored against the set the app held when it scored the ad. The card wins, because the card is the thing you can see.

Two things were dropped rather than softened. One brand in the original fifteen, On, renders no rank badge on its best ad, so its row was removed rather than published with a gap in the column the page is about. And regional storefronts were dropped rather than counted twice, because they show a different ad set and their fallback ads return unusable spend.

Disclosed spend is the EU and UK slice only, it is a final total on a finished run and a running total on a live one, and it moves. These figures are a reading, not a constant.

The API and MCP behind this list

The Brandsearch API and MCP page, showing the HTTP API and the MCP connection for AI tools

The candidate set came out of one call per band. This is the band that produced Swyft, Nutrition Geeks and Medicube:

curl -s -H "X-API-Key: $BRANDSEARCH_API_KEY" \
  "https://api.brandsearch.co/v1/brands?platform=shopify&brand_type=dtc%20brand\
&monthly_visits_min=400000&meta_active_min=300&meta_active_max=800\
&sort_by=eu_total_spend&sort_order=desc&page_size=14\
&fields=id,name,description,niche,country_code,monthly_visits,last_meta_active_count,eu_total_spend"

And the per-brand pull behind each card, where the version count and the disclosed spend live:

curl -s -H "X-API-Key: $BRANDSEARCH_API_KEY" \
  "https://api.brandsearch.co/v1/brands/swyfthome.com/ads?platform=meta\
&sort_by=eu_total_spend&sort_order=desc&page_size=10\
&fields=id,status,total_active_time,duplicate_count,reach_rank,eu_total_spend,eu_total_reach,creative"

duplicate_count is the field the app renders as "Versions", reach_rank sits behind the rank badge, and total_active_time is the run length the library omits. The same data is available over MCP, so Claude, Cursor or ChatGPT can run this across your own category without you writing the loop.

Connect Brandsearch to your AI tool

FAQ

Does the Meta Ad Library show ad spend?
Only in the EU and UK, and only for ads covered by the disclosure rules, which publish a reach figure and a spend range. There is no commercial spend figure for the rest of the world, and there is no sign that there will be. Every euro on this page comes from that disclosed slice.

Can I tell how long an ad has been running?
The library shows a start date and whether the ad is active, so you can work out elapsed time for a live ad. What it does not show is the total run of an ad that has stopped, or whether the same creative ran, paused and restarted.

Is a brand with more active ads spending more?
Not on this evidence. The three biggest libraries here sit at positions 12, 13 and 8 by disclosed spend, and the highest figure on the page comes from a 621-ad library. Ad count also double-counts duplicate versions of one creative.

Why is one brand's best ad "Top 20%" and another's "Top 1%"?
The rank is computed inside that advertiser's own library, worldwide. DUSK's top-20% ad discloses more money than three top-1% ads on this page, so the badge tells you where an ad sits among its siblings, not how it compares across brands.

Can I search the Meta Ad Library by keyword across advertisers?
You can search by advertiser name and by a broad keyword against page names, but not across the body copy of every advertiser's ads. That is why the library answers questions about brands you already know and cannot answer "who in my niche is running this angle".

What is a version count?
The number of copies of the same creative an advertiser had running at once. The native library lists each copy as its own entry, so a brand running sixteen copies of one ad looks like sixteen ads.

Share this article

Ready to spot the next ad before it scales?

Join thousands of media buyers using Brandsearch to see every Meta, TikTok, and Instagram ad — filtered by spend, running days, and what's actually scaling.

Try Brandsearch free
Over $100k/day adspend

"The ability to see exactly what creatives are scaling for our competitors is a cheat code. We've improved our hit rate on new ad launches by over 300%."

Sophia Latimer
Sophia Latimer
Head of Growth
Testimonial background

Your winning market research and creative workflow

The best way to find every winning product, ecommerce ads and funnels. Track your competitors in-depth and save everything easily.

15M+Brands
400M+Ads
AIEngine
TrackCompetitors
Trusted by 50K+ DTC brands