Most rank trackers, keyword tools, and AI visibility products get built around Google first. Bing comes later, if it comes at all. The gap shows up the moment a customer asks, “Where do we rank on Bing?” or “Does our content appear in Copilot Search?” and the answer is “we don’t track that yet.” Building your own Bing scraper is real work. You need proxies. You need captcha-solving. And every time Bing tweaks its SERP layout, somebody has to fix the parser. It’s engineer time that could be going into the product. This guide walks you through how to use our Bing search results scraper API instead: which endpoints to call, what the response looks like, and where teams usually trip up.
Why scrape Bing search results
Bing is the second-largest search engine globally. It also powers Microsoft’s Copilot, the default AI assistant across Windows, Edge, and Microsoft 365. So Bing is two things now: a search engine where your customers want rank data, and an upstream feed for the AI answers your customers want to appear in.
A SERP product without Bing coverage feels incomplete in three places. Rank tracking misses an audience that skews older, more US-based, and higher-intent in commercial verticals. Competitor analysis misses keywords competitors are ranking for on Bing but not on Google. Finally, AI visibility tracking misses Copilot summaries entirely, which is a problem now that Microsoft has pushed Copilot Search into the default Bing experience.
So why do most teams skip Bing? Not because the data isn’t useful. Because maintaining a second scraper is twice the operational load. That’s the part our API removes.
What the Bing search results scraper API returns
Our Bing Organic SERP API gives you the actual search engine results Bing shows a real user, structured as JSON. In particular, when using the Advanced data retrieval method, the API returns structured Bing SERP results with all extra features Bing rendered for the query: organic results, paid snippets, Copilot AI summaries, related searches, featured snippets, and more.
The Copilot summary deserves its own callout. It returns an ai_overview item containing the generated summary text split into ai_overview_element objects, featured images, and the source URLs Bing cited. “Which domains appear inside Bing’s AI answers?” is a separate question from “Which domains rank in organic?” and ai_overview is where you read the first one. At our Help Center, you can read a more detailed explanation of Copilot Search in the Bing SERP API if you want a field-by-field breakdown.
Location and language coverage match the matrix Bing itself supports. You can target a country, region, or city, and pair it with the language Bing uses for that market. Device and OS are also configurable: you can return desktop results for Windows or macOS, and mobile results for iOS or Android.
Choosing the right endpoint and data retrieval method
The Bing Organic SERP API splits into three functions and two delivery methods. The functions determine which data is returned. The methods control how fast it gets to you and what it costs.
Functions:
- Regular — returns organic and paid results plus related searches. Use it when you need rankings and ads but not the full feature set.
- Advanced — returns Bing SERP results with every extra feature Bing rendered, including the
ai_overviewitem. Advanced is the best choice for tracking all SERP features, comprehensive competitor visibility analysis, and Copilot Search monitoring. - HTML — the raw SERP HTML page, the same markup a real browser would render. Useful for parser audits, or for cases where you want to pull something out that we don’t structure yet.
Methods:
- Live — single request, results returned in the same response. Best when your product shows SERPs on demand: in-app SERP previews, ad-hoc keyword checks, dashboard refreshes.
- Standard — separate POST and GET. Cheaper per call, designed for batch workloads. Best for nightly rank tracking, or any pipeline where a few minutes of latency doesn’t hurt.
A quick rule of thumb. Building a rank tracker? You almost always want the Bing Organic SERP API Advanced on the Standard queue. Building an in-app feature that has to return a SERP to a user in a few seconds? The Bing Organic SERP API Live Advanced is the best choice. Read the Bing SERP API overview docs to see the full endpoint matrix.
A working request: scraping Bing organic results with Live Advanced
The snippet below sends a single keyword to the Live Advanced endpoint and returns a full Bing SERP page in a single response: organic results plus every extra feature Bing rendered for the query. This is the smallest working request, useful as a starting point before you wrap it in a queue, a scheduler, or a multi-keyword loop.
# Our API uses HTTP Basic auth with a base64-encoded "login:password" string.
# Grab both from the dashboard once you've signed up.
login="your_login"
password="your_password"
cred="$(printf '%s:%s' "${login}" "${password}" | base64)"
curl --location --request POST "https://api.dataforseo.com/v3/serp/bing/organic/live/advanced" \
--header "Authorization: Basic ${cred}" \
--header "Content-Type: application/json" \
--data-raw '[
{
"keyword": "best running shoes",
"location_code": 2840,
"language_code": "en",
"device": "desktop",
"os": "windows"
}
]'
Endpoint used: api.dataforseo.com/v3/serp/bing/organic/live/advanced — see the Live Advanced endpoint docs.
The response is a structured JSON object. Here’s the top-level shape of a single-page SERP response, with the heavy sub-objects collapsed so the structure is easy to scan:
{
"version": "0.1.20241227",
"status_code": 20000,
"status_message": "Ok.",
"time": "12.04 sec.",
"cost": 0.002,
"tasks_count": 1,
"tasks_error": 0,
"tasks": [
{
"id": "...",
"status_code": 20000,
"status_message": "Ok.",
"cost": 0.002,
"result_count": 1,
"path": ["v3", "serp", "bing", "organic", "live", "advanced"],
"data": { /* echoes the request: keyword, location_code, language_code, device, os */ },
"result": [
{
"keyword": "best running shoes",
"type": "organic",
"se_domain": "bing.com",
"location_code": 2840,
"language_code": "en",
"check_url": "https://www.bing.com/search?q=best+running+shoes&...",
"datetime": "2026-05-18 09:14:22 +00:00",
"spell": null,
"refinement_chips": { /* category filters Bing shows above the results */ },
"item_types": ["ai_overview", "organic", "paid", "people_also_ask", "related_searches"],
"se_results_count": 41200000,
"items_count": 14,
"items": [
{ "type": "ai_overview", "rank_group": 1, "rank_absolute": 1, "items": [ /* ai_overview_element, ai_overview_organic_element, sources */ ] },
{ "type": "paid", "rank_group": 1, "rank_absolute": 2, /* title, url, domain, description, ... */ },
{ "type": "organic", "rank_group": 1, "rank_absolute": 3, /* title, url, domain, description, ... */ },
{ "type": "people_also_ask", /* expanded_element list */ },
{ "type": "organic", "rank_group": 2, "rank_absolute": 5, /* ... */ },
{ "type": "related_searches", /* items array */ }
/* remaining items on the page: organic, paid, related_searches, ... */
]
}
]
}
]
}
Two fields matter most. The item_types array tells you which SERP features Bing returned for the query, which is useful for filtering before you parse. The items array is the ordered list of every element on the SERP, with rank_absolute showing position across all features, not just organic. That distinction matters for accurate rank tracking, which is the next pitfall.
One thing to know before you scale this up. By default, the Bing SERP API returns the first SERP page, where the top results and all other SERP features live. To pull subsequent pages, specify the depth parameter (in multiples of 10) or use max_crawl_pages. The API bills proportionally for the additional results. For example, "depth": 20 is priced as two SERPs.
Common pitfalls when scraping Bing SERPs
Most Bing integrations break in similar ways. Here are the three worth flagging.
- Picking Regular when you needed Advanced. Regular returns organic, paid, and related searches. Advanced adds every other SERP feature Bing rendered, including
ai_overview, featured snippets, local packs, and people-also-ask. If you parse a SERP that contains a featured snippet and anai_overview, then calculate “we rank #3” off Regular’s response, you’ll be a couple of positions off from what the user actually sees. Use Advanced for any rank-tracking workflow. - Treating
rank_groupandrank_absolutethe same. Therank_groupis the position within a group of identical elements (third organic result, for example). Therank_absoluteis the position across every element on the SERP, including the features above the result. If the question is “how visible is this URL on Bing?”,rank_absoluteis almost always what you want. - Using Google’s location codes for Bing. Bing’s location coverage overlaps with Google’s but isn’t identical, and a few markets behave differently around language fallbacks. When in doubt, pull the supported list from the Locations endpoint before setting
location_codein production.
Wrap up
Scraping Bing in-house is doable. The maintenance load is the part that quietly kills it: proxies, parser updates every time Bing tweaks a SERP feature, and separate infrastructure from your Google scraper. Our Bing SERP API takes that off your plate. You get structured Bing SERPs with all available SERP features, plus the Copilot ai_overview data for AI visibility tracking.
Try for free. New accounts start with $1 in credits, enough for plenty of Live Advanced Bing requests against the sandbox or production endpoints.