Keyword-level Google AI Overview board.
const url = 'https://sitechecker.pro/api/v1/ai-visibility/google-ai-overview/keywords?project_id=12345&date_from=2026-02-19&date_to=2026-05-19&device=desktop&ai_citation=all&ai_brand_mention=all&limit=100&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/ai-visibility/google-ai-overview/keywords?project_id=12345&date_from=2026-02-19&date_to=2026-05-19&device=desktop&ai_citation=all&ai_brand_mention=all&limit=100&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-19Start of the monitoring period (inclusive), ISO date (UTC).
Example
2026-05-19End of the monitoring period (inclusive), ISO date (UTC).
Opt-in enrichment: citation_url,volume,serp_position,changes,gsc
Responses
Section titled “Responses”AIO keyword board
object
Keyword-level AI Overview row on the Rank Tracker keyword set. The AIO layer (has_ai_overview / has_owner_citation / has_brand_mention / avg_citation_position) is returned by default; citation_url, volume, serp_position, changes and gsc appear only when requested via the matching fields= group.
object
Only with fields=citation_url.
Only with fields=volume.
Only with fields=serp_position.
Only with fields=changes. SERP position deltas over each window.
object
Only with fields=gsc. Latest synced GSC snapshot values.
object
object
Reusable OpenAPI response schemas for the Public REST API: the error/meta envelope and one item schema per resource. Property names come from the Field registry so the documented contract and the runtime response shapes stay in lock-step.
Example
{ "data": [ { "tracked_keyword_id": 123456, "keyword": "ai overview checker", "search_engine": "google", "device": "desktop", "country": "US", "language": "en", "has_ai_overview": true, "has_owner_citation": false, "has_brand_mention": false, "avg_citation_position": 3, "volume": 2900, "serp_position": 5, "changes": { "1d": -1, "7d": 2, "30d": 7, "90d": 12 }, "gsc": { "impressions": 3278, "clicks": 27, "ctr": 0.82, "position": 12.4 } } ], "meta": { "total": 137, "limit": 50, "offset": 0 }}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 or unsupported filter
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." }}