---
title: Web Search
description: Run a web search and return the results as structured data
---

Search the web from a workflow and get the first page of results as a list of titles, links and snippets.

## What it does

Web Search runs your **Query** on the chosen **Engine** (DuckDuckGo by default, Bing or Brave). It opens the results page in a background tab, so it does not take over your screen, reads the results, then closes the tab.

It returns one item per result, with `title`, `url` and `snippet`. Only the first page of results is read. **Max Results** keeps the first N; leave it empty or `0` to keep them all. Rows without a title or link are skipped, and DuckDuckGo's redirect links are turned back into the real addresses.

No API key is needed: the search runs in your own browser, like a search you would type yourself.

## When to use it

* Collect sources on a topic for an AI node to read and summarize.
* Watch for new mentions of a name or product on a schedule.
* Find the official page of something, then open it with [Tab Control](/nodes/extension/tabcontrol/).
* To let an AI agent decide when to search, connect the [Web Search tool](/nodes/builtin/ai/aidependencies/tools/web-search/) to it instead.

## Inputs and settings

**Query** accepts expressions, for example `{{ $input.company }} pricing`. The usual search operators of the engine (quotes, `site:`) work as you would type them.

## Outputs

Each run returns a list of items with these fields:

```json title="Shape of an output item"
[
  {
    "title": "…",
    "url": "…",
    "snippet": "…"
  }
]
```

For example:

```json
[
  { "title": "Example result", "url": "https://example.com", "snippet": "A short description of the result." }
]
```

Each result is its own item, so the next node runs once per result. Use [Aggregate](/nodes/builtin/datatransformation/aggregate/) to give all of them to an AI node at once.

## Dependencies and credentials

None. This node needs no connection and has no slots for other nodes.

## Example workflow

1. A [Schedule](/nodes/builtin/trigger/schedule/) trigger runs every Monday morning.
2. **Web Search** with **Query** = `"your product name" review`, **Engine** = DuckDuckGo and **Max Results** = `10`.
3. [Remove Duplicates](/nodes/builtin/datatransformation/removeduplicates/) with **Also Compare Against Previous Runs** on, so only new links continue.
4. [Aggregate](/nodes/builtin/datatransformation/aggregate/), then [Slack](/nodes/builtin/integration/slack/), **Message → Send**, posts the new results to `#mentions`.

## Common issues

* **The output is empty.** The engine showed no results, asked to confirm you are human, or changed its page layout. Open the same search in a tab to check, then try another **Engine**. DuckDuckGo is the most stable; Brave is the most likely to change.
* **Fewer results than expected.** Only the first page is read, and rows without a title or link are skipped.
* **Why is Google not offered?** Google blocks automated searches, so it is left out on purpose.
* **The node fails outside the extension.** This node runs in the browser extension; install it or run the workflow from the extension.

## Related nodes

* [Web Search tool](/nodes/builtin/ai/aidependencies/tools/web-search/): the same idea, as a tool an AI agent can call.
* [Get All Text from Link](/nodes/builtin/core/getalltextfromlink/): read each result page.
* [Remove Duplicates](/nodes/builtin/datatransformation/removeduplicates/): keep only results you have not seen.