Per-keyword on-demand AI Overview analysis (source list + optional snippet).
const url = 'https://sitechecker.pro/api/v1/ai-visibility/google-ai-overview/analysis?project_id=12345&tracked_keyword_id=1&date=2026-04-15';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/analysis?project_id=12345&tracked_keyword_id=1&date=2026-04-15' \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”Example
12345Project ID.
Set to “snippet” to include the full AI Overview snippet text.
Responses
Section titled “Responses”AI Overview analysis
object
On-demand per-keyword AI Overview check (live upstream call, not stored). empty_reason is no_ai_overview when there is no AI Overview for the keyword+date, no_sources when there is an overview without a source list, otherwise null. snippet_text is present only with fields=snippet.
object
object
Only with fields=snippet. Full AI Overview snippet text.
Example
{ "data": { "tracked_keyword_id": 123456, "keyword": "ai overview checker", "search_engine": "google", "device": "desktop", "country": "US", "language": "en", "check_date": "2026-05-22", "has_ai_overview": true, "has_sources": true, "empty_reason": "no_ai_overview", "owner_citation_position": 2, "your_citations_count": 1, "sources_total": 8, "unique_sources_count": 7, "your_citation_share": 12.5, "brand_mention_count": 0, "sources": [ { "position": 1, "url": "https://example.com/page", "anchor": "Example page", "is_yours": false } ] }}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 or keyword 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." }}Google AI Overview data is not available for this project yet
object
object
Example
{ "error": { "code": "ai_overview_data_unavailable", "message": "Google AI Overview data is not available for this project yet. Try again after the next SERP sync." }}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." }}Upstream SERP data service error
object
object
Example
{ "error": { "code": "upstream_error", "message": "The upstream SERP data service is temporarily unavailable. Try again later." }}