Skip to content

Rank Tracker Groups

GET
/api/v1/groups
curl --request GET \
--url 'https://sitechecker.pro/api/v1/groups?project_id=12345&date_from=2026-02-22&date_to=2026-05-22&search_engine=google&device=desktop&location_id=loc_TmV3IFlvcmssVW5pdGVkIFN0YXRlcw&language_code=en&group_id=SG9tZSBQYWdlcw&rankings=all&movement_window=1d&serp_feature=ads&fields=page_refs&limit=50&offset=0' \
--header 'Authorization: Bearer <token>'

Returns keyword group aggregates, including visibility, average position, ranking distribution, and comparison values for the selected date range. Rank Tracker groups its keywords itself, so page segments do not apply here.

project_id
required
integer
Example
12345

Project ID.

date_from
required
string format: date
Example
2026-02-22

Start of the Rank Tracker date range (inclusive, Y-m-d). Clamped to the project’s available indicator dates.

date_to
required
string format: date
Example
2026-05-22

End 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).

search
string

Free-text search over connected keyword text.

url
string

Substring filter on ranked URLs connected to the group.

search_engine
string
Example
google

Search engine machine value from rank_tracker_filter_values (e.g. google).

device
string
Allowed values: desktop mobile tablet

Device filter.

location_id
string
Example
loc_TmV3IFlvcmssVW5pdGVkIFN0YXRlcw

Opaque location id from rank_tracker_filter_values tracking_profiles (loc_… value).

language_code
string
Example
en

Language code (ISO alpha-2) from rank_tracker_filter_values.

group_id
string
Example
SG9tZSBQYWdlcw

Keyword group id from the groups endpoint (opaque value).

rankings
string
default: all
Allowed values: all top_1 top_3 top_10 top_30 top_50 top_100 no_position moved_up moved_down not_changed

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.

movement_window
string
default: 7d
Allowed values: 1d 7d 30d 90d all_time

Comparison window for movement rankings filters. Only valid with rankings=moved_up, moved_down or not_changed. Default: 7d.

serp_feature
string
Allowed values: ads featured_snippet people_also_ask shopping top_carousel video

Filter keywords whose SERP contains the feature.

volume_from
integer

Minimum search volume.

volume_to
integer

Maximum search volume.

fields
string
Allowed values: page_refs

Use fields=page_refs to attach lightweight page/URL references (and urls_count) per group.

order_by
string

Sort as “_asc” or “_desc”. Sortable fields: group_name, tracked_keywords_count, group_average_position, group_keywords_volume, group_potential_rank, group_visibility.

limit
integer
default: 50 >= 1 <= 50

Page size. Rank Tracker list endpoints cap at 50 rows per request.

offset
integer
0

Pagination offset.

Paginated keyword group aggregates

Media typeapplication/json
object
data
Array<object>

Keyword group aggregates; source of truth for group_id values. page_refs/urls_count appear only with fields=page_refs.

object
group_id

Group id. This endpoint is the source of truth for the values the group_id filter accepts.

string
nullable
group_name

Display name of the group.

string
nullable
group_visibility

Visibility across the keywords in this group, as a percentage snapshot for as_of_date.

number format: float
nullable
group_visibility_change_1d

Visibility change over the last day, in percentage points.

number format: float
nullable
group_visibility_change_7d

Visibility change over the last 7 days, in percentage points.

number format: float
nullable
group_visibility_change_30d

Visibility change over the last 30 days, in percentage points.

number format: float
nullable
group_visibility_change_90d

Visibility change over the last 90 days, in percentage points.

number format: float
nullable
group_visibility_change_all_time

Visibility change since tracking began, in percentage points.

number format: float
nullable
tracked_keywords_count

Keywords in the group.

integer
ai_overview_keywords_count

How many of them return an AI Overview.

integer
nullable
group_keywords_volume

Combined monthly search volume of those keywords.

integer
nullable
group_average_position

Mean position across those keywords.

number format: float
nullable
group_potential_rank

Traffic potential score for the group, weighting volume by position.

number format: float
nullable
urls_count

Only with fields=page_refs.

integer
nullable
page_refs

Only with fields=page_refs. Lightweight URL references without metrics.

Array<object>
nullable
object
page_url
string
meta

Pagination meta plus the snapshot date used for visibility-style fields.

object
total

Rows matching the request, before pagination.

integer
limit

Page size that was applied.

integer
offset

Pagination offset that was applied.

integer
as_of_date

Date the visibility-style fields were snapshotted on.

string format: date
nullable
Example
{
"data": [
{
"group_id": "RXh0cmEgVG9vbHM",
"group_name": "Extra Tools",
"group_visibility": 23,
"group_visibility_change_1d": 1,
"group_visibility_change_7d": -1,
"group_visibility_change_30d": -4,
"group_visibility_change_90d": 5,
"group_visibility_change_all_time": 23,
"tracked_keywords_count": 336,
"ai_overview_keywords_count": 2,
"group_keywords_volume": 828070,
"group_average_position": 8.3,
"group_potential_rank": 83140.2,
"urls_count": 94,
"page_refs": [
{
"page_url": "/youtube-keyword-tool/"
}
]
}
],
"meta": {
"total": 137,
"limit": 50,
"offset": 0,
"as_of_date": "2026-05-22"
}
}

Missing or invalid API key

Media typeapplication/json

Returned as INVALID_API_KEY when the key is missing or unknown, and as REVOKED_API_KEY when the key exists but was revoked — the latter needs a new key.

object
error
required
object
code
required
string
Allowed values: VALIDATION_ERROR BAD_REQUEST PROJECT_NOT_FOUND SEGMENT_NOT_FOUND ACCESS_DENIED CRAWL_IN_PROGRESS NOT_FOUND UPSTREAM_ERROR INVALID_API_KEY REVOKED_API_KEY RATE_LIMIT_EXCEEDED MISSING_PUBLIC_API_ACCESS INTERNAL_ERROR CRAWL_NOT_FOUND INVALID_DATE_RANGE INVALID_FILTER INVALID_EVENT_TYPE KEYWORD_NOT_FOUND OPPORTUNITY_NOT_FOUND SNAPSHOT_UNAVAILABLE GSC_NOT_CONNECTED GA4_NOT_CONNECTED SITE_AUDIT_DATA_UNAVAILABLE GA4_DATA_UNAVAILABLE UNSUPPORTED_FILTER UNSUPPORTED_DIMENSION UNSUPPORTED_METRIC SEGMENT_FILTER_UNSUPPORTED UNSUPPORTED_SCOPE AI_OVERVIEW_DATA_UNAVAILABLE PROMPT_DATA_UNAVAILABLE
message
required
string
Example
{
"error": {
"code": "INVALID_API_KEY",
"message": "Invalid or missing API key."
}
}

No active API entitlement for the account, or the project belongs to another account

Media typeapplication/json

Returned as MISSING_PUBLIC_API_ACCESS when the account has no active API entitlement, and as ACCESS_DENIED when the requested project belongs to another account.

object
error
required
object
code
required
string
Allowed values: VALIDATION_ERROR BAD_REQUEST PROJECT_NOT_FOUND SEGMENT_NOT_FOUND ACCESS_DENIED CRAWL_IN_PROGRESS NOT_FOUND UPSTREAM_ERROR INVALID_API_KEY REVOKED_API_KEY RATE_LIMIT_EXCEEDED MISSING_PUBLIC_API_ACCESS INTERNAL_ERROR CRAWL_NOT_FOUND INVALID_DATE_RANGE INVALID_FILTER INVALID_EVENT_TYPE KEYWORD_NOT_FOUND OPPORTUNITY_NOT_FOUND SNAPSHOT_UNAVAILABLE GSC_NOT_CONNECTED GA4_NOT_CONNECTED SITE_AUDIT_DATA_UNAVAILABLE GA4_DATA_UNAVAILABLE UNSUPPORTED_FILTER UNSUPPORTED_DIMENSION UNSUPPORTED_METRIC SEGMENT_FILTER_UNSUPPORTED UNSUPPORTED_SCOPE AI_OVERVIEW_DATA_UNAVAILABLE PROMPT_DATA_UNAVAILABLE
message
required
string
Example
{
"error": {
"code": "MISSING_PUBLIC_API_ACCESS",
"message": "API access is not available: the account has no active API entitlement."
}
}

Project not found

Media typeapplication/json

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
error
required
object
code
required
string
Allowed values: VALIDATION_ERROR BAD_REQUEST PROJECT_NOT_FOUND SEGMENT_NOT_FOUND ACCESS_DENIED CRAWL_IN_PROGRESS NOT_FOUND UPSTREAM_ERROR INVALID_API_KEY REVOKED_API_KEY RATE_LIMIT_EXCEEDED MISSING_PUBLIC_API_ACCESS INTERNAL_ERROR CRAWL_NOT_FOUND INVALID_DATE_RANGE INVALID_FILTER INVALID_EVENT_TYPE KEYWORD_NOT_FOUND OPPORTUNITY_NOT_FOUND SNAPSHOT_UNAVAILABLE GSC_NOT_CONNECTED GA4_NOT_CONNECTED SITE_AUDIT_DATA_UNAVAILABLE GA4_DATA_UNAVAILABLE UNSUPPORTED_FILTER UNSUPPORTED_DIMENSION UNSUPPORTED_METRIC SEGMENT_FILTER_UNSUPPORTED UNSUPPORTED_SCOPE AI_OVERVIEW_DATA_UNAVAILABLE PROMPT_DATA_UNAVAILABLE
message
required
string
Example
{
"error": {
"code": "PROJECT_NOT_FOUND",
"message": "Project not found."
}
}

Validation error

Media typeapplication/json

Rejected query parameters. error.code is VALIDATION_ERROR for parameter validation (including a query parameter the endpoint does not accept), or INVALID_DATE_RANGE / INVALID_FILTER / INVALID_EVENT_TYPE / UNSUPPORTED_FILTER / UNSUPPORTED_DIMENSION / UNSUPPORTED_METRIC / UNSUPPORTED_SCOPE / SEGMENT_FILTER_UNSUPPORTED for module-specific rules.

object
error
required
object
code
required
string
Allowed values: VALIDATION_ERROR BAD_REQUEST PROJECT_NOT_FOUND SEGMENT_NOT_FOUND ACCESS_DENIED CRAWL_IN_PROGRESS NOT_FOUND UPSTREAM_ERROR INVALID_API_KEY REVOKED_API_KEY RATE_LIMIT_EXCEEDED MISSING_PUBLIC_API_ACCESS INTERNAL_ERROR CRAWL_NOT_FOUND INVALID_DATE_RANGE INVALID_FILTER INVALID_EVENT_TYPE KEYWORD_NOT_FOUND OPPORTUNITY_NOT_FOUND SNAPSHOT_UNAVAILABLE GSC_NOT_CONNECTED GA4_NOT_CONNECTED SITE_AUDIT_DATA_UNAVAILABLE GA4_DATA_UNAVAILABLE UNSUPPORTED_FILTER UNSUPPORTED_DIMENSION UNSUPPORTED_METRIC SEGMENT_FILTER_UNSUPPORTED UNSUPPORTED_SCOPE AI_OVERVIEW_DATA_UNAVAILABLE PROMPT_DATA_UNAVAILABLE
message
required
string
Example
{
"error": {
"code": "VALIDATION_ERROR",
"message": "project_id is required."
}
}

Rate limit exceeded — retry after the interval in the Retry-After header

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: VALIDATION_ERROR BAD_REQUEST PROJECT_NOT_FOUND SEGMENT_NOT_FOUND ACCESS_DENIED CRAWL_IN_PROGRESS NOT_FOUND UPSTREAM_ERROR INVALID_API_KEY REVOKED_API_KEY RATE_LIMIT_EXCEEDED MISSING_PUBLIC_API_ACCESS INTERNAL_ERROR CRAWL_NOT_FOUND INVALID_DATE_RANGE INVALID_FILTER INVALID_EVENT_TYPE KEYWORD_NOT_FOUND OPPORTUNITY_NOT_FOUND SNAPSHOT_UNAVAILABLE GSC_NOT_CONNECTED GA4_NOT_CONNECTED SITE_AUDIT_DATA_UNAVAILABLE GA4_DATA_UNAVAILABLE UNSUPPORTED_FILTER UNSUPPORTED_DIMENSION UNSUPPORTED_METRIC SEGMENT_FILTER_UNSUPPORTED UNSUPPORTED_SCOPE AI_OVERVIEW_DATA_UNAVAILABLE PROMPT_DATA_UNAVAILABLE
message
required
string
Example
{
"error": {
"code": "RATE_LIMIT_EXCEEDED",
"message": "Rate limit exceeded. Try again later."
}
}

Internal server error

Media typeapplication/json
object
error
required
object
code
required
string
Allowed values: VALIDATION_ERROR BAD_REQUEST PROJECT_NOT_FOUND SEGMENT_NOT_FOUND ACCESS_DENIED CRAWL_IN_PROGRESS NOT_FOUND UPSTREAM_ERROR INVALID_API_KEY REVOKED_API_KEY RATE_LIMIT_EXCEEDED MISSING_PUBLIC_API_ACCESS INTERNAL_ERROR CRAWL_NOT_FOUND INVALID_DATE_RANGE INVALID_FILTER INVALID_EVENT_TYPE KEYWORD_NOT_FOUND OPPORTUNITY_NOT_FOUND SNAPSHOT_UNAVAILABLE GSC_NOT_CONNECTED GA4_NOT_CONNECTED SITE_AUDIT_DATA_UNAVAILABLE GA4_DATA_UNAVAILABLE UNSUPPORTED_FILTER UNSUPPORTED_DIMENSION UNSUPPORTED_METRIC SEGMENT_FILTER_UNSUPPORTED UNSUPPORTED_SCOPE AI_OVERVIEW_DATA_UNAVAILABLE PROMPT_DATA_UNAVAILABLE
message
required
string
Example
{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error."
}
}