Skip to Content
Bing Webmaster Tools

Query search analytics

Run a live Bing Webmaster Tools query, with clicks, impressions, CTR and average position by query, page, or query and page pair.

GEThttps://api.rankparse.com/v1/bing/search-analyticsFreeAPI key + connected Bing account

Reads one website's search data live from Bing: clicks, impressions, click-through rate and average position, grouped by query, page, or query and page pair. It answers in the same shape as Google Search Console, with the same filters, sorting, paging and compareTo. It covers any query Bing reports, not only tracked keywords.

Bing returns its bounded top data with its own date bins (typically weekly): a date range includes every bin dated inside it, and low-traffic queries are absent. One read holds every date, so compareTo costs no extra Bing call.

Query parameters

sitestringrequired

The website, as returned by List properties, or a bare host or URL such as example.com, which is matched to a website you have verified. A website with no match returns 404 bing_site_not_found with valid_properties. Missing returns 400 missing_site.

startDatestringrequired

First day, YYYY-MM-DD. Missing returns 400 missing_dates; any other format returns 400 invalid_date. The same applies to endDate, which must not be before startDate.

endDatestringrequired

Last day, YYYY-MM-DD.

dimensionstringdefault query

query (top queries), page (top pages), query_page (query and page pairs) or date (a daily trend). Anything else returns 400 invalid_dimension.

query_page has no dates and no positions in Bing's data: startDate and endDate are not applied, position is null, and compareTo returns 400 compare_not_available.

date returns one row per day, chronological, for the whole website, or for one query when you send filterQuery. Its rows carry clicks, impressions, ctr and, when Bing sends them, position. It takes no compareTo (read two date ranges instead) and no filterQueryContains or page filter. The default rowLimit is 500.

filterQuerystring

Keep rows whose query equals this, ignoring letter case. Cannot be combined with filterQueryContains.

filterQueryContainsstring

Keep rows whose query contains this text, ignoring letter case.

filterPagestring

Keep rows for this exact page URL. With dimension=query_page it is also sent to Bing, which then answers for that page. Needs dimension=page or query_page. Cannot be combined with filterPageContains.

filterPageContainsstring

Keep rows whose page URL contains this text, for a segment such as /blog/.

minImpressionsnumber

Keep rows with at least this many impressions. With compareTo, a row passes when either period meets it, so a page that lost everything still shows.

minClicksnumber

Keep rows with at least this many clicks (same rule with compareTo).

minPositionnumber

Keep rows with an average position at or above this number. Excludes rows with no position.

maxPositionnumber

Keep rows with an average position at or below this number.

maxCtrnumber

Keep rows with a CTR at or below this, as a fraction from 0 to 1.

compareTostring

previous_period also reads the period of the same length that ends the day before startDate and adds previous, delta and status to every row. Every delta reads positive is better: clicks, impressions and ctr are current minus previous, and position is previous minus current, so a positive position means the row moved up. status is both, new (only in the current period) or lost (only in the previous one). Anything else returns 400 invalid_compare_to.

sortstring

clicks, impressions, ctr or position; with compareTo also clicks_delta, impressions_delta, ctr_delta or position_delta. The default order is clicks, then impressions. Anything else returns 400 invalid_sort.

orderstring

asc or desc. The default is largest first, except position, where the best (lowest) comes first. For the biggest losers use sort=clicks_delta&order=asc.

fieldsstring

Comma-separated subset of keys, clicks, impressions, ctr, position, previous, delta and status. Keeps a large response small. An unknown name returns 400 invalid_fields.

startRowintegerdefault 0

Offset into the sorted rows, to read past the first page. Use next_start_row from a response that says has_more.

rowLimitintegerdefault 100

Rows to return, at most 1000.

Response

sourcestring

bing or yandex.

sitestring

The website that was read.

requested_sitestring

Present only when your site was matched to a different website (for example a bare host); site then holds the one used.

rowsarray

Result rows.

Show properties
keysarray of strings

One value per dimension: the query, the page, or the query then the page.

clicksnumber

Clicks.

impressionsnumber

Impressions.

ctrnumber

Click-through rate, a fraction from 0 to 1.

positionnumber | null

Average position, weighted by impressions across the period. null when the provider reports none.

click_positionnumber | null

Average position of the results that were clicked, weighted by clicks.

previousobject | null

With compareTo: that period's clicks, impressions, ctr and position, or null for a new row.

deltaobject

With compareTo: the change, where positive is better. position is null when the row is in only one period.

statusstring

With compareTo: both, new or lost.

row_countinteger

Rows in this response.

total_matchedinteger

Rows that passed every filter, before rowLimit and startRow.

has_moreboolean

true when more matching rows follow this page.

next_start_rowinteger

Present when has_more is true: pass it as startRow for the next page.

notestring

What this data does and does not cover.

granularitystring

date_bins when Bing returned dates, undated for query_page. Not present for dimension=date, whose rows are days.

Behavior and limits

  • Credits: 0. Rate limit 60 requests per minute per key, and a daily cap of 300 live Bing reads per workspace (429 bing_daily_cap_reached).
  • Bounded data: Bing reports only its top queries and pages for the website. Absence is not proof of no traffic.
  • Newly verified websites: Bing needs some days before it reports queries (400 bing_data_not_ready).

Errors

See the shared errors. Parameter errors are 400 with the codes named above.

MCP tools: get_bing_top_queries, get_bing_top_pages, get_bing_page_queries, get_bing_query_pages, get_bing_date_trends, get_bing_query_trend.