~ / guides / How to Scrape the Bing Knowledge Panel (2026)

How to Scrape the Bing Knowledge Panel (2026)

GL
Greta Lind
Bing data engineer · about the author
the short version
  • The Bing knowledge panel is the entity card on the right rail, and it is drawn from the Bing knowledge graph, Microsoft's database of people, places, and organizations. To scrape the Bing knowledge graph you parse that panel, since there is no public entity API anymore.
  • In my July 2026 tests a plain request to bing.com/search returned the page but the right rail (<aside id="b_context">) held Copilot chat wiring, not an entity card. Adding a Chrome User-Agent flipped the same URL to HTTP 200 with a hidden CAPTCHA and zero results.
  • The official Bing Entity Search API, the endpoint that queried the knowledge graph, was retired with the rest of the Bing Search APIs on August 11, 2025 (Microsoft), so there is no first-party route left.
  • What works: a residential proxy with a pinned market and a slow rate, or a scraper API that renders the page and returns the knowledge_graph block as JSON.

I went looking for a clean way to scrape the Bing knowledge graph, the entity panel Bing paints on the right side of the results for a person, a place, or a company. What I found in July 2026 was two dead ends stacked on top of each other. The official API that used to serve this data is gone, and when I fetched the panel myself Bing either left it out of the HTML entirely or answered with a CAPTCHA.

This guide is that test written down. I show the exact requests I ran, what Bing returned each time, the Python to parse the panel on the runs where it does appear, and the managed route that returns the knowledge graph as structured JSON. Every measurement below is from my own runs against live bing.com/search.

What is the Bing knowledge panel, and what can you scrape from it?

The Bing knowledge panel is the entity card Bing renders on the right rail of the search results, and it is drawn from the Bing knowledge graph, Microsoft’s database of entities and their attributes. For an entity query like a person, a place, an organization, or a movie, the panel carries a title, an entity type, a short description, a thumbnail, a block of attributes or facts, and profile links out to Wikipedia and the official site.

The data worth scraping from the panel falls into a few fields:

Microsoft’s own Bing Entity Search announcement described the knowledge graph as spanning “famous people, places, movies, TV shows, video games, and books,” plus local businesses, which is the same entity set the panel still surfaces today.

Bing is worth pulling this from because it ranks and describes entities differently than Google. StatCounter GlobalStats put Bing near 10% of worldwide desktop search in 2026, and higher inside Microsoft-ecosystem enterprises that default to Edge. The question is whether any supported API still hands you this graph, which is where the picture got worse.

Is there an official Bing knowledge graph API in 2026?

There is no official Bing knowledge graph API in 2026. The Bing Entity Search API was the endpoint that queried the knowledge graph directly, and Microsoft retired it along with the entire Bing Search API family on August 11, 2025. The Microsoft Lifecycle announcement states that “any existing instances of Bing Search APIs will be decommissioned completely, and the product will no longer be available,” and the retirement took Entity Search down with Web, Image, News, Video, and Spellcheck.

Microsoft’s recommended replacement is Grounding with Bing Search inside Azure AI Foundry, which is built to feed live web data into an LLM agent rather than return a parsed entity card. It is priced at $14 per 1,000 transactions, and it does not hand you the knowledge graph as fields you can store. So the only route to a structured Bing knowledge panel now runs through the public SERP, and that is where I pointed my scraper next.

What does Bing return when you scrape the knowledge panel?

When you scrape the Bing knowledge panel with a plain HTTP request, Bing usually returns the search page without a populated entity card, and a browser-looking request returns a CAPTCHA instead. I hit https://www.bing.com/search?q=albert+einstein two ways from the same IP, back to back, and neither gave me the clean entity attributes I wanted.

RequestUser-AgentStatusBody sizeli.b_algoRight rail #b_contextCAPTCHA
Plain GETnone200118 KB10present, Copilot wiringnone
Browser GETChrome 126 desktop20072 KB0n/a (challenge)present

The plain request slipped through and returned ten organic results in li.b_algo, and the right rail was there as an <aside id="b_context">. The catch is what filled it. Instead of an entity card with Einstein’s birth date and field, #b_context held Bing’s Copilot chat scaffolding (b_copilot_search, a serpchat canvas) and localized page chrome. My exit IP resolved to a Lithuanian market, so the footer read Privatumas Sąlygos, and the entity summary that did appear in the body was a German Wikipedia snippet. Without a pinned market, the panel localizes to wherever the IP lands.

The browser request was worse. Adding a realistic Chrome User-Agent flipped the same URL to a page carrying Bing’s challenge/verify wiring, with every li.b_algo gone and the body down to 72 KB. The status line still said 200. This is the same anti-bot gate I documented in scraping Bing without getting blocked: a healthy status code hides a CAPTCHA, so you have to inspect the parsed result, not the response code. The takeaway is that the knowledge panel is squeezed from both sides, absent from the bare HTML and behind a challenge the moment you look like a browser, so the Python parse only matters on the runs where the card is actually present.

How do you scrape the Bing knowledge panel with Python?

To scrape the Bing knowledge panel with Python you request the entity query, then read the right rail out of the HTML with BeautifulSoup on the runs where Bing includes it. The right rail is a stable <aside id="b_context">, and the organic block is li.b_algo, so those two anchors are what you select against.

import requests
from bs4 import BeautifulSoup

# No User-Agent on purpose: a browser UA triggers Bing's CAPTCHA (see the table above)
r = requests.get("https://www.bing.com/search?q=microsoft", timeout=25)
soup = BeautifulSoup(r.text, "html.parser")

panel = soup.select_one("aside#b_context")
if panel is None:
    raise SystemExit("no right rail in this response - retry via a fresh IP")

# The entity card, when present, lives inside #b_context. But on many requests
# this aside holds Copilot chat scaffolding instead, so confirm you have a real card.
if panel.select_one("[class*='copilot'], #serpchat"):
    raise SystemExit("right rail returned Copilot wiring, not an entity card - retry")

title = panel.find(["h1", "h2"])
print(title.get_text(strip=True) if title else "no entity title parsed")

The parse itself is short, and the reasons it breaks are not. Four traps bit me in testing:

On top of all that, Bing’s robots.txt disallows /search and /Search under the catch-all User-agent: *, so this is a path Bing asks crawlers not to touch. Raw Python is a few lines to start and a real project to keep alive across missing cards, obfuscated markup, redirect-wrapped links, and IP-based localization. That maintenance load is why most teams hand the panel to an API.

How do you scrape the Bing knowledge graph without getting blocked?

You scrape the Bing knowledge graph without getting blocked by sending the entity query to a scraper API that renders the page, pins the market, and returns the knowledge graph block as parsed JSON. The proxy rotation, the CAPTCHA handling, and the #b_context guesswork all move to the server side, so you get the entity card as fields instead of debugging why the right rail came back empty.

I use the Bing knowledge graph scraper for this. The call is a single GET with the entity query and an API key:

curl "https://chocodata.com/api/v1/bing/search?q=microsoft&api_key=$CHOCO_API_KEY"

The same request in Python, reading the knowledge_graph block out of the response:

import os, requests

resp = requests.get(
    "https://chocodata.com/api/v1/bing/search",
    params={"q": "microsoft", "api_key": os.environ["CHOCO_API_KEY"]},
    timeout=30,
)
data = resp.json()

kg = data["knowledge_graph"]
print(kg["title"], "-", kg["type"])          # Microsoft - Software company
for fact in kg["attributes"]:
    print(fact["name"], ":", fact["value"])   # Founded: 1975, CEO: Satya Nadella, ...

Because the anti-bot work is server side, the language on your end does not matter. Here is the same pull in PHP, for anyone wiring it into an existing app:

<?php
$key = getenv('CHOCO_API_KEY');
$url = "https://chocodata.com/api/v1/bing/search?q=microsoft&api_key={$key}";
$data = json_decode(file_get_contents($url), true);

$kg = $data['knowledge_graph'];
echo $kg['title'] . ' - ' . $kg['type'] . "\n";
foreach ($kg['attributes'] as $fact) {
    echo $fact['name'] . ': ' . $fact['value'] . "\n";
}

That is the whole job. No #b_context Copilot detection, no obfuscated attribute rows, no ck/a redirect unwrapping because the profile links come back resolved, and no localized summary because the market is pinned. The knowledge_graph block sits alongside organic_results in the same response, so one request covers the entity panel and the ranked results together. The free tier runs to 1,000 requests, which is enough to confirm the JSON shape matches the entities you care about before you scale a list. If you want the deeper breakdown of managed options on coverage and price, I rank them in best Bing scrapers and APIs in 2026.

What I would do

If I needed Bing knowledge graph data tomorrow, I would not rebuild the proxy-and-CAPTCHA stack to chase a panel that is missing from half my responses, and I would not wait for the retired Entity Search API to return, because it will not. For a one-off pull of a few entities I would run the raw Python parse from a residential IP with a pinned market, and accept that the card is absent on many tries. For anything ongoing I would send the entity query to a scraper API so the knowledge_graph block comes back as JSON and my time goes to the data, not to the block. Start with one entity, confirm the fields, then widen the query list once the shape holds.

FAQ

What is the difference between the Bing knowledge panel and the Bing knowledge graph?

The Bing knowledge graph is Microsoft's underlying database of entities (people, places, organizations, media) and their attributes. The knowledge panel is how Bing renders a slice of that graph on the search page, in the right rail on desktop. When you scrape the Bing knowledge graph in practice, you are parsing the panel Bing server-renders for an entity query, together with the answer box it sometimes attaches.

Can you still use the Bing Entity Search API in 2026?

No. The Bing Entity Search API, which queried the Bing knowledge graph directly, was retired on August 11, 2025 along with the other Bing Search APIs, per the Microsoft Lifecycle announcement. Microsoft now points developers to Grounding with Bing Search in Azure AI Foundry, which feeds live web data into an LLM and does not return a raw, parsed entity card.

Why is the knowledge panel missing when I scrape Bing?

Because Bing often does not server-render the entity card to a bare request. In my July 2026 tests the right rail came back holding Copilot chat scaffolding rather than entity attributes, and a browser-like User-Agent triggered a CAPTCHA that wiped the whole page. The panel appears reliably only inside a full browser session with a pinned market, which is what a scraper API reproduces for you.

Is it legal to scrape the Bing knowledge panel?

Scraping publicly visible Bing pages is generally treated as lower risk in the US after hiQ Labs v. LinkedIn, where the Ninth Circuit found that accessing public data is unlikely to breach the CFAA. Bing's robots.txt still disallows /search and Microsoft's terms restrict automated use, so read those and mind copyright and personal data. This is general information, not legal advice, and I go deeper in is scraping Bing legal.

GL
Greta Lind
I've built Bing data pipelines for years. On bingscraperapi.com I run Bing scraping methods against live pages and publish what actually holds up.