competitive-intelligence · 6 min read

How to read Meta Ad Library spend ranges (when Meta hides the exact number)

Last updated: May 2026

Fast answer

Meta only ever publishes spend ranges, not exact figures. To estimate the real number: count active days, multiply by Meta's mid-band figure, compare to the advertiser's other ads in the same window, and triangulate against your own niche CPM. Five minutes per advertiser gets you to within 30 percent.

Why the ranges exist at all

Under the EU Digital Services Act, very large online platforms must publish certain advertising data through public archives. Meta's Ad Library complies by exposing the existence of every ad, the running window, the targeting region, and a spend RANGE. The Act does not require the exact figure; Meta deliberately chose opaque ranges to satisfy the legal floor without surfacing campaign budgets at granularity that competitors could weaponize.

The published bands at the time of writing are: - Less than EUR 100 - EUR 100 to 499 - EUR 500 to 999 - EUR 1,000 to 4,999 - EUR 5,000 to 9,999 - EUR 10,000 to 49,999 - EUR 50,000 to 99,999 - EUR 100,000+

The bands are wide. An ad showing "EUR 1,000 to 4,999" could be EUR 1,050 or EUR 4,800 — a 4x range. For aggregate weekly intelligence, the bands are useful; for individual-ad analysis, you need a workflow to narrow the estimate.

The triangulation workflow

This is the exact sequence. About five minutes per advertiser, repeatable.

Step 1 — count active days

Meta shows the start date of every ad. Subtract from today. If the ad has been active for 14 days, divide the band by 14 to get a daily spend estimate.

Example: an ad in the "EUR 1,000 to 4,999" band that has been active for 14 days corresponds to EUR 71 to EUR 357 per day.

Step 2 — pull the mid-band figure

Take the geometric mean of the band, not the arithmetic mean. For "EUR 1,000 to 4,999" that is roughly sqrt(1000 × 4999) which is about EUR 2,236. Geometric mean is closer to the true distribution because ad spend is log-normally distributed: most ads sit near the low end of any band, with a long right tail.

So the mid-band daily estimate is EUR 2,236 / 14 = EUR 160 per day.

Step 3 — sanity check against the advertiser's other ads

Open the same advertiser's full Ad Library page. Look at their other active ads in the same window. If the advertiser is running 5 ads simultaneously and all are in the same "EUR 1,000 to 4,999" band, the total weekly spend is around EUR 800 per day across all 5 ads — which puts the advertiser firmly in the "scaling DTC" bracket.

If only one ad is in the band and the rest are in "EUR 100 to 499", the advertiser is testing variants on a smaller budget. The single high-band ad is the winner they are scaling; the others are creative tests.

Step 4 — triangulate against your own niche CPM

If you know your own CPM for this niche (you should — your Meta Ads Manager surfaces it weekly), you can convert the spend estimate to an impressions estimate, and then to a budget velocity. Example: niche CPM of EUR 6 means EUR 160 per day per ad equals 26,000 impressions per day, which equals about 770,000 monthly impressions per ad.

That number is the most useful translation. "EUR 160 per day" is abstract; "770,000 monthly impressions" tells you whether the ad is reaching enough people to actually matter in your category.

What this gives you

The output is not the exact number. The output is a categorical placement of every active ad you care about into one of three buckets:

  • Test bucket — under EUR 100 daily equivalent. The advertiser is running creative tests, not scaling.
  • Working bucket — EUR 100 to EUR 1,000 daily equivalent. The ad has cleared the test threshold and is running at a budget the advertiser is willing to sustain.
  • Scaling bucket — EUR 1,000+ daily equivalent. The ad is a known winner the advertiser is pushing as hard as they can.

For competitive intelligence, the bucket placement is what matters. The exact number is luxury data; the bucket is decision data.

Where CommonWealth Ops fits

The weekly read for your niche on CW Ops aggregates the bucket placement across every advertiser in your category, surfaces who is scaling vs who is testing, and tracks the bucket transitions week over week. The triangulation workflow above is what we automate.

If you are an operator below EUR 5,000 monthly ad spend, running the workflow manually for 5 advertisers per week is the right path. The workflow takes 25 minutes and you learn the niche in the process. Pricing details at /pricing if you decide to delegate the read later.

Frequently asked questions

Why does Meta hide the exact ad spend?
Two reasons Meta has stated publicly: protecting advertiser commercial confidentiality, and reducing the surface for adversarial reverse-engineering of campaign budgets. The opacity is intentional, not a bug. The Digital Services Act requires the ranges to exist; nothing requires them to be exact.
How accurate can the estimate get?
Within 30 to 50 percent at the individual ad level with the workflow below. Aggregated across a niche, the error narrows because over-estimates and under-estimates cancel out. For decisions of the form 'is this advertiser scaling or stable', that accuracy is enough.
Is there a tool that does this for me?
Several paid tools (Pipiads, AdSpy, BigSpy) automate this for TikTok and Meta. The CommonWealth Ops weekly read aggregates the estimate per niche and surfaces the rank, not the per-ad number, which is what most operators actually need.

Become an operator

Stop guessing what to sell.

CommonWealth Ops turns your market's competitor activity into ranked, data-backed intelligence — and protects your capital before you spend a euro on ads. EUR 49/mo + 20% of net profit. No free trial: skin in the game both ways.

Join the waitlist
See pricingReal and aspirational stories
Written by Jacobo López · Founder, CommonWealth Ops

← All posts