{"slug": "bing-search-api-is-retired-how-to-get-raw-web-and-news-results-as-json-again", "title": "Bing Search API is retired: how to get raw web and news results as JSON again", "summary": "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.", "body_md": "# Bing Search API is retired: how to get raw web and news results as JSON again\n\nMicrosoft 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.\n\nOn 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.\n\nThis 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.\n\n## What Microsoft offers instead\n\nMicrosoft'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.\n\nThat works if all you want is a chatbot answer inside Azure. It does not work if you need what the old API gave you:\n\n- **Raw results as JSON** : titles, URLs, snippets and dates you can store, rank, filter and show in your own UI.\n- **Search outside Azure** : from your own backend, a cron job, a data pipeline or any agent framework.\n- **News search** you can query by topic and country.\n\nIf that is your situation, you need a search API that returns plain results.\n\n## Map your Bing calls to NestDaddy\n\nNestDaddy 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.\n\n| You used | Use now | Notes | \n|---|---|---|\n| Bing Web Search `/v7.0/search?q=` | `GET /api/v1/search?q=` | Results from NestDaddy's own index | \n| Bing News Search `/v7.0/news/search?q=` | `GET /api/v1/news/search?q=` | Key words, worldwide news, last 120 days | \n| News by market ( `mkt=en-MY` ) | `country=MY` on`/api/v1/news/search` or`/api/v1/news/local` | Two-letter country codes | \n| Trending or category news | `GET /api/v1/news/global` ,`/tech` ,`/financial` | Latest headlines with summaries | \n| Fetching the page behind a result | `GET /api/v1/extract?url=` | Readable text of the page, without menus or ads | \n| Bing Custom Search | No direct equivalent | NestDaddy searches its whole index, not a list of your sites | \n\nAuthentication is one header: `X-API-Key: YOUR_KEY` (Bing used `Ocp-Apim-Subscription-Key`).\n\n## Before and after: web search\n\nThe old Bing call:\n\n``` python\nimport requests\n\nr = requests.get(\n    \"https://api.bing.microsoft.com/v7.0/search\",\n    headers={\"Ocp-Apim-Subscription-Key\": BING_KEY},\n    params={\"q\": \"python asyncio guide\", \"count\": 10},\n)\nfor item in r.json()[\"webPages\"][\"value\"]:\n    print(item[\"name\"], item[\"url\"], item[\"snippet\"])\n```\n\nThe same search on NestDaddy:\n\n``` python\nimport requests\n\nr = requests.get(\n    \"https://nestdaddy.com/api/v1/search\",\n    headers={\"X-API-Key\": NESTDADDY_KEY},\n    params={\"q\": \"python asyncio guide\", \"limit\": 10},\n)\nfor item in r.json()[\"results\"]:\n    print(item[\"title\"], item[\"url\"], item[\"snippet\"])\n```\n\nThree things change: the URL, the key header, and the field names (`name` becomes `title`, and the list is `results` instead of `webPages.value`).\n\n## Before and after: news search\n\nBing 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`:\n\n```\nr = requests.get(\n    \"https://nestdaddy.com/api/v1/news/search\",\n    headers={\"X-API-Key\": NESTDADDY_KEY},\n    params={\"q\": \"interest rate\", \"country\": \"MY\", \"days\": 7, \"limit\": 10},\n)\ndata = r.json()\nprint(data[\"total\"], \"articles\")\nfor a in data[\"results\"]:\n    print(a[\"published_timestamp\"], a[\"title\"], a[\"source_domain\"], a[\"url\"])\n```\n\n`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.\n\n## Keep your old code: a small adapter\n\nIf many parts of your code expect Bing's response shape, wrap the new API once and keep the rest untouched:\n\n``` python\nimport requests\n\nNESTDADDY = \"https://nestdaddy.com/api/v1\"\n\ndef bing_like_web_search(query, count=10, key=None):\n    \"\"\"Return a dict shaped like Bing's /v7.0/search response, using NestDaddy.\"\"\"\n    r = requests.get(f\"{NESTDADDY}/search\", headers={\"X-API-Key\": key},\n                     params={\"q\": query, \"limit\": count}, timeout=30)\n    r.raise_for_status()\n    return {\"webPages\": {\"value\": [\n        {\"name\": x[\"title\"], \"url\": x[\"url\"], \"snippet\": x.get(\"snippet\", \"\")}\n        for x in r.json().get(\"results\", [])\n    ]}}\n\ndef bing_like_news_search(query, count=10, key=None, country=None):\n    \"\"\"Return a dict shaped like Bing's /v7.0/news/search response, using NestDaddy.\"\"\"\n    r = requests.get(f\"{NESTDADDY}/news/search\", headers={\"X-API-Key\": key},\n                     params={\"q\": query, \"limit\": count, \"country\": country}, timeout=30)\n    r.raise_for_status()\n    return {\"value\": [\n        {\"name\": a[\"title\"], \"url\": a[\"url\"], \"description\": a.get(\"description\", \"\"),\n         \"datePublished\": a.get(\"published_timestamp\"),\n         \"provider\": [{\"name\": a.get(\"source_domain\", \"\")}]}\n        for a in r.json().get(\"results\", [])\n    ]}\n```\n\nSwap your old function for these and most callers will not notice.\n\n## For AI agents: use the MCP server instead\n\nIf 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).\n\n## Test before you switch everything\n\nEvery 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:\n\n1. Run your 20 to 50 most common real queries through both your old logs and NestDaddy.\n2. Check that the results your users click are there.\n3. Move the queries that work, and keep an eye on the rest.\n\nEach response includes a `quota` object (`used`, `limit`, `remaining`), so you can track usage from your own code.\n\n## Pricing and a free trial\n\nOne 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).\n\nWorking examples in Python, JavaScript and curl are on GitHub: [nestdaddy/nestdaddy-examples](https://github.com/nestdaddy/nestdaddy-examples).", "url": "https://wpnews.pro/news/bing-search-api-is-retired-how-to-get-raw-web-and-news-results-as-json-again", "canonical_source": "https://nestdaddy.com/blog/bing-search-api-alternative", "published_at": "2026-11-11 00:00:00+00:00", "updated_at": "2026-11-13 16:52:24.180915+00:00", "lang": "en", "topics": ["ai-search", "ai-tools", "developer-tools", "ai-agents"], "entities": ["Microsoft", "Bing Search APIs", "Grounding with Bing Search", "Azure AI Agents", "NestDaddy"], "also_reported_by": [], "alternates": {"html": "https://wpnews.pro/news/bing-search-api-is-retired-how-to-get-raw-web-and-news-results-as-json-again", "markdown": "https://wpnews.pro/news/bing-search-api-is-retired-how-to-get-raw-web-and-news-results-as-json-again.md", "text": "https://wpnews.pro/news/bing-search-api-is-retired-how-to-get-raw-web-and-news-results-as-json-again.txt", "jsonld": "https://wpnews.pro/news/bing-search-api-is-retired-how-to-get-raw-web-and-news-results-as-json-again.jsonld"}}