How to calculate Share of Voice for SEO using Claude AI (prompt included)
A client asked me for a Share of Voice report last week.
Simple request, right? Except I don't have the enterprise tier of SEMRush. Or Ahrefs. Or any of the tools that give you this report out of the box.
So I did what any reasonable person would do in 2026: I asked Claude to help me build one.
Two hours later, I had a working Python script that pulls data from DataForSEO, optionally integrates with Google Search Console, calculates SoV across any competitor set I want, and spits out nice charts.
Total cost: about $0.15 in API calls per report.
Let me walk you through what Share of Voice actually is, why you should care, and how I built this thing.
What is Share of Voice in SEO?
In simple terms, Share of Voice (SoV) in SEO measures your brand's visibility in organic search results compared to your competitors within a defined market. Itβs not just about ranking #1 for a single keyword; itβs a holistic view of how much of the overall "conversation" (i.e., search traffic) your brand captures for relevant terms.
Think of it like a pie. If the entire pie represents all potential organic search traffic for a specific industry or set of keywords, your SoV is the slice of that pie your brand is currently earning.
If you and three competitors are fighting for the same keywords, and you're getting 25% of all the organic clicks, your Share of Voice is 25%.
That's it. No magic.
Why Measure Share of Voice in SEO?
Here's the thing about SEO metrics: most of them are vanity metrics in isolation.
- Rankings? Cool, but are you actually getting traffic?
- Traffic? Nice, but are you winning against competitors?
- Keywords? Great, but what's your actual market position?
Share of Voice answers the question that actually matters: "How much of my market's organic search attention am I capturing?"
Practical reasons to track SoV:
1. Competitive benchmarking that makes sense Telling your CEO "we rank #3 for 'enterprise security software'" means nothing. Telling them "we capture 12% of organic search traffic in our category, up from 8% last quarter" β that's a number they can work with.
2. Budget justification Want more SEO budget? Show the gap between your SoV and the market leader. "We're at 12%, the leader is at 45%. Here's what we need to close that gap."
3. Trend analysis Monthly SoV trends show if your SEO efforts are actually working. Not just "traffic went up" but "our share of the market is growing."
4. Realistic goal setting If the market leader has 50% SoV and has been doing SEO for 10 years, you're not catching them next quarter. But going from 5% to 10%? That's achievable. SoV gives you realistic targets.
How the Tool Works - The SoV Report Tool I Built
Here's the architecture I ended up with.
Here's what a report looks like (with fake company names):
============================================================
Share of Voice Analysis
Mode: Hybrid (GSC + DataForSEO)
============================================================
Main Brand: AcmeSecurity (acmesecurity.io)
Competitors: 5
- TechShield (techshield.com)
- SecureBase (securebase.io)
- GuardianSoft (guardiansoft.com)
- CyberWall (cyberwall.com)
- DefenseNet (defensenet.io)
============================================================
RESULTS
============================================================
Monthly Share of Voice:
2024-01: 5.23%
2024-06: 6.78%
2024-12: 8.07%
2025-01: 9.35%
Quarterly Share of Voice:
2024:
Q1: 5.50%
Q2: 6.25%
Q3: 7.10%
Q4: 8.03%
2025:
Q1: 9.96%
Yearly Share of Voice:
2024: 6.72%
2025: 9.96%
2024 vs 2025 Change: +3.24 percentage points
And it generates charts - monthly trends, quarterly comparisons, year-over-year bars, and a horizontal bar chart showing all competitors' SoV.


The Hybrid Approach - Search Console + DataForSEO
Here's the clever bit: for your own brand, you can use Google Search Console data (actual clicks, not estimates).
For competitors, you use DataForSEO's estimated traffic.
Why? Because GSC gives you real data for your properties, but you can't access your competitors' GSC.
DataForSEO estimates competitor traffic using CTR models and search volume data.
Is it perfect? No. Is it directionally accurate and way cheaper than enterprise SEO tools? Yes.
Branded vs Non-Branded
I added a flag to exclude branded keywords from the analysis.
Why does this matter?
If you're comparing yourself against a company like "TechGiant Corp" that has massive brand awareness, their SoV will be inflated by people searching "techgiant login" or "techgiant pricing." That's brand awareness, not SEO competition.
Non-branded SoV shows you who's winning the generic category terms - "enterprise security software," "cloud backup solutions," etc. That's the real SEO battleground.
The Real Point Here - Build vs Buy
This isn't really a post about Share of Voice.
It's about the fact that expensive enterprise tools have trained us to think we need them for everything. We don't.
Most of the data these tools provide comes from the same underlying sourcesβDataForSEO, SimilarWeb, Semrush's own API, etc. They are often just wrapping that data in a nice UI and charging $500/month for the privilege.
If you have a specific need and some technical comfort (or access to Claude), you can often build exactly what you need for a fraction of the cost.
The SoV tool I built:
- Does exactly what I need without the fluff.
- Costs ~$0.15 per report in API calls.
- Integrates with GSC for 100% accurate brand data.
- Filters data to exclude branded keywords whenever I want.
- Generates exact charts tailored for my client reports.
- Took an afternoon to build.
Would I recommend everyone build their own SEO tools? No. If SEMrush or Ahrefs works for you and fits your budget, use it, we use it (just no the top tier).
But if you're hitting paywalls for reports you actually need, remember: the data is out there. You just need to assemble it.
Want the Tool?
I'm not selling anything here. The script is a Python file that uses:
- DataForSEO API (they have very reasonable pay-as-you-go pricing).
- Google Search Console API (free).
- Matplotlib for generating the visual charts.
I'm sharing the full prompt here:
Key endpoints to explore:
dataforseo_labs/google/historical_bulk_traffic_estimation/liveβ for historical traffic.dataforseo_labs/google/ranked_keywords/liveβ for keyword-level data and non-branded analysis.- GSC Search Analytics API β for your own verified traffic.
Or, you can just ask Claude to help you piece it together. That's exactly what I did.
Hereβs a breakdown of how such a report can be constructed, featuring mock names for clarity:
Share of Voice Calculation - Technical Deep Dive for Geeks
Data Sources
For Your Brand (Alpha Solutions): Google Search Console API
Endpoint: searchconsole.searchanalytics.query
Authentication: OAuth 2.0
Data fetched:
Clicks: Actual clicks from Google Search to your website
Impressions: How many times your site appeared in search results
CTR: Click-through rate
Position: Average ranking position
API Request Example: { 'startDate': '2024-01-01', 'endDate': '2026-01-24', 'dimensions': ['date'], 'rowLimit': 25000, 'dataState': 'final' }
What we use: Monthly aggregated clicks (actual traffic from search)
For Competitors: MarketDataPro Historical Bulk Traffic Estimation API
Endpoint: POST /v3/marketdata_labs/google/historical_bulk_traffic_estimation/live
API Request Example:
{ "targets": [ "securetech.com", "innovateflow.io", "dataweave.com", "cybershield.com", "nexgenetworks.com", "safetysolutions.com", ... ], "location_code": 2840, # United States "language_code": "en", "date_from": "2024-01-01", "date_to": "2026-01-25", "item_types": ["organic"] # Organic search only }
Data fetched (per domain, per month):
ETV (Estimated Traffic Volume): Calculated as CTR Γ Search Volume for all keywords the domain ranks for
Keyword count: Number of keywords ranking
Position distribution: Rankings in pos 1, 2-3, 4-10, etc.
The Calculation Process
To get our final numbers, we first need to break down the traffic into two distinct buckets: your verified internal data and the external market estimates.
Brand Performance (Actual Clicks)
Source: Google Search Console (GSC)
| Month | Clicks |
| 2024-09 | 380 |
| 2024-10 | 534 |
| 2024-11 | 459 |
Competitor Performance (Estimated Traffic Volume - ETV)
Source: DataForSEO Labs API
| Month | Comp A | Comp B | Comp C | Others |
| 2024-09 | 14,832 | 18,456 | 1,892 | 8,567 |
| 2024-10 | 15,102 | 19,234 | 2,103 | 8,567 |
Aggregation for Quarters and Years
- Quarterly SoV: Average of the 3 months in that quarter.
- Annual SoV: Average of the 12 months in that year.