ScreenshotNeo

BlogGuides

Bing Scraper API: Web and Video Results to JSON

Learn how to collect Bing web and video results as JSON, compare scraper and official APIs, handle errors, and choose a compliant approach.

By the ScreenshotNeo team1 October 20267 min read

Short answer: A Bing SERP scraper reads the live, publicly rendered Bing results page and converts blocks such as organic results, videos, images, recipes, ads, related questions, and knowledge-graph content into JSON. An official Bing API returns documented answer objects through Microsoft endpoints. Choose the scraper when rendered-page fidelity matters; choose the official API when you need Microsoft’s documented contract and compliance model.

This guide shows the request patterns, web and video fields, implementation options, reliability concerns, pricing signals, and legal constraints you should evaluate before shipping.

1. What a Bing scraper API returns

BingScraperAPI.com describes a REST service that accepts a query and shared api_key, reads live public Bing pages, and returns structured JSON. Dedicated endpoints cover web results, images, videos, and recipes. Its search response may also contain answer boxes, related searches, related questions, ads, and knowledge-graph blocks when Bing renders them. Redirect URLs are decoded to the real destination URL. The vendor says it is independent of Microsoft and Bing. See the vendor product page.

Data Typical use Source type
Organic results Rank tracking, discovery, research Rendered Bing SERP
Videos Video search, enrichment, monitoring Rendered video results or official Video Search objects
Images Asset discovery and analysis Rendered image results
Recipes Structured recipe collection Dedicated recipe endpoint
Answer and knowledge blocks SERP feature analysis Present only when Bing server-renders them

2. Scraper API versus Microsoft’s official Bing APIs

Microsoft’s Web Search v7 endpoint is https://api.bing.microsoft.com/v7.0/search. It uses HTTPS and returns documented JSON answer objects. Microsoft describes it as safe, ad-free, location-aware search over billions of web documents. The documented maximum URL length is 2,048 characters; keep query parameters below 1,500 characters where possible. Read the Web Search reference.

Decision axis Third-party SERP scraper Official Bing API
Data source Live rendered public SERP Documented answer objects
Coverage Organic, images, videos, recipes, ads, related questions and knowledge blocks when rendered Official web and video answer types
URL handling Vendor says result redirects are decoded Use fields documented by Microsoft
Stability Depends on parser resilience as Bing changes markup Contract is documented by Microsoft
Integration HTTP, SDKs and listed no-code/LLM connectors HTTP GET and Microsoft SDK access
Compliance Read the vendor terms and Bing restrictions for your use Microsoft’s search-experience restrictions apply directly

3. Calling the official Web Search API

cURL

curl -sS \
  -H "Ocp-Apim-Subscription-Key: $BING_SUBSCRIPTION_KEY" \
  --get "https://api.bing.microsoft.com/v7.0/search" \
  --data-urlencode "q=developer tools" \
  --data-urlencode "count=10" \
  --data-urlencode "mkt=en-US"

Python

import os
import requests

url = "https://api.bing.microsoft.com/v7.0/search"
params = {"q": "developer tools", "count": 10, "mkt": "en-US"}
headers = {"Ocp-Apim-Subscription-Key": os.environ["BING_SUBSCRIPTION_KEY"]}
response = requests.get(url, params=params, headers=headers, timeout=30)
response.raise_for_status()
data = response.json()

for item in data.get("webPages", {}).get("value", []):
    print(item.get("name"), item.get("url"))

Node.js

const params = new URLSearchParams({
  q: 'developer tools',
  count: '10',
  mkt: 'en-US'
});
const response = await fetch(`https://api.bing.microsoft.com/v7.0/search?${params}`, {
  headers: { 'Ocp-Apim-Subscription-Key': process.env.BING_SUBSCRIPTION_KEY }
});
if (!response.ok) throw new Error(`${response.status} ${await response.text()}`);
const data = await response.json();
for (const item of data.webPages?.value ?? []) {
  console.log(item.name, item.url);
}

Use the documented query, market, freshness, pagination, and filtering parameters for your subscription. Keep the key in a secret manager or environment variable, never in browser code.

The official Video Search v7 family includes /v7.0/videos/search, /v7.0/videos/details, and /v7.0/videos/trending. Microsoft documents HTTPS requests and JSON responses. A video result can include title, publisher, duration, view count, thumbnail URLs, and a Bing video result URL. Read the Video Search overview.

curl -sS \
  -H "Ocp-Apim-Subscription-Key: $BING_SUBSCRIPTION_KEY" \
  --get "https://api.bing.microsoft.com/v7.0/videos/search" \
  --data-urlencode "q=python tutorials" \
  --data-urlencode "count=10" \
  --data-urlencode "mkt=en-US"

Normalize optional fields defensively. Duration, publisher, view count, thumbnails, and destination URLs may be absent or represented differently across result types.

5. Calling a third-party Bing SERP scraper

The vendor describes a shared request shape: send a query and api_key to the endpoint for the result type you need, then parse JSON. Because endpoint paths and parameter names can change, copy the current endpoint URL from the vendor documentation into an environment variable instead of hard-coding an undocumented path.

Generic cURL template

curl -sS -G "$BING_SCRAPER_ENDPOINT" \
  --data-urlencode "api_key=$BING_SCRAPER_API_KEY" \
  --data-urlencode "query=python tutorials"

Generic Python client

import os
import requests

params = {
    "api_key": os.environ["BING_SCRAPER_API_KEY"],
    "query": "python tutorials",
}
r = requests.get(os.environ["BING_SCRAPER_ENDPOINT"], params=params, timeout=60)
r.raise_for_status()
data = r.json()
print(data)

Generic Node.js client

const q = new URLSearchParams({
  api_key: process.env.BING_SCRAPER_API_KEY,
  query: 'python tutorials'
});
const response = await fetch(`${process.env.BING_SCRAPER_ENDPOINT}?${q}`);
if (!response.ok) throw new Error(`${response.status} ${await response.text()}`);
const data = await response.json();
console.log(data);

6. Design a stable JSON pipeline

  1. Store the original query, market, timestamp, and provider.
  2. Normalize every result to fields such as title, url, snippet, rank, type, and source_url.
  3. Keep provider-specific fields under a separate object so schema changes do not break consumers.
  4. Preserve nulls for missing duration, publisher, views, or thumbnails instead of inventing defaults.
  5. Record HTTP status, request ID, and parsing version for troubleshooting.

7. Options, edge cases, and limits

  • Location: market and language settings can change rankings and available results.
  • Pagination: treat page and offset values as provider-specific; verify whether a scraper returns a page number or a continuation token.
  • Rendered features: ads, answer boxes, related questions, and knowledge blocks may not appear for every query.
  • Redirects: retain both the Bing result URL and the decoded destination when available.
  • Long queries: Microsoft documents a 2,048-character URL maximum; URL-encode all user input.
  • Empty results: distinguish a valid empty response from a parser failure or blocked request.
  • Rate limits: add bounded retries with exponential backoff and jitter; do not retry authentication errors.

8. Troubleshooting

Symptom Likely cause Fix
401 or 403 Missing, invalid, expired, or exposed key Load the key from a secret, verify the header or parameter name, and rotate exposed keys.
400 Malformed query, unsupported parameter, or URL too long URL-encode values, remove unsupported options, and keep requests under documented limits.
200 with no results Legitimate empty search or market mismatch Log query and market, test a known query, and handle empty arrays explicitly.
Missing video metadata Field is optional or result type differs Use nullable fields and inspect the raw object before mapping.
Parser breaks after a Bing change Rendered markup changed Pin parser versions, add fixture tests, and prefer documented APIs when markup fidelity is unnecessary.
Intermittent timeouts Network, proxy, or provider latency Set a finite timeout, retry only idempotent requests, and use a queue for bulk jobs.

9. Performance, reliability, and cost

BingScraperAPI.com advertises a 2.6-second median response time, but this is a vendor claim rather than an independent benchmark. It also advertises 1,000 free requests, pay-as-you-go pricing of $0.90 per 1,000 successful requests, Pro economics of about $0.60 per 1,000, and custom plans from $100 per month. Recheck current pricing before committing.

Microsoft’s official API has a documented endpoint contract, but its terms disclaim warranties and an SLA. For either approach, measure your own p50 and p95 latency, error rate, result completeness, and cost per successful query. Cache only where the applicable terms permit it.

Microsoft’s Bing Search API terms require results to be used in Internet Search Experiences that respond to user search intent, help users navigate to sources, present multiple results, and visibly identify search results. The terms prohibit copying, storing, or caching responses and prohibit using response data to train machine-learning systems. Microsoft states: “You must use results you obtain through the Services only in Internet Search Experiences … and you must not cache or copy results.” Read the Bing Search APIs legal terms.

Before launch, review display, attribution, retention, caching, and machine-learning restrictions for your exact product and jurisdiction. Protect subscription keys and avoid exposing them in client-side applications.

11. Or skip the browser setup

If your workflow also needs screenshots of Bing pages or result pages, ScreenshotNeo provides a website screenshot API and MCP server. One GET request returns a PNG, JPEG, WebP, or PDF. Cookie and consent banners are accepted and removed before capture, along with newsletter popups and chat widgets. Bot checks, blank pages, timeouts, failed loads, and cache hits are not billed, and each response reports verdict and billing headers.

See the ScreenshotNeo API documentation.

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://www.bing.com -o shot.webp
import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://www.bing.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)
const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://www.bing.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

It also includes an MCP server for Claude, Cursor, and other MCP clients, so AI agents can take screenshots, inspect pages, and capture PDFs. The Free plan includes 1,000 screenshots per month with no card; paid plans start at $5 for 3,000. Create a free ScreenshotNeo account.

12. FAQ

Is a Bing scraper the same as the official Bing Search API?

No. A scraper parses the live rendered page; the official API returns Microsoft’s documented answer objects.

Can I retrieve video duration and view counts?

Microsoft’s video result objects can include duration, publisher, view count, thumbnails, and a Bing video URL. Treat each field as optional.

Should I use scraper output to train a model?

Microsoft’s terms prohibit using Bing Search API response data to train machine-learning systems. Obtain legal guidance for your specific data source and use.

How should I compare providers?

Compare rendered-page fidelity, endpoint coverage, schema stability, market and pagination controls, rate limits, pricing per successful request, and contractual restrictions.