Google vs Bing coverage
Agent skill
seo-bing-coverage · source on GitHub · install with /plugin install aeo-toolkit --marketplace Advance-Labs/aeo-toolkit (all install options)
An agent loads it when: Find where a site performs differently on Google and Bing, and check Bing crawl and index health. Use when someone asks “are we on Bing”, “why did Google traffic drop but Bing didn’t”, “is Bing indexing our pages”, “does Bing matter for ChatGPT or Copilot”, “compare Google and Bing queries”, or “submit our URLs to Bing / IndexNow”. Requires the aeo-toolkit aeo-search MCP server with Google OAuth and a Bing Webmaster API key.
Google Search Console tells you how you do on Google. Bing Webmaster Tools tells you the same for Bing, which also feeds Microsoft Copilot and is widely reported to be one of the sources behind ChatGPT search. Comparing the two separates “Google ranking problem” from “content or technical problem”, and Bing exposes keyword data Google doesn’t.
When this matters / when it doesn’t
- Matters: a traffic drop where you need to know if it is one engine or both; a site that is not verified in Bing at all; wanting AI-assistant visibility beyond Google.
- Matters less: sites whose Bing traffic is tiny. Divergence analysis needs volume (below). Bing may still matter for index presence even when its click share is small.
Steps
- Check both properties exist.
list_gsc_sitesandlist_bing_sites. If the site is not in Bing Webmaster, stop and say so: nothing below works, and that is the finding. Verification is done by the owner in Bing Webmaster Tools; ask rather than assume. The Bing site URL can differ from the GSC property (sc-domain:form), so passbingSiteUrl. - Crawl and index health first.
bing_index_healthwithsiteUrl(andurlfor a single page). It returns crawl stats (latest: crawled pages, in-index, 4xx, 5xx), crawl issues, URL-submission quota and, withurl, single-URL info. ReadinIndexagainst what you expect, and look at crawl issues before ranking questions. - Compare queries.
compare_engines(siteUrl,startDate,endDate,limit) merges query rows from both engines with acoverageblock saying whether each engine answered. A missing engine isnullwith a reason, never zero. Bing rows are an unwindowed aggregate here: the date range applies to Google only. So clicks are not like-for-like. Use it to see which queries exist on one engine and not the other, not to compare click counts. - Find divergence.
engine_divergence(siteUrl,startDate,endDate,thresholddefault 0.3,minClicksdefault 50) splits the range into halves and classifies each query:"google_specific","bing_specific","broad", or"insufficient_data". Both engines are windowed here (Bing bucketed locally by row date). Use at least a few weeks so each half has volume. A 1-day range is rejected. - Keyword gaps.
bing_keyword_research(query, optionalcountry,languagesuch asen-CA, which needscountrytoo) returns impression and broad-match volume around a seed. Google Search Console has no equivalent. Treat as relative demand, not exact. - Getting new pages seen by Bing. IndexNow: host a key file on the site, then submit
changed URLs (GET for one, JSON POST up to 10,000 URLs). Participating engines share
submissions with each other. It is a notification, not a guarantee of indexing. Check
quotainbing_index_healthand the site’s existing IndexNow setup before adding one.
How to read the result
| Classification | Reading |
|---|---|
"google_specific" | Held on Bing, dropped on Google. Suspect a Google ranking or indexing change. |
"bing_specific" | Held on Google, dropped on Bing. Suspect Bing indexing or verification. |
"broad" | Dropped on both. Suspect content or a technical problem. |
"insufficient_data" | Baseline under minClicks on an engine, an engine unavailable, or no move past the threshold. |
"insufficient_data" is the expected answer for most of a long tail and for small sites. It
is not “no problem”. Do not lower minClicks until something classifies; a 100% drop from
three clicks is noise. If every row is "insufficient_data", report that the site is too
small on one engine to compare and fall back to bing_index_health and totals from
bing_traffic_stats.
What it cannot tell you
- Whether a page is indexed by Bing.
bing_index_healthurl info has anisPageIndexedfield that is always false here because Bing’s response omits it. Do not report “not indexed” from it. ADocumentSizeabove zero is the closest signal that Bing holds the page; say it is an inference. - Why a page moved. Both engines show outcomes, not causes.
- How ChatGPT or Copilot choose sources. See below.
Why Bing matters for AI assistants (and how sure we are)
OpenAI’s crawler documentation states that sites blocking OAI-SearchBot do not appear in ChatGPT search answers (they may still appear as links). Separately, many industry sources report that ChatGPT search draws on Bing’s index, but we could not confirm that from an OpenAI primary source, so phrase it as “reported”, not established. Microsoft Copilot is a Microsoft product; its use of Bing is plausible but also not verified here. Practical advice that holds either way: make sure Bing can crawl and index the site, do not block Bingbot, and keep OAI-SearchBot allowed.
Pitfalls
- Reading
compare_enginesclick columns as a like-for-like comparison. - Reporting “not indexed” from
isPageIndexed. - Treating
"insufficient_data"as a clean bill of health. - Passing the GSC
sc-domain:string as the Bing site when Bing registered thehttps://form.
Sources
- OpenAI crawler docs, https://platform.openai.com/docs/bots (OAI-SearchBot behaviour), verified 2026-11-13.
- IndexNow documentation, https://www.indexnow.org/documentation (10,000 URL limit, key file, cross-engine sharing), verified 2026-11-13.
- Tool behaviour from the aeo-search MCP tool definitions, verified 2026-11-13.
- ChatGPT-uses-Bing and Copilot-uses-Bing: secondary sources only, NOT verified.
AEO Toolkit is an open-source instrument by Advance Labs.