Estimating Competitor Ad Spend From Ad Library Volume (Honestly)
Knowing roughly how aggressively a competitor is advertising is a real strategic edge. The honest framing matters though, so let's set it straight first: you cannot see anyone's actual ad spend. The ad libraries don't publish budgets. What you can see is public signal — how many ads they're running, how long those ads have been live, and across which platforms — and use it as a rough proxy for their paid-media footprint.
This guide builds a cross-platform "footprint" estimator from the Facebook and Google ad libraries. Treat its output as a relative aggression indicator and a trend tracker, not a dollar figure. Code in JavaScript.
The proxy logic (and its limits)
Three public signals correlate with spend:
- Number of active ads — more live creatives generally means a bigger testing/scaling operation.
- Long-running ads — an ad live for months is almost certainly profitable (nobody funds a loser that long).
- Platform and format diversity — running video across Facebook and search on Google implies more production and budget than a single image ad.
The limit: ad count isn't ad spend. A brand could run 200 cheap retargeting ads or 5 enormously-funded ones. So this estimator is best for comparing competitors against each other and tracking one competitor over time, not for putting a number on their invoice.
Step 1: Count active Facebook ads
const API_KEY = process.env.SOCIAVAULT_API_KEY;
const FB = "https://api.sociavault.com/v1/scrape/facebook-ad-library";
const headers = { "x-api-key": API_KEY };
async function facebookFootprint(brand) {
const search = await (
await fetch(`${FB}/search-companies?query=${encodeURIComponent(brand)}`, {
headers,
})
).json();
const page = search.success ? search.data?.[0] : null;
if (!page) return { activeAds: 0 };
const adsRes = await (
await fetch(
`${FB}/company-ads?pageId=${page.id}&country=US&status=ACTIVE`,
{ headers },
)
).json();
const ads = adsRes.success
? adsRes.data.ads || adsRes.data.results || adsRes.data || []
: [];
return { page: page.name, activeAds: ads.length };
}
Step 2: Count active Google ads
const GOOG = "https://api.sociavault.com/v1/scrape/google-ad-library";
async function googleFootprint(domain) {
const res = await (
await fetch(`${GOOG}/company-ads?domain=${domain}®ion=US`, { headers })
).json();
const ads = res.success
? res.data.ads || res.data.results || res.data || []
: [];
return { activeAds: ads.length };
}
Step 3: A footprint tier (not a dollar amount)
Combine the real counts into a relative tier. Note this is a coarse heuristic — calibrate the thresholds against competitors you know.
async function footprint(brandName, domain) {
const fb = await facebookFootprint(brandName);
const goog = await googleFootprint(domain);
const total = fb.activeAds + goog.activeAds;
let tier = "Light";
if (total > 50) tier = "Moderate";
if (total > 200) tier = "Heavy";
if (total > 500) tier = "Very heavy";
console.log(`\n📊 ${brandName} paid-media footprint`);
console.log(` Facebook active ads: ${fb.activeAds}`);
console.log(` Google active ads: ${goog.activeAds}`);
console.log(` → Relative footprint: ${tier} (${total} active creatives)`);
}
footprint("Monday.com", "monday.com");
Notice there's no fabricated number anywhere — the tier comes from the real active-ad counts the libraries return. (An earlier version of this guide padded the Facebook count with a hard-coded figure; that's exactly the kind of fake precision to avoid. If a count comes back empty, report zero, don't invent.)
Reading the signal over time
The estimator earns its keep when you run it weekly and watch the trend:
- Active-ad count climbing → they found a winner and are scaling. Expect more competition for your shared audience.
- Google-heavy → they're capturing existing demand (people already searching).
- Facebook-heavy → they're generating demand (interrupting cold audiences).
- Format shift toward video → bigger creative investment, usually cold-traffic acquisition.
Store the weekly counts and you'll often see a competitor's footprint swell before a major campaign fully saturates the market — an early warning you can act on.
If you want to build this into a fuller workflow, continue with competitor ad monitoring software, real-time ad alerts in Slack, monitoring competitor pricing changes, and detecting creative fatigue from ad snapshots.
Frequently Asked Questions
Can you find out how much a competitor spends on ads?
No — neither the Facebook nor Google ad libraries publish spend figures. You can estimate a competitor's relative paid-media footprint from public signals like active-ad count, ad duration, and platform mix, but that's a proxy for aggression, not an actual budget number.
Why is ad count only a proxy for spend?
Because cost per ad varies enormously — a brand might run hundreds of cheap retargeting ads or a handful of heavily-funded ones. Ad count reflects how many creatives are live, not how many dollars are behind them, so use it to compare competitors and track trends rather than to estimate exact spend.
What does a long-running ad tell me?
That it's very likely profitable. Direct-response advertisers don't keep paying to run ads that don't convert, so an ad live for months signals a winner. Counting long-runners alongside total active ads gives a better sense of footprint than raw counts alone.
How do I compare Facebook vs Google footprint?
Count active ads on each and look at the split. A Google-heavy footprint suggests capturing existing search demand; a Facebook-heavy one suggests generating demand by interrupting cold audiences. The mix tells you how a competitor approaches their funnel.
How often should I run this?
Weekly is ideal. The single most useful output is the trend — a rising active-ad count signals scaling, often before a campaign fully saturates the market. Store each week's counts to build that picture over time.
Is estimating ad spend this way reliable?
It's directionally useful, not precise. Treat the tiers as relative ("heavier than competitor X," "scaling vs last month"), calibrate thresholds against brands you know, and never present the estimate as an actual budget. Honesty about the method's limits keeps it credible.
The bottom line
You can't see a competitor's ad budget, but their public ad footprint is a genuine signal. Count active ads across Facebook and Google, track the trend weekly, and read the platform mix — just keep the numbers honest and treat them as relative aggression, not dollars.
Want to track competitor ad footprints? Start free with SociaVault with 50 credits.
Found this helpful?
Share it with others who might benefit
Ready to Try SociaVault?
Start extracting social media data with our powerful API. No credit card required.