Understanding Google Search Light Results

Web Data

Response envelope

Every successful Light response uses the same shape:

FieldTypeDescription
job_idstring (uuid)Unique id for this request
querystringQuery that was submitted
pages_requestedintegerPages asked for (pages; 1 if omitted)
pages_returnedintegerPages returned and billed
pages_stoppedstring | nullWhy fewer pages returned; null if all returned
pagesarrayResult pages, page 1 first

Each page

FieldTypeWhenDescription
pageintegeralwaysResult page number
attemptsintegeralwaysUpstream attempts for this page
resultsarray | nulljson / bothOrganic results in order
suggestionsstring[] | nulljson / bothQuery suggestions
spelling_correctionstring | nulljson / bothSpelling correction if any
ai_overviewobject | nulljson / both when requestedParsed AI Overview (page 1)
htmlstring | nullhtml / bothPage HTML as Google sent it

Organic result fields

FieldTypeDescription
positioninteger1-based rank on the page
titlestringResult title
urlstringTarget URL
snippetstringPreview text
thumbnailstring | nullThumbnail URL if available
displayed_urlstring | nullDisplay URL
source_hoststring | nullHostname

AI Overview

When ai_overview is true and Google provides an overview on page 1:

FieldTypeDescription
textstringOverview text
sourcesarrayCited sources (may include Google redirect URLs)
viapage | asyncFrom the results page, or loaded after the page

When Google loads the overview after the page, we fetch it too, which can add a few seconds.

HTML-only format does not include a parsed ai_overview object. Overview content may still appear inside html (container marked data-aio-written).

Partial multi-page

If you ask for 3 pages and only 2 return:

  • pages_requested: 3
  • pages_returned: 2 (billed)
  • pages_stopped: e.g. no_results
  • pages: two page objects

Stop reasons: no_results, blocked, upstream_unreachable, timeout, warming_up, clock, error.

Was this page helpful?

On this page