AI Overview Keywords
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>'Returns keyword-level Google AI Overview results over the Rank Tracker keyword set, including visibility, source, position, and comparison data when available. The AI Overview layer is returned by default; citation URL, volume, SERP position, changes and GSC metrics appear only when the matching fields= group asks for them.
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).
Filter tracked keywords by country.
Filter tracked keywords by device.
Filter tracked keywords by language.
Lower bound on monthly search volume.
Upper bound on monthly search volume.
Keep keywords whose AI Overview cites the project (with), does not cite it (without), or either (all).
Keep only keywords whose AI Overview cites this URL.
Lower bound on the position of the project citation inside the AI Overview source list.
Upper bound on the position of the project citation inside the AI Overview source list.
Keep keywords whose AI Overview mentions the brand (with), does not mention it (without), or either (all).
Substring search over the keyword text.
Opt-in enrichment: citation_url,volume,serp_position,changes,gsc
Comma-separated optional groups to add to each row: citation_url, volume, serp_position, changes, gsc. The AI Overview layer is always returned.
Sort as
Page size.
Pagination offset.
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
Rank Tracker keyword id. Pass it to the response details endpoint.
Keyword text.
Search engine the keyword is tracked on.
Device the keyword is tracked on.
Country the keyword is tracked for.
Language the keyword is tracked for.
Whether the SERP returned an AI Overview for this keyword.
Whether the AI Overview cites the project.
Whether the AI Overview mentions the brand.
Position of the project citation inside the AI Overview source list. Null when the project is not cited.
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
AI Overview meta block for list endpoints: the standard block plus pagination.
object
Project the response was built for.
Start of the period the response covers.
End of the period the response covers.
Whether AI Overview tracking is connected and usable for this project.
object
Latest AI Overview data date available for this project, null when there is none.
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.
Page size that was applied.
Pagination offset that was applied.
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": { "project_id": 12345, "date_from": "2026-05-01", "date_to": "2026-05-31", "source_status": { "aio": "connected" }, "data_freshness": { "aio_date": "2026-06-30" }, "total": 137, "limit": 50, "offset": 0 }}Missing or invalid API key
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
object
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
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
object
Example
{ "error": { "code": "MISSING_PUBLIC_API_ACCESS", "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 (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
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." }}