Free Search Volume Data: Using Bing Webmaster API with Python
Google Keyword Planner hides real search volume behind a Google Ads account. Here's how to get actual search demand data for free using the Bing Webmaster API — with real CLI commands, real output, and honest limitations.
Search volume is the number every keyword research tool sells you. Ahrefs, SEMrush, Moz — they all surface it as a core metric. But none of them actually generate that number. They estimate it, model it, or buy it from third-party data providers.
There are exactly two APIs that give you real search volume data from a real search engine. One is Google’s Keyword Planner, which requires an active Google Ads account and hides exact numbers behind broad ranges unless you’re spending money. The other is the Bing Webmaster API, which is free, requires no ad spend, and gives you actual weekly impression data going back ~25 weeks.
Nobody talks about the Bing one. Let’s fix that.
Why Bing Webmaster API
Here’s what most SEO tools do for search volume: they take Google’s range data (or buy it), apply a multiplier based on click-through rates, and present a single monthly number. It’s an estimate of an estimate. When you see “volume: 1,200/month” in Ahrefs, that number has been through two layers of modeling.
Bing Webmaster API takes a different approach. It returns actual weekly impression data from Bing’s search results. Not an estimate — real impressions that real search results generated. You get ~25 weeks of historical data per keyword, which lets you calculate averages, spot trends, and see seasonal patterns.
The catch: it’s Bing data, not Google data. Bing has roughly 2-3% of the search market. Absolute numbers will be much lower than Google. But the relative pattern — which keywords have more demand than others, which are trending up or down — tends to correlate well with Google because search behavior is search behavior regardless of engine.
Getting Your Free API Key
- Go to Bing Webmaster Tools and sign in with any Microsoft account
- Add and verify a site (you can add any site you control — even a placeholder)
- Once verified, go to Settings → API access
- Copy your API key
That’s it. No credit card, no trial period, no usage limits that matter for keyword research. The key works immediately.
Store it in your environment:
export BING_API_KEY="your_key_here"
The API Endpoint
Bing keeps it simple. One endpoint, GET request, JSON response:
https://ssl.bing.com/webmaster/api.svc/json/GetKeywordStats?q={keyword}&country={country}&language={language}&apikey={key}
Parameters:
q— URL-encoded keywordcountry— two-letter country code (us, cn, gb, etc.)language— language code (en-US, zh-CN, etc.)apikey— your key
The response is an array of weekly data points, each with an Impressions field and a date. Here’s what a raw response looks like for “website builder” in the US:
{
"d": [
{"Impressions": 1320, "Date": "/Date(1722470400000)/"},
{"Impressions": 1180, "Date": "/Date(1723075200000)/"},
{"Impressions": 1410, "Date": "/Date(1723680000000)/"}
]
}
Running It From the Terminal
I built a CLI tool that wraps this API. It handles batching, trend detection, and demand-level categorization. Here’s a real run against four competitive keywords:
python3 -m zens_ink.keyword_volume "website builder,landing page,portfolio website,seo optimization" --country us --lang en-US
Output:
====================================================================================================
Keyword Volume | 4 keywords | us/en-US
====================================================================================================
website builder avg/wk= 1298 qtr= 14147 up 5% [MEDIUM ]
landing page avg/wk= 256 qtr= 3241 up 18% [LOW ]
portfolio website avg/wk= 79 qtr= 907 flat 3% [MINIMAL ]
seo optimization avg/wk= 30 qtr= 370 up 33% [MINIMAL ]
4 with data | 0 no data
TOP 5:
website builder avg/wk= 1298 up 5%
landing page avg/wk= 256 up 18%
portfolio website avg/wk= 79 flat 3%
seo optimization avg/wk= 30 up 33%
Each keyword gets average weekly impressions, a quarterly total, a trend direction (comparing recent 4 weeks vs prior 4 weeks), and a demand tier (HIGH/MEDIUM/LOW/MINIMAL/NONE).
The trend is genuinely useful. “Landing page” trending up 18% tells you something a static monthly volume number doesn’t — demand is accelerating.
Exporting to CSV
For keyword lists longer than a handful, pipe the results into a spreadsheet:
python3 -m zens_ink.keyword_volume --file seed_keywords.txt --csv volume_results.csv --country us --lang en-US
The CSV includes all data points for each keyword:
keyword,avg_weekly,latest_weekly,quarterly,trend,weeks,country,language
astro theme,6,6,84,down 38%,26,us,en-US
astro blog,3,2,43,flat 0%,22,us,en-US
What the Demand Tiers Mean
I calibrated the tiers against Bing’s market share. Since Bing represents roughly 2-3% of searches, multiply by 30-50x to estimate Google volume:
| Bing avg/wk | Tier | Est. Google monthly |
|---|---|---|
| 5,000+ | HIGH | 600K+ |
| 1,000-4,999 | MEDIUM | 120K-600K |
| 100-999 | LOW | 12K-120K |
| 1-99 | MINIMAL | Under 12K |
| 0 | NONE | No data / no demand |
These multipliers are rough. Bing’s market share varies by demographic (older users, enterprise environments, Edge defaults). But for comparing keywords against each other — “is keyword A bigger than keyword B?” — the relative ranking is reliable.
The Honest Limitations
This tool is not perfect. Here’s where it falls short, based on hundreds of real queries.
Long-tail keywords often return zero. Developer-focused keywords are particularly sparse:
python3 -m zens_ink.keyword_volume "astro seo,python seo,seo cli,llms.txt" --country us --lang en-US
astro seo avg/wk= 0 qtr= 0 no_data [NONE ]
python seo avg/wk= 0 qtr= 0 no_data [NONE ]
seo cli avg/wk= 0 qtr= 0 no_data [NONE ]
llms.txt avg/wk= 27 qtr= 332 down 16% [MINIMAL ]
Three out of four returned nothing. These are real keywords that get Google searches, but Bing doesn’t have enough data to report on them. This is the trade-off of using Bing’s smaller dataset — popular keywords work great, niche keywords disappear.
Chinese keywords are nearly useless. Bing has minimal market share in China:
python3 -m zens_ink.keyword_volume "SEO审计,关键词研究,网站优化" --country cn --lang zh-CN
SEO审计 avg/wk= 0 qtr= 0 no_data [NONE ]
关键词研究 avg/wk= 0 qtr= 0 no_data [NONE ]
网站优化 avg/wk= 24 qtr= 98 insufficient [MINIMAL ]
One out of three returned sparse data. If you’re doing Chinese keyword research, Bing volume data will not help you. Use Google Search Console impressions from an existing verified site instead — real Google data, zero cost, just limited to keywords you already rank for.
The API is rate-limited but generously. I’ve run batches of 50+ keywords without issues. The CLI adds a 0.3-second delay between requests as a courtesy. No official rate limit is documented, but I haven’t hit one.
When Bing Volume Actually Shines
Despite the limitations, Bing Webmaster API fills a specific gap that no other free tool covers:
Validating head and mid-tail keywords. When you’re deciding between “website builder” and “landing page” as a topic cluster anchor, Bing gives you real demand data to compare them. “Website builder” at 1,298 avg/wk vs “landing page” at 256 — clear signal about which has more demand.
Spotting trending topics. The 25-week history lets you see momentum. “SEO optimization” trending up 33% over the last 8 weeks is more actionable than a static “12,000/month” estimate.
Building keyword priority matrices. Combine Bing volume with the KD analysis tool, and you can sort keywords by the ratio of demand to difficulty — the actual metric that matters for deciding what to write first:
# Step 1: Get volume
python3 -m zens_ink.keyword_volume "astro blog" "astro theme" --country us --lang en-US
# Step 2: Get difficulty
python3 -m zens_ink kd "astro blog"
python3 -m zens_ink kd "astro theme"
Cross-validating Google Keyword Planner ranges. Google’s free tool shows ranges like “1K-10K” — which keyword is actually closer to 1K vs 10K? Bing’s specific number helps you triangulate.
Supplementing With Brave Search API
For keywords where Bing returns zero, Brave Search API can estimate relative demand through result diversity analysis — counting total results, dedicated articles, and ad presence. It’s not real volume, but it’s better than nothing:
python3 -m zens_ink.brave_volume "astro template"
Brave Volume Estimation | 1 keywords | US/en
[1/1] astro template demand= 55 est_vol= 4000
The demand score (0-100) and estimated volume are modeled from SERP characteristics, not real impression data. Treat them as directional signals — “does this keyword have meaningful search activity at all?” — not as precision metrics.
The Brave API gives you 2,000 free queries per month. For long-tail keywords that Bing can’t measure, running Brave as a fallback creates a reasonable two-tier system: Bing for absolute volume, Brave for relative demand estimation.
Building a Volume Pipeline
Here’s how I chain these tools together in practice:
- Seed keywords → Google Autocomplete mining with
keyword_research(hundreds of suggestions, free) - Volume check →
keyword_volumeon the full list via Bing API (real demand data) - Fallback →
brave_volumeon keywords Bing returned zero for (relative demand estimate) - Difficulty → kd analysis on keywords with meaningful volume (SERP structure scoring)
- Priority → Sort by volume-to-difficulty ratio — write the high-volume, low-difficulty keywords first
All five steps run from the terminal. Zero monthly fees. The only API keys you need are free: Bing Webmaster (volume), Serper.dev (SERP data, 2,500 free queries), and Brave (fallback volume, 2,000 free queries).
Bottom Line
Bing Webmaster API is the most underutilized free data source in SEO. It won’t replace Ahrefs for comprehensive keyword research — the long-tail coverage is too thin. But for validating keyword priority, spotting trends, and building a zero-cost research pipeline, it does the job.
The key is knowing when to use it (head terms, trending detection, English keywords) and when to skip it (long-tail, Chinese, sub-100 monthly volume). Combine it with SERP-based difficulty scoring and you have a keyword research workflow that costs $0/month and makes decisions based on real data, not proprietary estimates.
For the full open-source toolkit this is part of, see Open Source SEO Tools: What Actually Works.
Want to run this analysis on your own site?
ZensInk Pro automates this pipeline. One command, from seed keywords to content plan.
Get Pro →