URL-level Rank Tracker aggregates for the selected date range.
const url = 'https://sitechecker.pro/api/v1/pages?project_id=12345&date_from=2026-02-22&date_to=2026-05-22&search_engine=google&device=desktop&location_id=loc_TmV3IFlvcms&language_code=en&group_id=SG9tZSBQYWdlcw&rankings=all&movement_window=1d&serp_feature=ads&fields=keyword_refs&limit=50&offset=0';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url 'https://sitechecker.pro/api/v1/pages?project_id=12345&date_from=2026-02-22&date_to=2026-05-22&search_engine=google&device=desktop&location_id=loc_TmV3IFlvcms&language_code=en&group_id=SG9tZSBQYWdlcw&rankings=all&movement_window=1d&serp_feature=ads&fields=keyword_refs&limit=50&offset=0' \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Example
12345Project ID.
Example
2026-02-22Start of the Rank Tracker date range (inclusive, Y-m-d). Clamped to the project’s available indicator dates.
Example
2026-05-22End of the Rank Tracker date range (inclusive, Y-m-d). Visibility-style fields are snapshots for the latest available check within this range (as_of_date).
Free-text search over connected keyword text.
Substring filter on the ranked/page URL.
Example
googleSearch engine machine value from rank_tracker_filter_values (e.g. google).
Device filter.
Example
loc_TmV3IFlvcmsOpaque location id from rank_tracker_filter_values tracking_profiles (loc_… value).
Example
enLanguage code (ISO alpha-2) from rank_tracker_filter_values.
Example
SG9tZSBQYWdlcwKeyword group id from the groups endpoint (opaque value).
Ranking filter. Bucket filters are cumulative (top_10 = positions 1-10); response distribution buckets are exclusive. Movement filters (moved_up/moved_down/not_changed) compare against the movement_window snapshot.
Comparison window for movement rankings filters. Only valid with rankings=moved_up, moved_down or not_changed. Default: 7d.
Filter keywords whose SERP contains the feature.
Minimum search volume.
Maximum search volume.
Use fields=keyword_refs to attach lightweight {tracked_keyword_id, keyword} references per page.
Sort as “
Page size. Rank Tracker list endpoints cap at 50 rows per request.
Pagination offset.
Responses
Section titled “Responses”Paginated URL-level aggregates
object
URL-level aggregates computed over the filtered keyword pool. url_visibility is a percentage snapshot for as_of_date; keyword_refs appear only with fields=keyword_refs.
object
object
Only with fields=keyword_refs. Lightweight references without metrics.
object
Pagination meta plus the snapshot date used for visibility-style fields.
object
Example
{ "data": [ { "page_url": "/youtube-keyword-tool/", "top_keyword": "youtube keyword tool", "top_keyword_volume": 2400, "top_keyword_position": 23, "url_visibility": 15.22, "url_visibility_change_1d": -6, "url_visibility_change_7d": -13, "url_visibility_change_30d": 14, "url_visibility_change_90d": 18, "url_visibility_change_all_time": 27, "tracked_keywords_count": 2, "ai_overview_keywords_count": 0, "url_keywords_volume": 3120, "url_average_position": 21.5, "url_potential_rank": 140.4, "groups": [ { "group_name": "Extra Tools", "keywords_count": 2 } ], "keyword_refs": [ { "tracked_keyword_id": 123456, "keyword": "youtube keyword tool" } ] } ], "meta": { "total": 137, "limit": 50, "offset": 0, "as_of_date": "2026-05-22" }}Missing or invalid API key
object
object
Example
{ "error": { "code": "unauthorized", "message": "Invalid or missing API key." }}No active API entitlement for the account, or the project belongs to another account
Returned as api_access_denied when the account has no active API entitlement, and as forbidden when the requested project belongs to another account.
object
object
Example
{ "error": { "code": "api_access_denied", "message": "API access is not available: the account has no active API entitlement." }}Project not found
The exact missing resource is in error.code: project_not_found, segment_not_found, crawl_not_found, keyword_not_found, opportunity_not_found, snapshot_unavailable or not_found.
object
object
Example
{ "error": { "code": "project_not_found", "message": "Project not found." }}Validation error
Rejected query parameters. error.code is validation_error for parameter validation, or invalid_date_range / invalid_filter / invalid_event_type / unsupported_filter / unsupported_dimension / unsupported_scope / segment_filter_unsupported for module-specific rules.
object
object
Example
{ "error": { "code": "validation_error", "message": "project_id is required." }}Rate limit exceeded — retry after the interval in the Retry-After header
object
object
Example
{ "error": { "code": "rate_limit_exceeded", "message": "Rate limit exceeded. Try again later." }}Internal server error
object
object
Example
{ "error": { "code": "internal_error", "message": "Internal server error." }}