Skip to Content
Yandex Webmaster

Query search analytics

Run a live Yandex Webmaster query, with clicks, impressions, CTR and average position by query, optionally for one device type.

GEThttps://api.rankparse.com/v1/yandex/search-analyticsFreeAPI key + connected Yandex account

Reads one host's popular search queries live from Yandex Webmaster for a date range: clicks, impressions, click-through rate and average position. It answers in the same shape as Google Search Console, with the same filters, sorting, paging and compareTo. It covers any query Yandex reports, not only tracked keywords.

Yandex reports queries for the whole host only: there is no page or country dimension, and asking for one returns 400 unsupported_filter. One read covers the first 1000 queries ordered by impressions.

Query parameters

sitestringrequired

The host, as returned by List properties, or a bare host or URL such as example.com, which is matched to a verified host (https first, www ignored). A host with no match returns 404 yandex_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 (popular queries) or date (a daily trend). Anything else returns 400 invalid_dimension; page is not available because Yandex has no page dimension.

date returns one row per day, chronological, for the whole host, or for one query when you send filterQuery. Rows carry clicks, impressions, ctr and, when Yandex sends them, position. The query must be one of the host's popular queries for the date range, otherwise the call returns 404 yandex_query_not_found. A trend takes no compareTo (read two date ranges instead) and no filterQueryContains. The default rowLimit is 500.

devicestring

Only traffic from this device type: desktop, mobile or tablet. Anything else returns 400 invalid_device.

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.

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.

devicestring

Echoed when you sent device.

comparison_may_be_incompleteboolean

With compareTo: true when either period had more than the 1000 queries one read covers, so a row marked new or lost may only be outside the rows read.

Behavior and limits

  • Credits: 0. Rate limit 60 requests per minute per key, and a daily cap of 300 live Yandex reads per workspace (429 yandex_daily_cap_reached).
  • Two reads with compareTo: the previous period is a second Yandex request.
  • Host only: no pages, no countries.

Errors

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

MCP tools: get_yandex_top_queries, get_yandex_date_trends, get_yandex_query_trend.