Skip to main content
Reference material for Web Search: request parameters, response body, error handling, common gotchas, and the API summary. For walk-through examples, see Web Search and Examples. For result shapes and field presence by source, see Sources.

Request parameter reference

ParameterTypeRequiredDefaultDescription
querystringYesSearch query text. Max 5,000 characters. Supports search operators like site: and filetype:.
locationstringNoISO 3166-1 alpha-2 country code for region-specific results (e.g., "US", "GB", "JP").
sourcesstring[]NoSources to query: web, news, scholar-articles, scholar-articles-enriched, scholar-author, ai, social. Current platform behavior: omitting this field searches all sources.
sitestringNoRestrict results to a domain (e.g., "linkedin.com/company", "github.com"). Max 500 characters.
start_dateintegerNoUnix timestamp (seconds). Only results after this date.
end_dateintegerNoUnix timestamp (seconds). Only results before this date. Must be > start_date.
human_modebooleanNofalseAttempt a browser-like retrieval path when standard search access is blocked by bot protection.
pageintegerNo1Number of result pages to aggregate into the response. Minimum: 1.

Response fields reference

FieldTypeDescription
successbooleanWhether the search executed successfully.
querystringThe query as interpreted by the API (includes site: prefix if site was set).
timestampintegerUnix timestamp in milliseconds when the search was performed.
resultsarraySearch results. Shape varies by source — see Sources.
metadata.total_resultsintegerTotal number of results available across all pages (may exceed the number in the results array if you requested fewer pages).
metadata.failed_pagesarrayPage numbers that failed to return results.
metadata.empty_pagesarrayPage numbers that returned no results.
Timestamps: Search timestamp is in milliseconds. Fetch timestamp is in seconds. Divide Search timestamps by 1000 when comparing across endpoints.

Error handling

Search returns 400 for invalid requests and 401 for auth failures.
{
    "error": {
        "type": "invalid_request",
        "message": "query: This field is required.",
        "metadata": []
    }
}

Common gotchas

MistakeFix
Omitting sources and expecting uniform resultsDifferent sources return different fields. Specify sources explicitly for predictable parsing.
Using site with scholar-author or ai sourcessite only applies to web and news sources. It has no effect on academic or deep research searches.
Expecting snippet in deep research mode resultsDeep research mode returns content and references instead of snippet and position.
Expecting position in scholar-author resultsAcademic author results don’t have position — they have name, affiliation, citations, etc.
Using start_date >= end_datestart_date must be strictly less than end_date.

API reference summary

DetailValue
EndpointPOST /web/search/live
AuthBearer token + x-api-version: 2025-11-01
Pricing1 credit per query
Requestquery (required). Optional: location, sources, site, start_date, end_date, human_mode, page.
ResponseObject: { success, query, timestamp, results[], metadata }
Errors400 (bad request), 401 (bad auth)
See the full API reference for the complete OpenAPI schema.

Sources

Web Search supports seven source types. Each returns a different result shape — always specify sources explicitly when you need predictable parsing.
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.total_results 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 total_results, failed_pages, and empty_pages. 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 }]