Get rankings
Current versus previous period ranking summaries for a website's tracked keywords, per search engine.
https://api.rankparse.com/v1/rank-tracking/rankingsFreeAPI keyReturns, 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_idstringrequiredThe website, from List sites. A missing or unknown ID returns 404 rank_tracking_site_not_found.
keyword_idstringRestrict 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 allall, 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 28Length of the current and previous windows in days, 1 to 90. Anything else returns 400 invalid_rank_tracking_period.
limitintegerdefault 100Keywords per page, 1 to 100. A missing, non-integer or out-of-range value falls back to 100.
offsetintegerdefault 0Number of keywords to skip. An invalid value falls back to 0.
Response
site_idstringThe website you asked for.
canonical_hoststringThe website's host.
enabled_enginesarray of stringsEngines 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_daysintegerThe window length used.
limitintegerThe page size used.
offsetintegerThe offset used.
totalintegerTracked keywords on the website (1 with keyword_id), for pagination.
keywordsarrayOne entry per keyword, oldest first.
Show propertiesHide properties
idstringThe keyword ID.
querystringThe tracked query text.
enginesobjectKeyed 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.*.enginestringgoogle, bing or yandex.
engines.*.property_idstringThe primary property the figures come from.
engines.*.property_urlstringThat property's URL as the provider names it.
engines.*.availabilitystringSee 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 | nullYYYY-MM-DD the provider's data for this keyword covers.
engines.*.top_pagestring | nullThe page the provider reports as top for the query, when stored.
engines.*.current_periodobjectstart_date and end_date (inclusive) of the current window.
engines.*.previous_periodobjectstart_date and end_date of the window before it.
engines.*.currentobjectclicks 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.*.previousobjectThe same fields for the previous window.
engines.*.movementnumber | nullprevious.position minus current.position. Positive means the keyword moved up (a lower, better position number). null unless both windows have a position.
engines.*.countriesarray | nullUp 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 lastperiod_daysdays up to that date, and the previous window is theperiod_daysdays 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
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_rank_tracking_engine | engine is not all, google, bing or yandex. |
| 400 | rank_tracking_provider_disabled | engine is a real engine that is not enabled for your account. |
| 400 | invalid_rank_tracking_period | period_days is not an integer from 1 to 90. |
| 401 | invalid_api_key | Missing, invalid or revoked API key. |
| 404 | rank_tracking_site_not_found | No website with that site_id in your workspace. |
| 404 | rank_tracking_keyword_not_found | keyword_id is not a tracked keyword of this website. |
| 429 | rate_limited | More than 60 requests per minute for this key. |
Related
MCP tool: get_keyword_rankings (accepts site_id, keyword_id, engine, period_days, limit, offset).