Bing Search API Replacement Scraper icon

SEO & ads intelligence

Bing Search API Replacement Scraper

Bing SERP scraper and Bing Search API alternative — returns organic results (title, URL, displayed URL, snippet, position) for any query, export to JSON or CSV. A drop-in replacement for the deprecated Bing Search API for SEO, brand monitoring, and AI agents.

Free Apify credit covers a first run. No credit card to try.

What this Actor scrapes

Bing's public www.bing.com/search SERP — the same page any browser renders for a typed query. Per query the Actor:

1. Issues GET https://www.bing.com/search?q=<query>&cc=<country>&setlang=<language>&count=10&first=<offset> via curl-cffi with rotating browser fingerprints. 2. Parses every <li class="b_algo"> block with parsel to extract title, snippet, displayed URL, and the redirect-wrapped href. 3. Decodes the Bing redirect: bing.com/ck/a?...&u=a1<base64url> → canonical destination URL. No Bing redirect wrappers ever reach your dataset. 4. Paginates via &first=0,10,20,... until maxResultsPerQuery rows are emitted or the page returns zero organic blocks.

What we handle for you

  • Drop-in Bing Search API replacement — same shape (query → list of organic results), no Microsoft API key required.
  • Locale-awarecc= / setlang= flow straight through to Bing; one Actor covers every market from US to JP to DE.
  • URL decoded — Bing redirect wrappers (bing.com/ck/a?...) are always decoded to the canonical destination URL. Your dataset joins cleanly against any URL-keyed dataset.
  • We rotate browser fingerprintscurl-cffi impersonates Chrome 131, Chrome 124, and Firefox 147 TLS+H2 fingerprints per page. Bing sees real-browser handshakes, not Python.
  • We rotate residential proxies — Apify Proxy is on by default. Bing weights residential exits strongly over datacenter IPs, especially for paginated bursts. On every block we rotate session_id and exit IP.
  • We retry with exponential backoff — 429 / 503 responses trigger a 2 s → 4 s → 8 s → 16 s → 30 s retry ladder, honouring Retry-After headers, up to 5 attempts per page.
  • Per-query isolation — one query failing (zero results, network hiccup) does not abort the run. Remaining queries continue and the run surfaces a partial-success status message.
  • Early-stop on empty page — we stop paginating when Bing stops returning organic blocks, instead of hammering empty pages.
  • Pydantic v2 validation — input and every output row are model-validated. Invalid input fails fast with a clear message before any network call.

Use cases

  • Bing Search API migration — Microsoft retired the official endpoint on August 11, 2025. This Actor is the drop-in replacement for client reports, AI search agents, and competitive intelligence pipelines that depended on it.
  • SEO rank tracking — schedule weekly runs across your target queries, write to a named dataset, and chart position over time per keyword and locale.
  • Brand monitoring — watch the top 30 organic results for branded queries (your brand, competitors, key product names) and alert on new entrants.
  • AI search agents and RAG pipelines — feed live SERP context into LLM agents. Bing diversifies your retrieval from Google: more forums, more long-tail, more long-form blogs.
  • Multi-locale SERP comparison — pass the same query with different cc= / setlang= values to compare what Bing shows in the US vs UK vs DE vs JP.
  • Content-gap analysis — pull the top 30 results for queries you want to rank for and reverse-engineer what content Bing rewards.
  • Quality-assurance for Bing Webmaster Tools data — cross-check the impressions and positions Bing reports against what the live SERP actually shows.
  • Bing SERP data for LangChain and LlamaIndex agents — replaces the now-dead BingSearchAPIWrapper and BingToolSpec integrations that called the retired API.

Input

Paste this into the Apify Console, or send it as the run input over the API. Proxy settings are on by default; you rarely need to touch them.

FieldTypeRequiredWhat it does
queries array yes List of search queries. One dataset row is emitted per (query × organic result). At least one query is required.
country string no ISO-3166-1 alpha-2 country code passed to Bing as cc= (e.g. US, GB, DE, JP).
language string no ISO-639-1 language code passed to Bing as setlang= (e.g. en, de, fr, ja).
maxResultsPerQuery integer no Upper bound on organic results returned per query. Bing serves 10 organic results per page; the scraper paginates via &amp;first=0,10,20... until this limit is reached or a page returns zero results.
useProxy boolean no Route requests through Apify Proxy (BUYPROXIES94952, a static US datacenter pack). Recommended ON. Note that Bing weights residential exits more favourably than datacenter IPs, so select a RESIDENTIAL group here if…
{
  "queries": [
    "apify web scraping"
  ],
  "country": "US",
  "language": "en",
  "maxResultsPerQuery": 30,
  "useProxy": true
}

Output

One row per result, schema-validated before it is written. Export JSON, CSV, Excel or XML from the run, or read it over the API.

querypositiontitleurldisplayed_urlsnippetcountrylanguagescraped_at

{
  "query": "bing search api replacement",
  "position": 1,
  "title": "DevilScrapes \u2014 Bing Search Scraper",
  "url": "https://apify.com/DevilScrapes/bing-search-scraper",
  "displayed_url": "https://apify.com \u203a DevilScrapes \u203a bing-search-scraper",
  "snippet": "Drop-in replacement for the retired Bing Search API. Organic results for any query, locale-aware, residential-proxy-backed.",
  "country": "US",
  "language": "en",
  "scraped_at": "2026-05-16T13:40:00.000Z"
}

Pricing

EventPriceWhen
Actor start$0.20Once per run, covers warm-up and proxy session setup.
SERP result row$0.0010Per result written to the dataset.

You pay only for results that land. Cap any run with maxTotalChargeUsd. See pricing & billing for worked examples.

Limitations

  • Organic web results only — People-Also-Ask boxes, Related Searches, news, images, videos, maps, and Bing's local pack are out of scope for v1.
  • Featured snippets are not extracted as a separate field — when Bing's featured snippet sits inside a <li class="b_algo"> block it appears as a regular row. No is_featured flag in v1.
  • Up to 100 results per querymaxResultsPerQuery is capped at 100. Past page 10 Bing's organic results become unreliable.
  • No JavaScript rendering — we hit server-rendered HTML directly. If Bing migrates to a fully client-rendered SERP, a Camoufox path would be needed.
  • Country / language are passed to Bing, not validatedcc= / setlang= are interpolated raw into the URL. An unrecognized value will silently return default-locale results. Use standard ISO codes.
  • No historical tracking built in — every run is a fresh snapshot. Schedule runs and export to your own storage (BigQuery, S3, named Apify dataset) to build a time series. Apify default run-scoped storage is purged after 7 days on the free plan.

FAQ

Why does this exist? Isn't there an official Bing Search API?
Microsoft retired the Bing Search API on August 11, 2025. There is no longer an official programmatic endpoint for Bing organic results. The replacement Microsoft offers — "Grounding with Bing Search" inside Azure AI — is locked to a single LLM workflow and costs orders of magnitude more per call. This Actor hits the public SERP that any browser hits.
What does "bing search api replacement" mean in practice?
The retired API returned a JSON payload of organic results for a query. This Actor returns the same shape: query in, list of {position, title, url, snippet, ...} rows out. Migration means swapping an API call for an Apify Actor run. The output schema is stable across versions.
Is this allowed?
The Actor sends well-formed HTTP requests to a public, unauthenticated SERP endpoint and parses the publicly visible HTML. It respects HTTP retry semantics (429 / 503 / Retry-After). Your obligation as the user is to comply with Bing's Terms of Service in your jurisdiction. This Actor does not bypass any login, paywall, or authentication mechanism.
Why does the Actor rotate browser fingerprints?
curl-cffi impersonates real browser TLS+H2 fingerprints. Rotating across Chrome 131, Chrome 124, and Firefox 147 per page reduces correlation between consecutive requests — which lowers the chance Bing flags a paginated burst as automated traffic. We handle the blocks so you don't have to.
Why is `position` 1-indexed?
That is how every SEO tool, rank tracker, and BI dashboard counts. Position 1 = the first organic result. It drops straight into spreadsheets and databases without an off-by-one fix.
Why are URLs decoded? Can I get the raw `bing.com/ck/a` redirect?
v1 always decodes. The redirect wrapper is a click-tracking detail; it adds no information your downstream workflow can use. Canonical URLs join cleanly with any other dataset keyed on URL.
Does this work for non-English locales?
Yes. setlang=de / setlang=ja / setlang=fr all flow through to Bing. The parser is structural (li.b_algo blocks); it does not depend on English text patterns.
What about People-Also-Ask (PAA) boxes?
Out of scope for v1. If there is demand, v2 will add an opt-in extractPaa: true input field that adds a separate kind: "paa" row per question.

Ready to run it?

Open the listing on Apify, paste the input above, and watch rows land. If it ever breaks, it is our problem before it is yours.

Related Actors

Teams that run this also run