Skip to main content
Search runs a query and returns the results as structured data: titles, links, descriptions and positions, plus fields specific to each source. Nothing is summarised or rewritten. It answers “which pages exist for this query?”; Scrape answers “what’s on this page?”. Add scrapeOptions to get both in one request.

Quick example

With "wait": true, a search that finishes within 20 seconds answers in the same request (shortened to two results):
Without wait, or when it takes longer, you get 202 with a jobId to poll at GET /search/{jobId}. The SDKs handle both.

Sources

Pick one or more in sources. Each runs on its own, so one empty source doesn’t affect the others. Real results from a search for vector database across three sources:
Not every field is on every result. Build for title, url and description, and treat the rest as extras. For developer, GitHub search qualifiers work in the query: memory leak is:issue repo:vercel/next.js. developerTypes picks what the developer source returns: any of "issues" (issues and pull requests, the default), "repositories" and "users", in the order you want them. Each type returns up to limit results into the same developer list, so ["repositories", "issues"] with a limit of 10 can return 20. Titles start with Repo:, User:, Issue: or PR: so you can tell them apart, and a repository’s description starts with its language and star count.

Options

Get each page’s content

Add scrapeOptions and the top results come back with their page as clean Markdown:
  • Only the first maxResults results get markdown; the second result above has none.
  • The search waits until every page is read, so expect tens of seconds. This one took 41.
  • A page that can’t be read is left without markdown; the rest are unaffected.
  • Results from popular sites also get structuredData.
  • For a prompt, a schema or a screenshot, scrape the URL instead.

More results

A finished search has nextPageTokens, one per source that has more. Send it back as pageTokens with the same query to get the next page:
Positions carry on from the last page. Each page is charged like a new search. Occasionally a result from one page reappears on the next, so de-duplicate by URL when you collect many pages.

Cost

1 credit per 10 results, per source, rounded up. A source with no results costs nothing. Page content adds 1 credit per page read.

In the dashboard

Open Search in the sidebar. Type a query, pick sources, a country, results per source, a time range, domains, PDF results only, and Scrape content from search results. Results are grouped by source in tabs, with a readable list, a JSON view, copy, download (images download as a ZIP), and Load more results for the next page. Scrape page on a result opens it in Scrape. Search results in tabs for Web, News, Images and Videos

Good to know

  • country and timeRange shape results; they don’t strictly filter them.
  • Related searches and quick answers (data.extras) appear on some web searches. Don’t rely on them.
  • A search with no results costs nothing, so trying a narrower query is free when it finds nothing.

Next

Scrape

Extract data from a result’s page.

Templates

Google rank tracking and news, ready-made.

Monitors

Get told when new results appear.

API reference

Every field and response.