← Back to Journal
· 6 min read

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

  1. Go to Bing Webmaster Tools and sign in with any Microsoft account
  2. Add and verify a site (you can add any site you control — even a placeholder)
  3. Once verified, go to Settings → API access
  4. 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 keyword
  • country — 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/wkTierEst. Google monthly
5,000+HIGH600K+
1,000-4,999MEDIUM120K-600K
100-999LOW12K-120K
1-99MINIMALUnder 12K
0NONENo 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:

  1. Seed keywords → Google Autocomplete mining with keyword_research (hundreds of suggestions, free)
  2. Volume checkkeyword_volume on the full list via Bing API (real demand data)
  3. Fallbackbrave_volume on keywords Bing returned zero for (relative demand estimate)
  4. Difficultykd analysis on keywords with meaningful volume (SERP structure scoring)
  5. 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 →