Skip to main content
Web Search supports seven source types. Each returns a different result shape — always specify sources explicitly when you need predictable parsing.

Source capabilities

Current platform behavior — not guaranteed by the OpenAPI contract. Parameter applicability varies by source. This table reflects observed behavior.
SourceBest use caseFetchable url?site effective?Date filters effective?
webGeneral web searchYesYesYes
newsNews articlesYesYesYes
scholar-articlesAcademic papersYesNoYes
scholar-articles-enrichedPapers + author profilesYesNoYes
scholar-authorResearcher profilesNoNoNo
aiAI-generated summariesNoNoNo
socialSocial media mentionsYesNoNo

Result shapes by source

The results[] array shape depends on the source field of each result. Use this reference when parsing multi-source responses.
Standard web and news results share the same shape.
FieldTypeDescription
sourcestring"web" or "news".
titlestringPage title.
urlstringPage URL.
snippetstringText excerpt.
positionintegerResult position (1-based).
{
    "source": "web",
    "title": "Crustdata: Real-Time B2B Data Broker via API or Data Feed",
    "url": "https://crustdata.com/",
    "snippet": "Crustdata is a B2B data provider offering real-time company & people datasets.",
    "position": 1
}

Result ordering and ranking

Current platform behavior: When querying a single source, position reflects the source’s natural ranking order. When querying multiple sources, results from different sources are interleaved and position may reflect a per-source rank rather than a global rank. metadata.totalResults is the total count across all requested sources and pages.

Parsing multi-source responses

When you query multiple sources at once (or omit sources), the results[] array can contain items with different shapes. Always check the source field of each result to determine which fields are available:
for (const result of response.results) {
    switch (result.source) {
        case "web":
        case "news":
        case "social":
            // Standard: title, url, snippet, position
            console.log(result.title, result.url);
            break;
        case "scholar-articles":
        case "scholar-articles-enriched":
            // Academic: standard fields + authors, citations, pdf_url, metadata
            console.log(result.title, result.citations, result.authors);
            break;
        case "scholar-author":
            // Author profile: name, affiliation, h_index, articles[]
            console.log(result.name, result.affiliation, result.h_index);
            break;
        case "ai":
            // AI overview: content, references[]
            console.log(result.content, result.references);
            break;
    }
}

Field presence by source

Use this reference to determine which fields are present for each source type.
Naming note: The API uses metadata in two different contexts. The response-level metadata is an object with totalResults, failedPages, and emptyPages. The per-result metadata field (scholar-articles only) is a citation string like "Author - Year - Publisher". Always use the full path (response.metadata vs result.metadata) to avoid confusion.
Standard fields — present in web, news, social, and scholar-articles / scholar-articles-enriched:
FieldSources with this fieldNotes
sourceAll sourcesAlways present
titleweb, news, social, scholar-articles*, aiAI: always "AI Overview"
urlweb, news, social, scholar-articles*, scholar-authorAcademic author: profile link
snippetweb, news, social, scholar-articles*Absent in ai, scholar-author
positionweb, news, social, scholar-articles*Absent in ai, scholar-author
Academic article fieldsscholar-articles and scholar-articles-enriched only:
FieldTypeNotes
metadatastringCitation string: "Author - Year - Publisher"
pdf_urlstring?Direct PDF download link — handle outside Web Fetch
authorsarray[{ name, profile_url, profile_id }]
citationsintegerTotal citation count
Academic author fieldsscholar-author only:
FieldTypeNotes
namestringAuthor full name
affiliationstringInstitutional affiliation
websitestring?Personal or institutional website
interestsarray[{ title, link }]
thumbnailstring?Profile photo URL
citationsobject{ all, since_2020 } — different type than scholar-articles
h_indexobject{ all, since_2020 }
i10_indexobject{ all, since_2020 }
articlesarray[{ title, url, year, citations, authors, publication }]
Deep research mode fieldsai only:
FieldTypeNotes
contentstringAI-generated overview text
referencesarray[{ title, url, snippet }] — fetch these URLs
imagesarray[{ url, alt, width, height }]

Next steps

  • Recipes — site/date filtering, multi-page, academic, deep research, social, and workflow examples.
  • Web Search — main Search page with quickstart, request/response, and errors.
  • Web Fetch — fetch the HTML content of URLs returned by search results.