Bing Search API is retired: how to get raw web and news results as JSON again Microsoft retired the Bing Search APIs on 11 August 2025, shutting off all existing Bing Web Search, News Search and Custom Search resources and closing new sign-ups, so any app calling api.bing.microsoft.com/v7.0/search stopped working that day. Microsoft's retirement notice directs customers to Grounding with Bing Search inside Azure AI Agents, which returns model-written answers rather than raw JSON results. A guide from independent search engine NestDaddy maps the retired Bing endpoints to its own REST API — GET /api/v1/search, /api/v1/news/search, /api/v1/news/global, /tech, /financial and /api/v1/extract?url= — authenticated with an X-API-Key header instead of Bing's Ocp-Apim-Subscription-Key, and notes there is no direct equivalent for Bing Custom Search. Bing Search API is retired: how to get raw web and news results as JSON again Microsoft shut down the Bing Search APIs on 11 August 2025. Its suggested replacement gives AI answers inside Azure agents, not raw results. Here is how to move web search, news search and page reading to NestDaddy, with code. On 11 August 2025 Microsoft retired the Bing Search APIs. Every existing Bing Web Search, News Search and Custom Search resource was switched off, and new sign-ups closed. If your app, scraper replacement, research tool or AI agent called api.bing.microsoft.com/v7.0/search , it stopped working that day. This guide explains what Microsoft offers instead, why it does not fit many projects, and how to move your web search, news search and page reading to the NestDaddy API with a few lines of code. What Microsoft offers instead Microsoft's retirement notice https://learn.microsoft.com/en-us/lifecycle/announcements/bing-search-api-retirement points customers to Grounding with Bing Search , a tool inside Azure AI Agents. It lets a language model running in Azure use web results while it writes an answer. That works if all you want is a chatbot answer inside Azure. It does not work if you need what the old API gave you: - Raw results as JSON : titles, URLs, snippets and dates you can store, rank, filter and show in your own UI. - Search outside Azure : from your own backend, a cron job, a data pipeline or any agent framework. - News search you can query by topic and country. If that is your situation, you need a search API that returns plain results. Map your Bing calls to NestDaddy NestDaddy is an independent search engine with its own web index and its own real-time news collection from around the world. Its REST API returns plain JSON. | You used | Use now | Notes | |---|---|---| | Bing Web Search /v7.0/search?q= | GET /api/v1/search?q= | Results from NestDaddy's own index | | Bing News Search /v7.0/news/search?q= | GET /api/v1/news/search?q= | Key words, worldwide news, last 120 days | | News by market mkt=en-MY | country=MY on /api/v1/news/search or /api/v1/news/local | Two-letter country codes | | Trending or category news | GET /api/v1/news/global , /tech , /financial | Latest headlines with summaries | | Fetching the page behind a result | GET /api/v1/extract?url= | Readable text of the page, without menus or ads | | Bing Custom Search | No direct equivalent | NestDaddy searches its whole index, not a list of your sites | Authentication is one header: X-API-Key: YOUR KEY Bing used Ocp-Apim-Subscription-Key . Before and after: web search The old Bing call: python import requests r = requests.get "https://api.bing.microsoft.com/v7.0/search", headers={"Ocp-Apim-Subscription-Key": BING KEY}, params={"q": "python asyncio guide", "count": 10}, for item in r.json "webPages" "value" : print item "name" , item "url" , item "snippet" The same search on NestDaddy: python import requests r = requests.get "https://nestdaddy.com/api/v1/search", headers={"X-API-Key": NESTDADDY KEY}, params={"q": "python asyncio guide", "limit": 10}, for item in r.json "results" : print item "title" , item "url" , item "snippet" Three things change: the URL, the key header, and the field names name becomes title , and the list is results instead of webPages.value . Before and after: news search Bing News Search returned value items with name , url , description , datePublished and provider . NestDaddy news search returns results with title , url , description , published timestamp and source domain : r = requests.get "https://nestdaddy.com/api/v1/news/search", headers={"X-API-Key": NESTDADDY KEY}, params={"q": "interest rate", "country": "MY", "days": 7, "limit": 10}, data = r.json print data "total" , "articles" for a in data "results" : print a "published timestamp" , a "title" , a "source domain" , a "url" country takes a two-letter code MY, SG, ID, US, GB and more , topic can be global , tech , financial or local , and days goes back up to 120. Keep your old code: a small adapter If many parts of your code expect Bing's response shape, wrap the new API once and keep the rest untouched: python import requests NESTDADDY = "https://nestdaddy.com/api/v1" def bing like web search query, count=10, key=None : """Return a dict shaped like Bing's /v7.0/search response, using NestDaddy.""" r = requests.get f"{NESTDADDY}/search", headers={"X-API-Key": key}, params={"q": query, "limit": count}, timeout=30 r.raise for status return {"webPages": {"value": {"name": x "title" , "url": x "url" , "snippet": x.get "snippet", "" } for x in r.json .get "results", }} def bing like news search query, count=10, key=None, country=None : """Return a dict shaped like Bing's /v7.0/news/search response, using NestDaddy.""" r = requests.get f"{NESTDADDY}/news/search", headers={"X-API-Key": key}, params={"q": query, "limit": count, "country": country}, timeout=30 r.raise for status return {"value": {"name": a "title" , "url": a "url" , "description": a.get "description", "" , "datePublished": a.get "published timestamp" , "provider": {"name": a.get "source domain", "" } } for a in r.json .get "results", } Swap your old function for these and most callers will not notice. For AI agents: use the MCP server instead If your Bing integration fed an AI agent, there is a simpler route. NestDaddy runs a remote MCP server at https://mcp.nestdaddy.com/mcp . Claude, Cursor, VS Code, n8n and any MCP client can connect to it, and the model calls web search, news search and page reading by itself. Setup takes one line or one config block: see How to give Claude live web search and news with one MCP server https://nestdaddy.com/blog/add-live-web-search-to-claude-mcp . Test before you switch everything Every search engine has a different index, and NestDaddy's is its own, not Bing's. Results for the same query will differ. Before you move production traffic: 1. Run your 20 to 50 most common real queries through both your old logs and NestDaddy. 2. Check that the results your users click are there. 3. Move the queries that work, and keep an eye on the rest. Each response includes a quota object used , limit , remaining , so you can track usage from your own code. Pricing and a free trial One All-in-One key covers web search, news, page reading, research papers and the MCP server. Plans start at $9.99 a month for 10,000 calls, and there is a free 7-day trial with 5,000 calls. Details are on the NestDaddy MCP page https://nestdaddy.com/mcp and in the API docs https://nestdaddy.com/apis . Working examples in Python, JavaScript and curl are on GitHub: nestdaddy/nestdaddy-examples https://github.com/nestdaddy/nestdaddy-examples .