Skip to content

New Official SDKs for TypeScript, Python and Go

SerpKite
Get API key

Migration guide

Migrate from the Bing Search API

Microsoft retired the Bing Search APIs on August 11, 2025. The suggested replacement, Grounding with Bing, is tied to Azure AI agents and costs about $14 per 1,000 calls. If you need raw web results as JSON, SerpKite returns Google's.

Bing Search API retired:

This API is already gone. Existing integrations have stopped working.

Why switch

Why teams move from Bing Search API to SerpKite

01

The full results page as JSON or Markdown

You get the results page as JSON (or Markdown) and decide what to do with it, from any language or agent framework.

02

Richer than webPages

Organic results plus Google's answer box, People Also Ask, knowledge graph, top stories and related searches in one call.

03

Verticals in one API

News, Images, Videos, Maps, Places and Shopping have their own endpoints with the same auth and billing.

04

Bing engine is on the roadmap

Bing, DuckDuckGo and Brave behind the same API are planned for Q1 2027 via engine=. Until then, results come from Google.

The change

Before and after

bing.py (retired) −9 lines
import os, requests

res = requests.get(
    "https://api.bing.microsoft.com/v7.0/search",
    headers={"Ocp-Apim-Subscription-Key": os.environ["BING_KEY"]},
    params={"q": "vector database benchmarks", "mkt": "en-US", "count": 10, "offset": 0},
    timeout=30,
)
for page in res.json()["webPages"]["value"]:
    print(page["name"], page["url"], page["snippet"])
search.py (SerpKite) +5 lines
from serpkite import SerpKite  # pip install serpkite

sk = SerpKite()  # reads SERPKITE_API_KEY
res = sk.search("vector database benchmarks", country="us", language="en", page=1)
for r in res.results:
    print(r.title, r.link, r.snippet)

The Bing client call becomes one SDK call (or a JSON POST https://api.serpkite.com/v1/search with Authorization: Bearer). mkt splits into country and language, offset becomes page, and webPages.value becomes results.

Reference

Parameter and field mapping

Request parameters

Request parameter mapping
Bing Search API SerpKite Notes
Ocp-Apim-Subscription-Key Authorization: Bearer skt_live_… The SDKs read SERPKITE_API_KEY and set the header for you.
q q
mkt=en-US country=us, language=en Country and language are separate parameters.
setLang language
count num 10 per page. num=100 returns the top 100 for 7 credits.
offset page page = offset / count + 1, from 1 to 10.
safeSearch=Off|Moderate|Strict safe=off|active
freshness=Day|Week|Month time=day|week|month Also hour and year, or a raw tbs.
responseFilter=News POST /v1/news Each vertical is its own endpoint (sk.news(…) in the SDKs).
/v7.0/images/search, /videos/search POST /v1/images, /v1/videos

Response fields

Response field mapping
Bing Search API SerpKite Notes
webPages.value[].name results[].title
webPages.value[].url results[].link Resolved destination URL, plus a canonical domain.
webPages.value[].snippet results[].snippet
webPages.value[].dateLastCrawled results[].date The date Google shows, when it shows one.
Bing related-search suggestions (.text) related_searches[].query
entities.value[] knowledge_graph
news.value[] top_stories[] (or POST /v1/news)
(none) people_also_ask, answer_box New fields Bing never returned.
(none) meta request_id, credits_used, cached, latency_ms.

Live example

Google Search: request and response

curl https://api.serpkite.com/v1/search \
  -H "Authorization: Bearer $SERPKITE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"q":"best espresso machine 2026","country":"us","language":"en"}'

1 credit per call. Failed and empty results are free. Run it in the playground

200 OK (abridged)
{
  "request": {
    "endpoint": "search",
    "engine": "google",
    "q": "best espresso machine 2026",
    "country": "us",
    "language": "en",
    "num": 10,
    "page": 1,
    "device": "desktop",
    "autocorrect": true
  },
  "results": [
    {
      "position": 1,
      "title": "The Best Espresso Machines of 2026, Tested and Reviewed",
      "link": "https://www.example.com/best-espresso-machines",
      "domain": "example.com",
      "displayed_link": "https://www.example.com › best-espresso-machines",
      "snippet": "We pulled more than 1,200 shots on 42 machines to find the best espresso makers for every budget, from beginner-friendly to prosumer.",
      "date": "Sep 12, 2026",
      "sitelinks": [
        {
          "title": "Best budget pick",
          "link": "https://www.example.com/best-espresso-machines#budget"
        },
        {
          "title": "Best dual boiler",
          "link": "https://www.example.com/best-espresso-machines#dual-boiler"
        }
      ]
    },
    {
      "position": 2,
      "title": "Espresso Machine Buying Guide (2026)",
      "link": "https://coffee.example.org/guides/espresso",
      "domain": "coffee.example.org",
      "displayed_link": "https://coffee.example.org › guides › espresso",
      "snippet": "Single boiler, heat exchanger or dual boiler? What the specs mean and which features are worth paying for."
    },
    {
      "position": 3,
      "title": "r/espresso: What machine would you buy in 2026?",
      "link": "https://www.reddit.com/r/espresso/comments/abc123/",
      "domain": "reddit.com",
      "displayed_link": "https://www.reddit.com › r › espresso",
      "snippet": "Discussion thread with 480 comments comparing entry-level and prosumer machines."
    }
  ],
  "people_also_ask": [
    {
      "question": "What is the #1 rated espresso machine?",
      "snippet": "Reviewers most often rank dual-boiler machines with PID control at the top…",
      "link": "https://www.example.com/best-espresso-machines"
    },
    {
      "question": "Is a $500 espresso machine worth it?",
      "snippet": "For daily drinkers, a mid-range machine usually pays for itself within a year…",
      "link": "https://coffee.example.org/guides/espresso"
    }
  ],
  "related_searches": [
    {
      "query": "best espresso machine under $500"
    },
    {
      "query": "best espresso machine for beginners"
    },
    {
      "query": "dual boiler vs heat exchanger"
    }
  ],
  "meta": {
    "request_id": "req_01J8ZK4M6Q2V7",
    "credits_used": 1,
    "cached": false,
    "engine": "google",
    "latency_ms": 942,
    "parse_quality": "ok",
    "resolved_urls": true
  }
}

Watch out

Gotchas

  • Rankings differ. Results are Google's, not Bing's. If you compared against Bing baselines, re-baseline.
  • No totalEstimatedMatches in the /v1/search response. If you rely on a result count, the CSE-compatible endpoint returns searchInformation.totalResults.
  • Markets are not one parameter. Map mkt to country + language, and use location (e.g. "Austin, Texas, United States") for city-level results.
  • Bing returned up to 50 results per call. SerpKite bills per page of 10; top 100 is a 7-credit bundle with num=100.
  • For agents, format=markdown or format=compact cuts response tokens substantially. See JSON vs Markdown SERPs.

Checklist

Step by step

  1. 1 Create a free account and copy your skt_live_… key.
  2. 2 Install an SDK (pip install serpkite or npm install serpkite), or switch the request from GET api.bing.microsoft.com/v7.0/search to POST api.serpkite.com/v1/search with a JSON body and Authorization: Bearer.
  3. 3 Map mkt to country and language, count/offset to num/page, and freshness to time.
  4. 4 Rename response fields: webPages.value → results, name → title, url → link.
  5. 5 Move news, image and video calls to /v1/news, /v1/images and /v1/videos.
  6. 6 Re-baseline any ranking or relevance tests against Google results.
  7. 7 Set a spend cap in the dashboard and deploy.

Pricing

SerpKite vs Bing Search API: price

Price comparison with Bing Search API
SerpKite Bing Search API
Free tier 2,500 on signup + 1,000/mo None (retired)
List price $1.00 → $0.60 per 1k Grounding with Bing: ~$14 per 1k
Raw results as JSON Yes No (grounded answers inside Azure AI agents)
Credit expiry Never Azure billing

Grounding with Bing lists at about $14 per 1,000 and only works inside Azure AI agents (docs/01). There is no cheap raw Bing JSON API today. SerpKite packs: $1.00 per 1k on the $10 pack down to $0.60 on the largest self-serve pack; larger volumes on request, enterprise from $0.18. Competitor list prices verified on vendor pages on 2026-09-28. See pricing.

FAQ

Migrating from Bing Search API

Start building

Leave Bing Search API today

2,500 free credits, then 1,000 every month. No credit card.