Competitor Share of Voice in Paid Social: Measure It with Ad Data
Measure competitor share of voice in paid social without their media plan: active creative counts, platform spread, ad library signals, pipeline and code.

Sections
Your CMO leans into the standup and asks the question every growth lead eventually gets: "Are we louder than them?" You have your own spend dashboard and nothing else. Share of voice in paid social used to die right there, because answering honestly seemed to require everyone's media plan. It doesn't anymore. Ad transparency rules made competitor activity public, and three signals you can pull today (active creative counts, platform spread, estimated activity) get you a defensible answer.
TL;DR: You can measure competitor share of voice in paid social without anyone's media plan. Pull active creative counts, platform coverage, and runtime signals from public ad libraries, normalize them across your competitive set, and report each brand's slice of total visible ad activity. It is a proxy for spend-based SOV with known blind spots (budget per creative stays invisible), but tracked monthly it shows who is getting louder, who is retreating, and when a rival changes strategy.
This guide walks the whole build: SOV definitions adapted to ad-library data, the honest limits of proxy metrics, a measurement pipeline with working code, an example benchmark table, and how to read shifts over time without fooling yourself.
What Share of Voice Means When Nobody Shows You Their Media Plan
The classic definition is simple. Share of voice is your advertising spend divided by total category spend. If your category spends €10M a year on ads and you spend €2M, your SOV is 20%. The metric earned its reputation in the TV era, when monitoring firms metered broadcast slots and published reliable category totals.
It still matters because of one of the most replicated findings in advertising effectiveness research. Les Binet and Peter Field's IPA work, The Long and the Short of It, showed that brands whose SOV exceeds their share of market tend to grow, while brands that let it fall below market share tend to shrink. That gap is called excess share of voice, and it turns SOV from a vanity comparison into a budgeting argument.
Here is the problem for paid social. True spend SOV requires numbers nobody publishes. Meta does not release competitor budgets. TikTok does not either. No panel meters your rival's Advantage+ campaigns the way Nielsen metered prime-time slots. So practitioners historically picked between two bad options: pay for third-party panel estimates of unknown accuracy, or shrug and call SOV unmeasurable in social.
There is a third option. Redefine the metric against what is observable. Every major platform now runs a public ad transparency surface listing the ads each advertiser currently has live. That gives you a different but rigorous denominator: total visible advertising activity in your competitive set. Three operational definitions fall out of it.
Creative SOV — your share of all active creatives across the set. If the five brands in your category have 200 ads live and 38 are yours, your creative SOV is 19%.
Presence SOV — your share of platform-days. Count each platform a brand has live ads on, multiply by days active in the window, and divide by the set total. This rewards sustained, broad coverage over a burst of ads on one channel.
Estimated-activity SOV — creative counts weighted by whatever delivery signals the source exposes, such as EU reach figures on Meta or bucketed impression ranges from intelligence tools. Heavier ads count for more.
None of these equals spend SOV. All of them are measurable this afternoon, repeatable next month, and directionally honest. That trade is worth making.
Three Public Signals That Proxy Share of Voice in Paid Social
Each proxy leans on a behavioral fact about how media buying works. The mechanism tells you when the proxy holds and when it lies.
Signal one: active creative count. Budget and creative volume correlate because spend needs somewhere to go. A brand pushing serious money into paid social runs more concurrent ad sets, tests more variants, and refreshes faster to outrun creative fatigue. A brand on €5k a month physically cannot keep 90 creatives in rotation. Counting a competitor's active ads is the fastest single read on their commitment, and there are several ways to pull an active ads count from the Meta Ad Library alone. The caveat: some brands run creative-heavy strategies (dynamic feeds, localized variants) that inflate counts without proportional budget. Pair count with runtime before concluding anything.
Signal two: active days, or runtime. Advertisers kill losers fast. An ad that has survived 60 days of optimization pressure is an ad someone keeps funding, which makes median runtime across a brand's portfolio a durability signal that raw counts miss. A competitor with 40 ads averaging 35 days live is committing more sustained budget than one with 70 ads that churn out inside a week.
Signal three: platform coverage. A brand live on Meta, TikTok, YouTube, LinkedIn, and Pinterest is buying more presence than a brand live on Meta alone, almost regardless of creative counts. Platform spread is also the hardest signal to fake and the cheapest to measure, since it is binary per platform. Tracking competitor ads across platforms in one pipeline turns this from five browser tabs into one query.
Where the source exposes delivery data, fold it in. Meta shows EU reach figures on ads served in the EU under the Digital Services Act. Intelligence tools add impression buckets and estimated spend per ad. Treat every such number as a range or an estimate, never a fact, and your weighted SOV stays honest.
Where the Data Lives: Ad Libraries by Platform
The raw material for all of this is public. What differs by platform is depth, and the gaps shape what your SOV measurement can claim.
Meta Ad Library (facebook.com/ads/library) is the deepest surface. Search any Facebook page and see every active ad across Facebook and Instagram, with start dates, formats, and platform placements. Ads served in the EU or UK carry reach data and stay visible for a year. Spend figures, though, exist only for political and social-issue ads. The free Ad Library API Meta provides is built for that transparency mandate, covering political and issue ads plus EU/UK ad data after an app review. For commercial work it leaves real gaps, and it helps to know what the Meta Ad Library doesn't show you before you promise a complete picture.
Google Ads Transparency Center (adstransparency.google.com) covers Search, Display, and YouTube ads by verified advertiser, searchable by name or domain, with date ranges and geography.
LinkedIn Ad Library (linkedin.com/ad-library) lists ads by company with some EU-mandated targeting and impression disclosure, which makes it the key surface for B2B competitive sets.
TikTok Commercial Content Library (library.tiktok.com) covers ads shown in the EU with reach data, advertiser names, and date filters. Coverage outside Europe is thinner, which is a real constraint if your market is the US.
The pattern across all four: existence and creative are public, delivery weight mostly is not. That asymmetry is exactly why the proxy definitions above are built on counts, days, and coverage. It is also why doing this manually across four surfaces every month burns an afternoon, and why an ad library API that unifies them is the difference between a one-off audit and a tracked metric.
Honest Limits: Proxy SOV Is Not Spend SOV
Before you put a number in a board deck, say out loud what it cannot see. Activity-based SOV has five blind spots.
Budget per creative is invisible. One creative can carry €1M a month behind it. Fifty creatives can split €10k. Creative SOV reads the second brand as five times louder. This is the single biggest distortion, and runtime weighting only partially corrects it, because a giant budget on one evergreen ad still shows up as one row.
Delivery numbers are ranges, not facts. Where reach or impressions appear, they come bucketed (10k–15k, not 12,431). Where ad spend appears in any third-party tool, it is modeled. An ad spend estimator is useful for orders of magnitude and useless for decimal points. Label every derived figure "estimated" and you will never have to retract a slide.
Targeting weight is dark. You can see that a competitor has an ad live in Germany. You cannot see whether it gets 2% of their budget or 60%. Presence is binary in the data even though delivery never is.
Proxies assume comparable strategies. Creative counts compare cleanly when brands in the set buy similarly. A competitor running broad Advantage+ with three creatives against your 40-ad segmented structure breaks the comparison. Know your set's buying styles before you rank them. Sanity-check the output against what a media mix model or your own category intuition says is plausible.
Levels lie, deltas mostly don't. A creative SOV of 24% carries every distortion above. A creative SOV that moved from 24% to 31% in eight weeks carries far fewer, because the distortions are roughly stable per brand. Whatever you report, report the trend before the level.
The honest framing for stakeholders: "share of visible paid social activity," tracked consistently, with method notes. That phrase survives due diligence. "Share of voice" presented as spend share does not.

The Measurement Pipeline, Step by Step
Here is the build, end to end. The shape is the same whether you run it by hand once or schedule it nightly.
Step 1 — fix the competitive set. Four to eight brands including yourself. Smaller misses the category, larger blurs the denominator. Freeze the list, because SOV only means something against a stable set.
Step 2 — resolve brand names to advertiser IDs. A brand name is not an identifier. "Nike" on Meta is several pages, on Google it is an AR-prefixed advertiser ID, on LinkedIn a numeric company ID. The AdLibrary API resolves all three in one free call:
curl -G "https://adlibrary.com/api/advertisers/search" \
-H "Authorization: Bearer adl_your_api_key" \
--data-urlencode "q=gymshark" \
--data-urlencode "country=US"
The response includes a best_match with the Meta page ID, Google advertiser ID, and LinkedIn company ID when at least two platforms agree on the brand, plus per-platform candidates when they don't. Resolution costs nothing, so resolve the whole set before spending a credit.
Step 3 — pull active ads per brand. One search per brand per snapshot. Each search costs one credit and returns the ads plus a total count of everything that matched, which is your sizing number even when you only page through the first 60 results:
import requests, statistics, time
API_KEY = "adl_your_api_key"
BRANDS = ["gymshark", "alphalete", "youngla", "nvgtn"]
def fetch_brand(keyword):
r = requests.post(
"https://adlibrary.com/api/search",
headers={"Authorization": f"Bearer {API_KEY}"},
json={
"keyword": keyword,
"appType": "3", # e-commerce vertical
"daysBack": 30, # active in the last 30 days
"sortField": "-days", # longest-running first
"pageSize": 100,
},
timeout=60,
)
r.raise_for_status()
return r.json()
snapshot = {}
for brand in BRANDS:
data = fetch_brand(brand)
ads = data["results"]
snapshot[brand] = {
"total_matched": data["total"],
"platforms": sorted({ad["platform"] for ad in ads}),
"median_runtime_days": statistics.median(
ad.get("days_count", 0) for ad in ads
) if ads else 0,
}
time.sleep(7) # stay under 10 requests/minute
set_total = sum(b["total_matched"] for b in snapshot.values())
for brand, m in snapshot.items():
m["creative_sov_pct"] = round(100 * m["total_matched"] / set_total, 1)
print(brand, m)
Two practical notes. The 7-second sleep keeps you under the documented 10-requests-per-minute limit, and if you do hit a 429, honor the Retry-After header rather than hammering. Failed searches refund their credit automatically, so an error never costs you anything. More patterns like this live in the Python ad library API cookbook.
Step 4 — compute the three metrics. Creative count per brand (the total field), platforms live (distinct platform values), and median runtime (days_count). If you want the estimated-activity variant, weight each ad by its impression bucket midpoint and sum, clearly labeled as estimated.
Step 5 — normalize to shares. Each brand's number divided by the set total, per metric. Now "are we louder?" has three answers instead of a shrug.
Step 6 — store the snapshot. A dated row per brand per month, in anything from a spreadsheet to a proper competitor ad database. If your stakeholders live in spreadsheets, a Google Sheets competitor ad dashboard wired to the same API gets you charts without infrastructure.
Worked Example: A Benchmark Table for Four Brands
Hypothetical numbers for a fitness apparel set, snapshot taken over a 30-day window. Yours will differ, the shape of the analysis will not.
| Brand | Active creatives | Creative SOV | Platforms live | Median runtime | Est. activity SOV |
|---|---|---|---|---|---|
| You | 38 | 18% | 3 (FB, IG, TikTok) | 11 days | 15% |
| Competitor A | 92 | 43% | 5 (+YouTube, Pinterest) | 24 days | 49% |
| Competitor B | 51 | 24% | 4 (+YouTube) | 16 days | 22% |
| Competitor C | 31 | 15% | 2 (FB, IG) | 9 days | 14% |
The creative SOV column comes straight from the counts: 38 of 212 total creatives is 18%. The estimated-activity column reweights by reach signals and tells a harsher story, because Competitor A's ads are heavier as well as more numerous.
Read it like a campaign benchmarking exercise, not a scoreboard. Three findings jump out. Competitor A is the category bully: highest count, broadest spread, and runtimes long enough to prove the creatives are converting rather than churning. Competitor B's YouTube presence with above-average runtime suggests a working video funnel you don't have. And your own 11-day median runtime, lowest in the set besides C, says your creatives die young — a creative fatigue or creative quality problem that no amount of extra budget fixes by itself.
That last point matters for what you do next. If the brief was "match Competitor A's loudness," the table says the cheaper first move is making creatives that survive past day 11, because louder distribution of dying ads buys expensive brand awareness at best.
Tracking Share of Voice Shifts Over Time
A single snapshot answers "are we louder than them today." The compounding value arrives when you take the same measurement every month, because deltas are where proxy SOV is most trustworthy.
Three rules keep the time series honest. First, freeze the query. Same keywords, same window, same platform scope, same set. Any methodology change starts a new series, annotated, rather than silently bending the old one. Second, snapshot on a schedule, not on curiosity. Monthly fits most categories. Move to biweekly during launch seasons. Third, store raw counts alongside shares, so a shrinking denominator (the whole category going quiet) is visible instead of masquerading as your growth.
Then set alert thresholds so the data interrupts you instead of waiting to be read. Useful defaults: any brand's creative SOV moving more than 8 points month over month, any platform entry or exit, and any competitor's new-creative rate doubling. That last one is effectively detecting a competitor campaign launch days after it happens rather than discovering it in their quarterly results. The whole loop of pull, compute, compare, alert is precisely the kind of job you should automate end to end once the manual version has proven its worth, and the competitor ad monitoring use case shows the standard architecture.
Watch seasonality before you panic. Every brand in a gifting category triples activity in Q4, so your November SOV drop may just mean rivals seasonally outspend you. Compare year over year where you have the history, and against the set total always.
Reading the Moves: What an SOV Shift Actually Tells You
The number is the trigger. The interpretation is the deliverable. Most SOV movements decompose into a handful of recognizable strategy changes, and the signal pattern tells you which one you are looking at.
Creative count spikes while median runtime collapses. That is a testing sprint. The competitor is hunting for a new angle, audience, or product-market read, and most of those ads will be dead in two weeks. Don't match the volume. Watch which creatives survive the sprint, because the survivors are the strategy.
Creative count drops while a few ads accumulate runtime. Consolidation. They found winners and are scaling spend into them. This is the moment their true spend SOV is most likely rising while their creative SOV falls, a divergence worth flagging explicitly in your report. A look at their longest-running ads through an ad timeline analysis tells you what they are scaling.
A new platform appears in their coverage. Channel expansion, which almost always means new budget or a deliberate reallocation. If a B2B competitor lights up LinkedIn after years of Meta-only, their ICP or their funnel changed. The competitor ad analysis manual covers how to take a finding like this from observation to testable hypothesis.
The whole set's activity declines while yours holds. Category pullback. Your SOV rises without you spending a euro more, which is exactly the excess share of voice condition the IPA effectiveness research links to share growth. Recessions and platform cost spikes create these windows, and the brands that hold paid social spend through them tend to exit with more market share than they entered.
Their geo footprint widens. Market entry. Ads appearing in the ad libraries for a new country usually precede localized landing pages and press by weeks. If you operate in that market, you just got an early warning that no competitive intelligence newsletter would have delivered.
The discipline that makes all of this credible: write the interpretation next to the data point, dated, and check yourself two months later. Auditable calls earn the metric its seat in the deck.
Automating Paid Social Share of Voice with an API
The manual version of this measurement is a fine proof of concept and a terrible monthly habit. Four transparency surfaces, six brands, three metrics, screenshots into a deck — that is half a day, every month, of work a script does in two minutes.
Meta deserves credit for making any of this possible: its free Ad Library API is the original transparency interface, and for political and issue-ad research or EU reach data it is the right tool. Commercial SOV across a full competitive set was never its goal: coverage outside the EU and UK is limited to political and issue ads, it is Meta-only, and access runs through app review and tokens that expire every 60 days.
The AdLibrary API is the paid upgrade built for exactly this workflow. One adl_ key, no app review, and the same search across Facebook, Instagram, TikTok, YouTube, Google, LinkedIn, Twitter, Pinterest and more, with the runtime, heat, and estimated-activity signals that proxy SOV runs on. The multi-platform coverage is the point: presence SOV is only measurable if one query can see every platform your category buys.
Scheduling is whatever your stack already does. A GitHub Actions workflow runs the snapshot on a cron with no server, n8n handles it if you want the alerting wired visually, and a plain cron job running the Python script above works fine. Budget-wise the math is small: a six-brand set, snapshotted monthly across platforms, costs six credits per snapshot plus free brand resolution. Even a weekly cadence with deeper pagination stays comfortably inside the Business plan's 1000+ monthly credits at €329/mo, which is the tier that includes API access along with integration help from the team. If SOV reporting is about to become someone's recurring job, the pricing page makes the build-vs-bill comparison easy.
Frequently Asked Questions
What is share of voice in paid social?
Share of voice in paid social is your brand's slice of total advertising presence in your competitive set. Classically it is computed from spend, but since competitor social budgets are not published, practitioners measure it through public signals: each brand's share of active creatives, platform coverage, and estimated activity drawn from ad transparency libraries.
How do I measure competitor share of voice without spend data?
Use ad libraries. Pull each competitor's active ads from the Meta Ad Library, Google Ads Transparency Center, LinkedIn Ad Library, and TikTok's Commercial Content Library, or through one unified API. Count active creatives, platforms live, and ad runtimes per brand, then divide each brand's numbers by the set total to get proxy SOV percentages you can track monthly.
Is creative count a reliable proxy for ad spend?
It is directionally useful and precisely wrong. Creative volume correlates with budget because heavy spenders test and refresh more, but one creative can carry a massive budget while fifty share a small one. Pair counts with median runtime and platform spread, report trends rather than single levels, and label everything as visible activity, never as spend.
How often should I track paid social share of voice?
Monthly for most categories, biweekly during launch seasons or active competitive fights. The cadence matters less than consistency: freeze your competitive set and query parameters so each snapshot is comparable, and store raw counts alongside shares so you can distinguish your movement from the category's.
What is the difference between share of voice and share of market?
Share of voice measures advertising presence; share of market measures sales. The IPA effectiveness research by Binet and Field found the gap between them predicts growth: brands maintaining SOV above their market share tend to grow, while brands letting SOV fall below it tend to shrink. That excess SOV logic is why the tracking feeds budget decisions as much as competitive curiosity.
Are You Louder Than Them? Now You Can Answer
Share of voice in paid social stopped being unmeasurable the day ad libraries went public. What replaced the media-plan fantasy is a proxy built from three honest signals (active creatives, platform coverage, runtime) normalized across a frozen competitive set and tracked on a schedule. It will not tell you a rival's budget to the euro. It will tell you who is getting louder, on which platforms, with what creative strategy, and it will tell you weeks before their results do.
Run the manual version once this week: resolve your set, pull the counts, build the table. If the table earns a permanent slot in your reporting, automate it. One API key on the Business plan turns the whole pipeline into a scheduled script, and the question from the standup gets a number, a trend line, and an answer you can defend.
Related Articles

How to Automate Competitor Ad Monitoring End to End
Build Slack competitor ad alerts in 30 minutes: an incoming webhook, a Node poll script with first_seen filtering, dedup on ad_key, and cron scheduling.

Cross-Platform Ad Tracking: Competitor Ads in One Pipeline
Track competitor ads across Meta, Google, and LinkedIn in one pipeline: resolve IDs, curate with one call, dedup by ad key, report from a unified timeline.

Build a Competitor Ad Database: Schema, Pipeline, and Queries
Build a competitor ad database with a four-table schema, an API ingestion pipeline with dedup, and eight SQL queries for velocity, formats, and hooks.

Paid Social in 2026: Platform Mix, Benchmarks, Plays
Paid social platform mix for 2026 with CPM/CTR/CPA benchmarks, audience strengths, and the cross-platform diligence step that decides where budget goes.

The Competitor Ad Analysis Manual: A Systematic Method for Extracting Creative Intelligence
A practitioner's manual for competitor ad analysis: observation ledger, Meta Ad Library extraction, creative categorization, hook decoding, and brief writing — all in one repeatable process.

Meta Ad Library Spend Data: The 7-Step Estimation Workflow (2026)
Meta's ad library hides spend figures. Use this 7-step proxy workflow to estimate competitor budgets and benchmark your own. Start your free trial today.

What Meta Ad Library Doesn't Show You in 2026
Meta Ad Library hides spend ranges, run length, performance signals, and targeting data. Here's every blind spot — and how to fill each one.