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.
https://api.rankparse.com/v1/bing/search-analyticsFreeAPI key + connected Bing accountReads 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
sitestringrequiredThe 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.
startDatestringrequiredFirst 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.
endDatestringrequiredLast day, YYYY-MM-DD.
dimensionstringdefault queryquery (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.
filterQuerystringKeep rows whose query equals this, ignoring letter case. Cannot be combined with filterQueryContains.
filterQueryContainsstringKeep rows whose query contains this text, ignoring letter case.
filterPagestringKeep 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.
filterPageContainsstringKeep rows whose page URL contains this text, for a segment such as /blog/.
minImpressionsnumberKeep 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.
minClicksnumberKeep rows with at least this many clicks (same rule with compareTo).
minPositionnumberKeep rows with an average position at or above this number. Excludes rows with no position.
maxPositionnumberKeep rows with an average position at or below this number.
maxCtrnumberKeep rows with a CTR at or below this, as a fraction from 0 to 1.
compareTostringprevious_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.
sortstringclicks, 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.
orderstringasc 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.
fieldsstringComma-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 0Offset into the sorted rows, to read past the first page. Use next_start_row from a response that says has_more.
rowLimitintegerdefault 100Rows to return, at most 1000.
Response
sourcestringbing or yandex.
sitestringThe website that was read.
requested_sitestringPresent only when your site was matched to a different website (for example a bare host); site then holds the one used.
rowsarrayResult rows.
Show propertiesHide properties
keysarray of stringsOne value per dimension: the query, the page, or the query then the page.
clicksnumberClicks.
impressionsnumberImpressions.
ctrnumberClick-through rate, a fraction from 0 to 1.
positionnumber | nullAverage position, weighted by impressions across the period. null when the provider reports none.
click_positionnumber | nullAverage position of the results that were clicked, weighted by clicks.
previousobject | nullWith compareTo: that period's clicks, impressions, ctr and position, or null for a new row.
deltaobjectWith compareTo: the change, where positive is better. position is null when the row is in only one period.
statusstringWith compareTo: both, new or lost.
row_countintegerRows in this response.
total_matchedintegerRows that passed every filter, before rowLimit and startRow.
has_morebooleantrue when more matching rows follow this page.
next_start_rowintegerPresent when has_more is true: pass it as startRow for the next page.
notestringWhat this data does and does not cover.
granularitystringdate_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.
Related
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.