Skip to article

Serper

Organic search results plus provider-native SERP verticals and rich response fields.

On this page

Normalized search

Normalized search maps organic title, link, and snippet fields. It does not substitute answer boxes, knowledge graph data, local listings, or shopping results for organic web rows.

serper-search.ts · server
import { createSearch } from '@belweave/search-sdk';
import { serper } from '@belweave/search-sdk/serper';

const apiKey = process.env.SERPER_API_KEY;
if (!apiKey) throw new Error('SERPER_API_KEY is required');

const client = createSearch({ provider: serper({ apiKey }) });
const response = await client.web.search({
  query: 'SQLite write concurrency',
  limit: 5,
});
console.log(response.results, response.attempts);

Use native operations for result verticals and rich SERP fields. Public examples do not establish account quotas or independent speed and cost comparisons. Endpoint inventory and generated request types describe documented mappings, with live account behavior still unverified.

Domain filters unavailable on the normalized adapter.

Provider-native client

serper-native.ts · server
import { createSerperClient } from '@belweave/search-sdk/native-serper';

const apiKey = process.env.SERPER_API_KEY;
if (!apiKey) throw new Error('SERPER_API_KEY is required');

const client = createSerperClient({ apiKey, timeoutMs: 10_000 });
const response = await client.search({ body: { q: 'SQLite write concurrency', num: 5 } });
console.log(response.data, response.metadata);

Read provider data from response.data and sanitized transport details from response.metadata. Native TypeScript response types are not runtime schema validation. Preserve the operation's native response and source identities.

Native operation inventory

Methods available on this native client. Paths are relative to each operation's fixed base; a provider may use more than one origin. Eligible operations retry only when you opt into a client retry policy.

26 / 26
MethodHTTP / relative pathResponse / retry eligibility
searchPOST /searchjson · no automatic retry
searchGetGET /searchjson · eligible
imagesPOST /imagesjson · no automatic retry
imagesGetGET /imagesjson · eligible
videosPOST /videosjson · no automatic retry
videosGetGET /videosjson · eligible
placesPOST /placesjson · no automatic retry
placesGetGET /placesjson · eligible
mapsPOST /mapsjson · no automatic retry
mapsGetGET /mapsjson · eligible
reviewsPOST /reviewsjson · no automatic retry
reviewsGetGET /reviewsjson · eligible
newsPOST /newsjson · no automatic retry
newsGetGET /newsjson · eligible
shoppingPOST /shoppingjson · no automatic retry
shoppingGetGET /shoppingjson · eligible
scholarPOST /scholarjson · no automatic retry
scholarGetGET /scholarjson · eligible
patentsPOST /patentsjson · no automatic retry
patentsGetGET /patentsjson · eligible
autocompletePOST /autocompletejson · no automatic retry
autocompleteGetGET /autocompletejson · eligible
lensPOST /lensjson · no automatic retry
lensGetGET /lensjson · eligible
scrapePOST /json · no automatic retry
scrapeGetGET /json · eligible

Limits and operation lifecycle

  • Pass signal and per-call timeoutMs on native request input when needed.
  • Persist a returned job identifier before explicitly reading or polling the same job. Native clients do not automatically poll.
  • SSE data is incremental provider event text. Parse and validate terminal or error events according to the provider contract; there is no reconnect or replay.
  • Native operations may create, delete, ingest, or incur charges. A successful HTTP response is not proof that a remote job completed.

Official sources

Use the official reference for current schemas, account access, and operation-specific requirements.