Skip to Content
Rank tracking

Get rankings

Current versus previous period ranking summaries for a website's tracked keywords, per search engine.

GEThttps://api.rankparse.com/v1/rank-tracking/rankingsFreeAPI key

Returns, for each tracked keyword of a website, a summary per engine: clicks, impressions, CTR and average position over the current period and the period before it, plus the movement between them. By default it covers every engine enabled for your account, so you can compare engines side by side. Compare per engine: positions from different engines are not one blended rank.

Query parameters

site_idstringrequired

The website, from List sites. A missing or unknown ID returns 404 rank_tracking_site_not_found.

keyword_idstring

Restrict the response to one tracked keyword, from List keywords. An unknown ID returns 404 rank_tracking_keyword_not_found. With it, limit and offset are ignored.

enginestringdefault all

all, google, bing or yandex. all covers every engine enabled for your account. Any other value returns 400 invalid_rank_tracking_engine; a real engine that is not enabled for your account returns 400 rank_tracking_provider_disabled.

period_daysintegerdefault 28

Length of the current and previous windows in days, 1 to 90. Anything else returns 400 invalid_rank_tracking_period.

limitintegerdefault 100

Keywords per page, 1 to 100. A missing, non-integer or out-of-range value falls back to 100.

offsetintegerdefault 0

Number of keywords to skip. An invalid value falls back to 0.

Response

site_idstring

The website you asked for.

canonical_hoststring

The website's host.

enabled_enginesarray of strings

Engines enabled for your account, whether or not they have data for these keywords. An engine listed here but missing from a keyword's engines is enabled but not attached to this website.

period_daysinteger

The window length used.

limitinteger

The page size used.

offsetinteger

The offset used.

totalinteger

Tracked keywords on the website (1 with keyword_id), for pagination.

keywordsarray

One entry per keyword, oldest first.

Show properties
idstring

The keyword ID.

querystring

The tracked query text.

enginesobject

Keyed by engine. A missing engine means it is not connected or not attached to this website, never a zero rank. Each value has the fields below.

engines.*.enginestring

google, bing or yandex.

engines.*.property_idstring

The primary property the figures come from.

engines.*.property_urlstring

That property's URL as the provider names it.

engines.*.availabilitystring

See Engines and availability. Anything other than available can come with null metrics, which is a data-quality signal, not a missing ranking.

engines.*.data_as_ofstring | null

YYYY-MM-DD the provider's data for this keyword covers.

engines.*.top_pagestring | null

The page the provider reports as top for the query, when stored.

engines.*.current_periodobject

start_date and end_date (inclusive) of the current window.

engines.*.previous_periodobject

start_date and end_date of the window before it.

engines.*.currentobject

clicks and impressions (sums), ctr (clicks divided by impressions, a 0 to 1 fraction), position (average position weighted by impressions) and click_position (average weighted by clicks) for the current window. All are null when no day in the window has stored data.

engines.*.previousobject

The same fields for the previous window.

engines.*.movementnumber | null

previous.position minus current.position. Positive means the keyword moved up (a lower, better position number). null unless both windows have a position.

engines.*.countriesarray | null

Up to 10 countries by impressions from the keyword's most recent stored sync period, each with country (the provider's code), clicks, impressions, ctr and position. null means country data has never been synced for this keyword, which is different from "no traffic".

Behavior and limits

  • Credits: 0.
  • Windows per engine: each engine's windows end on that property's own latest data_as_of, so engines with different freshness never share a period. The current window is the last period_days days up to that date, and the previous window is the period_days days before it. A property with no data yet uses the day 3 days before today.
  • Stored data only: the figures are provider-reported averages from synced snapshots, not a live SERP check.

Errors

HTTPCodeWhen
400invalid_rank_tracking_engineengine is not all, google, bing or yandex.
400rank_tracking_provider_disabledengine is a real engine that is not enabled for your account.
400invalid_rank_tracking_periodperiod_days is not an integer from 1 to 90.
401invalid_api_keyMissing, invalid or revoked API key.
404rank_tracking_site_not_foundNo website with that site_id in your workspace.
404rank_tracking_keyword_not_foundkeyword_id is not a tracked keyword of this website.
429rate_limitedMore than 60 requests per minute for this key.

MCP tool: get_keyword_rankings (accepts site_id, keyword_id, engine, period_days, limit, offset).