How to Check Bing SERP Rankings with DataForSEO SERP API

SERP API
Table of Contents

Rank checking looks like scraping until you try to schedule it. A scraper has to return a page. A rank checker has to return one number for one keyword in one market, then return it the same way tomorrow. Bing tracking usually breaks on that second part, because a reported position shifts whenever a request parameter changes, even when the ranking didn’t.

This article covers building a Bing SERP rank checker API workflow on our SERP API: the endpoints that return positions, the parameters that keep those positions comparable week over week, and how to run the checks on a schedule.

What a Bing SERP rank checker API has to return

Every organic item in a Bing SERP response carries two ranking fields instead of one. Pick the wrong one and your tracker will report movement that never happened.

The rank_group is the position among elements of the same type. The rank_absolute is the position across every element on the page. In the sample response later in this article, Bing returned only organic results, so the two fields match one for one all the way down. Put a paid block above those listings and they separate: an organic result at rank_group 1 can sit at rank_absolute 3.

That gap matters if you store only one of the values. A tracker that saves rank_absolute under a column called “organic position” will show a two-place drop on the day Bing starts serving ads for that query. The listing itself never moved. Your customer still asks what went wrong. Our help article on rank absolute vs rank group covers the distinction in more depth.

Four other fields do most of the work. The domain and url fields identify which property ranked, the page field says which SERP page it landed on, and check_url gives you a link you can open in incognito mode to check the result by eye. Keep all four next to the position and a disputed ranking takes about 30 seconds to settle.

Picking the right Bing SERP API endpoint for rank checks

Bing Organic offers three functions and two delivery methods. What you pick determines what comes back and how much it costs.

  • Regular returns organic and paid results plus related searches. Enough when all you store are positions.
  • Advanced returns the organic results plus every extra element Bing rendered for the query. Use it when you track SERP features next to rankings.
  • HTML returns the raw SERP markup, which helps with parser audits or with pulling out something we don’t structure yet.

The methods split along the same line. Live returns results in the same response, one keyword per call. Standard splits the work into task_post and a later task_get, which suits batch jobs where a few minutes of latency costs you nothing.

Cost follows that split. In the calls we ran for this article, one Live Advanced request was billed $0.002, while each Standard task at normal priority was billed $0.0006. That puts Standard at roughly a third of the Live figure for the same keyword. Rates depend on method and priority, so check the Bing Organic SERP API Pricing page before you size a tracking plan.

Parameters that decide whether your Bing rankings are accurate

The endpoint decides what comes back. The parameters decide whether today’s number can be compared with last week’s.

Five of them carry most of that weight. The location_code and language_code parameters set the market being emulated. You can get the lists of all supported locations and languages by calling Bing SERP Locations and Bing SERP Languages endpoints. The device takes desktop or mobile values, while os narrows that to Windows or macOS on desktop, iOS or Android on mobile. The depth controls how many results come back, defaulting to 10 and accepting up to 200 on Bing Organic.

Changing the response depth is also where the billing changes on you. Your account is charged per SERP containing up to 10 results, so a request at depth 50 covers five of them: the first page at the full base rate and each additional page at 75% of it. That’s money well spent on a keyword where the client sits at position 34, and wasted on one where they sit at position 3. Our note on how many results we scrape explains the counting.

In practice, the fix is the following. Freeze these five values per tracked keyword, store them in the same row as the position, and never change one mid-campaign without recording that you did. If you can’t tell which settings produced a number, you can’t tell whether the number moved.

Request and response: finding your position in the JSON

The request below is the smallest working Bing rank check. It runs a check for one keyword, one market, and one device and returns top 10 results. It goes to POST https://api.dataforseo.com/v3/serp/bing/organic/live/advanced.

Request example:

[
  {
    "keyword": "project management software",
    "location_code": 2840,
    "language_code": "en",
    "device": "desktop",
    "os": "windows",
    "depth": 10
  }
]

The response came back in about three seconds. Three fields ahead of the items array frame the rest. item_types lists what Bing rendered, organic results and nothing else in this case. items_count confirms 10 results were parsed. check_url gives you the Bing URL to open and verify. Each item then carries the ranking fields described above.

Response example (items 4 to 10 collapsed for length):

{
  "version": "0.1.20260917",
  "status_code": 20000,
  "status_message": "Ok.",
  "time": "3.0873 sec.",
  "cost": 0.002,
  "tasks_count": 1,
  "tasks_error": 0,
  "tasks": [
    {
      "id": "09181608-1535-0139-0000-e5605d0ea6eb",
      "status_code": 20000,
      "status_message": "Ok.",
      "time": "2.9910 sec.",
      "cost": 0.002,
      "result_count": 1,
      "path": [
        "v3",
        "serp",
        "bing",
        "organic",
        "live",
        "advanced"
      ],
      "data": {
        "api": "serp",
        "function": "live",
        "se": "bing",
        "se_type": "organic",
        "keyword": "project management software",
        "location_code": 2840,
        "language_code": "en",
        "device": "desktop",
        "os": "windows",
        "depth": 10
      },
      "result": [
        {
          "keyword": "project management software",
          "type": "organic",
          "se_domain": "bing.com",
          "location_code": 2840,
          "language_code": "en",
          "check_url": "https://www.bing.com/search?q=project+management+software&form=QBLH&cc=us",
          "datetime": "2026-09-18 16:09:01 +00:00",
          "spell": null,
          "refinement_chips": null,
          "item_types": [
            "organic"
          ],
          "se_results_count": 22600,
          "pages_count": 1,
          "items_count": 10,
          "items": [
            {
              "type": "organic",
              "rank_group": 1,
              "rank_absolute": 1,
              "page": 1,
              "position": "left",
              "xpath": "/html[1]/body[1]/div[1]/main[1]/ol[1]/li[1]",
              "domain": "www.top10.com",
              "title": "Best Project Management Software and Tools of 2026 - Top10.com",
              "url": "https://www.top10.com/project-management/comparison",
              "cache_url": null,
              "related_search_url": null,
              "breadcrumb": "https://www.top10.com › project-management",
              "website_name": "top10.com",
              "is_image": false,
              "is_video": false,
              "is_featured_snippet": false,
              "is_malicious": false,
              "is_web_story": false,
              "checks": null,
              "description": "We compared and reviewed the best project management software and tools to help you make the right decision for your growing …",
              "pre_snippet": null,
              "extended_snippet": null,
              "images": null,
              "amp_version": false,
              "rating": null,
              "price": null,
              "highlighted": null,
              "links": null,
              "faq": null,
              "extended_people_also_search": null,
              "about_this_result": null,
              "related_result": null,
              "timestamp": null,
              "rectangle": null
            },
            {
              "type": "organic",
              "rank_group": 2,
              "rank_absolute": 2,
              "page": 1,
              "position": "left",
              "xpath": "/html[1]/body[1]/div[1]/main[1]/ol[1]/li[2]",
              "domain": "project-management.com",
              "title": "Top 10 Project Management Software I Tested & Recommend for 2026",
              "url": "https://project-management.com/top-10-project-management-software/",
              "cache_url": null,
              "related_search_url": null,
              "breadcrumb": "https://project-management.com",
              "website_name": "project-management.com",
              "is_image": false,
              "is_video": false,
              "is_featured_snippet": false,
              "is_malicious": false,
              "is_web_story": false,
              "checks": null,
              "description": "In this guide, I draw on years of hands-on experience with the best project management software and explain which platform is best …",
              "pre_snippet": null,
              "extended_snippet": null,
              "images": null,
              "amp_version": false,
              "rating": null,
              "price": null,
              "highlighted": null,
              "links": null,
              "faq": null,
              "extended_people_also_search": null,
              "about_this_result": null,
              "related_result": null,
              "timestamp": null,
              "rectangle": null
            },
            {
              "type": "organic",
              "rank_group": 3,
              "rank_absolute": 3,
              "page": 1,
              "position": "left",
              "xpath": "/html[1]/body[1]/div[1]/main[1]/ol[1]/li[3]",
              "domain": "thebusinessdive.com",
              "title": "10 Best Project Management Software In 2026 | +25 Apps Tested",
              "url": "https://thebusinessdive.com/best-project-management-software",
              "cache_url": null,
              "related_search_url": null,
              "breadcrumb": "https://thebusinessdive.com › best-project-management-software",
              "website_name": "thebusinessdive.com",
              "is_image": false,
              "is_video": false,
              "is_featured_snippet": false,
              "is_malicious": false,
              "is_web_story": false,
              "checks": null,
              "description": "Jul 6, 2026 · Some of the most popular project management software include Monday.com, ClickUp, Jira, and Zoho Projects. That …",
              "pre_snippet": "Jul 6, 2026",
              "extended_snippet": null,
              "images": null,
              "amp_version": false,
              "rating": null,
              "price": null,
              "highlighted": null,
              "links": null,
              "faq": null,
              "extended_people_also_search": null,
              "about_this_result": null,
              "related_result": null,
              "timestamp": null,
              "rectangle": null
            }
          ]
        }
      ]
    }
  ]
}

Endpoint used: https://api.dataforseo.com/v3/serp/bing/organic/live/advanced. See the Live Bing Organic SERP Advanced docs for the full parameter list. To turn this into a rank check, filter the items array for your domain and read rank_group off the match. If nothing matches, you’re outside the top depth results, which is worth storing as a result rather than skipping as a null.

Running scheduled Bing rank checks at scale

Live works well for on-demand checks inside a product. For a nightly run across a full keyword set, Standard fits better, and it changes the workflow: you post tasks in batches, then collect them.

One Task POST call accepts up to 100 tasks, and you can send up to 2,000 API calls per minute. Two other fields matter here. The priority takes 1 for normal or 2 for high execution speed. The tag lets you attach your own keyword ID, so results map back to your database without a lookup table.

Request example:

[
  {
    "keyword": "project management software",
    "location_code": 2840,
    "language_code": "en",
    "device": "desktop",
    "os": "windows",
    "depth": 10,
    "priority": 1,
    "tag": "kw_10482"
  },
  {
    "keyword": "best crm software",
    "location_code": 2840,
    "language_code": "en",
    "device": "desktop",
    "os": "windows",
    "depth": 10,
    "priority": 1,
    "tag": "kw_10483"
  }
]

The response confirms each task separately with status code 20100 and returns the id you’ll use to collect the results later.

Response example:

{
  "version": "0.1.20260917",
  "status_code": 20000,
  "status_message": "Ok.",
  "time": "0.0439 sec.",
  "cost": 0.0012,
  "tasks_count": 2,
  "tasks_error": 0,
  "tasks": [
    {
      "id": "09181609-1535-0066-0000-e5cc9bb414ab",
      "status_code": 20100,
      "status_message": "Task Created.",
      "time": "0.0000 sec.",
      "cost": 0.0006,
      "result_count": 0,
      "path": [
        "v3",
        "serp",
        "bing",
        "organic",
        "task_post"
      ],
      "data": {
        "api": "serp",
        "function": "task_post",
        "se": "bing",
        "se_type": "organic",
        "keyword": "project management software",
        "location_code": 2840,
        "language_code": "en",
        "device": "desktop",
        "os": "windows",
        "depth": 10,
        "priority": 1,
        "tag": "kw_10482"
      },
      "result": null
    },
    {
      "id": "09181609-1535-0066-0000-bbc366bc7864",
      "status_code": 20100,
      "status_message": "Task Created.",
      "time": "0.0068 sec.",
      "cost": 0.0006,
      "result_count": 0,
      "path": [
        "v3",
        "serp",
        "bing",
        "organic",
        "task_post"
      ],
      "data": {
        "api": "serp",
        "function": "task_post",
        "se": "bing",
        "se_type": "organic",
        "keyword": "best crm software",
        "location_code": 2840,
        "language_code": "en",
        "device": "desktop",
        "os": "windows",
        "depth": 10,
        "priority": 1,
        "tag": "kw_10483"
      },
      "result": null
    }
  ]
}

Endpoint used: https://api.dataforseo.com/v3/serp/bing/organic/task_post. See the Setting Bing Organic SERP Task POST docs for the rest of the parameters. From there, you have two ways to collect results. Poll Tasks Ready on an interval and pull each finished task through Task GET Advanced. Or skip polling: set the postback_url or pingback_url on the task and we’ll push the results to you. We’ve got you covered on the setup details in our guide to pingbacks and postbacks.

Common mistakes when checking Bing rankings

Most teams trip on the same handful of things when they move from a working request to a running tracker.

  1. Storing rank_absolute and calling it the organic position. It’s the first field people map because it sounds like “the rank.” The moment Bing adds an element above the listings, your reported position shifts with no ranking change. Map rank_group to organic position and keep rank_absolute in its own column.
  2. Raising depth without expecting the billing change. Going deeper to catch keywords outside the top 10 makes sense, but billing counts each block of up to 10 results. Set depth per keyword, based on where the tracked page sits, instead of raising it across the board.
  3. Letting targeting parameters drift between runs. Changing location_code, device, or os mid-campaign produces a position change that looks like real movement on a chart. Store the parameters with every result, so the drift stays visible.
  4. Polling task_get in a loop. Hammering the endpoint for tasks that haven’t finished burns your rate limit and doesn’t make them finish sooner. Use Tasks Ready or pingbacks instead.
  5. Running the whole keyword set through Live. Live is built for single on-demand checks, not scheduled batches. At $0.002 versus $0.0006 per task in our test calls, the method can change the monthly bill several times over, depending on volume and priority.

Where to go from here

Checking a Bing ranking takes one request. Building something your customers can trust takes running that request the same way every time, with location, device and response depth pinned per keyword and stored next to the result. Do that and a disputed position takes a minute to settle from check_url. Our endpoints handle collection. Keeping the parameters stable is your side of it, and it decides whether the chart you show a client means anything.

If you’re ready to wire this into your own tracker, See Docs for the complete Bing SERP API parameter reference and response schema.

Was this article helpful?