Skip to Content
Rank tracking

Get keyword history

Day-by-day stored ranking history for one keyword on one search engine, in total or per device.

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

Returns the stored daily metrics for one keyword on one engine over a date range, plus the sync state of that keyword on the engine's primary property. History is always single-engine: engine is required and all is not accepted. Use Get rankings to compare engines first.

Query parameters

site_idstringrequired

The website, from List sites.

keyword_idstringrequired

The keyword, from List keywords. A keyword that does not belong to this website in your workspace (including an unknown site_id) returns 404 rank_tracking_keyword_not_found.

enginestringrequired

google, bing or yandex. Missing, all or any other value returns 400 invalid_rank_tracking_engine. An engine not enabled for your account returns 400 rank_tracking_provider_disabled.

start_datestringrequired

First day, YYYY-MM-DD, inclusive.

end_datestringrequired

Last day, YYYY-MM-DD, inclusive. Both dates must be real calendar dates, start_date must not be after end_date, and the inclusive span is capped at 400 days. Anything else returns 400 invalid_rank_tracking_date.

dimensionstringdefault total

total returns one row per day. device returns one row per day per device, with a device field on each row. Any other value returns 400 invalid_rank_tracking_dimension.

Response

site_idstring

The website you asked for.

keyword_idstring

The keyword ID.

querystring

The tracked query text.

enginestring

The engine you asked for.

property_idstring

The primary property the rows come from.

property_urlstring

That property's URL.

availabilitystring

State of this keyword on this engine. pending_first_sync when no sync state exists yet. See Engines and availability.

data_as_ofstring | null

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

last_attempt_atinteger | null

Unix time in milliseconds of the last sync attempt.

last_success_atinteger | null

Unix time in milliseconds of the last successful sync.

error_codestring | null

Stable error code of the last failed attempt.

start_datestring

The range start used.

end_datestring

The range end used.

dimensionstring

total or device, echoing the request.

rowsarray

Stored days in the range, ascending by date (then by device).

Show properties
datestring

YYYY-MM-DD.

clicksnumber | null

Clicks that day.

impressionsnumber | null

Impressions that day.

ctrnumber | null

Click-through rate as a 0 to 1 fraction.

positionnumber | null

Provider-reported average position that day.

click_positionnumber | null

Average position of the clicks that day, when the provider reports it.

devicestring

Only with dimension=device: desktop, mobile or tablet.

Behavior and limits

  • Credits: 0.
  • Gaps are not zeros. A date missing from rows had no synced observation. Never treat a gap as a zero or a dropped rank.
  • Device rows exist only where the provider synced them: always for Google, and for Yandex only when its per-device breakdown is switched on. Bing has none. An empty device history next to a populated total history means "not synced per device", not "no traffic".
  • Bing and Yandex sync less often than Google and may report provider_limited, meaning the provider did not return enough data, not that the keyword ranks nowhere.

Errors

HTTPCodeWhen
400invalid_rank_tracking_engineengine is missing, all, or not an engine.
400rank_tracking_provider_disabledThe engine is not enabled for your account.
400invalid_rank_tracking_dateA date is missing, malformed or not a real date, the dates are out of order, or the span exceeds 400 days.
400invalid_rank_tracking_dimensiondimension is not total or device.
400rank_tracking_property_not_attachedThe keyword exists but the website has no primary property attached for that engine.
401invalid_api_keyMissing, invalid or revoked API key.
404rank_tracking_keyword_not_foundThe keyword is not tracked on this website in your workspace, or the website does not exist or is archived.
429rate_limitedMore than 60 requests per minute for this key.

MCP tool: get_keyword_rank_history (accepts site_id, keyword_id, engine, start_date, end_date, dimension).