> ## Documentation Index
> Fetch the complete documentation index at: https://noorle.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Browser

> Convert web pages to screenshots and structured data.

Browser is a **stateless** rendering service. Each request is independent — render a web page to screenshots, structured HTML, or extract data, with no session persistence between calls.

<Tip>
  **Browser vs Computer:** Browser is stateless — each call renders a fresh page with no memory of previous requests. If you need persistent browser sessions (logged-in state, multi-step navigation, cookies preserved across calls), use the [Computer](/docs/run/capabilities/computer) capability with its browser subsystem enabled.
</Tip>

## Key Features

* **Screenshot Rendering** - Capture web page screenshots
* **Structured Data** - Extract HTML and page text
* **JavaScript Support** - Pages with dynamic content fully rendered
* **Custom Viewport** - Control screen resolution
* **Element Interaction** - Click, scroll, form fill (advanced)
* **Network Isolation** - Secure rendering environment

## How to Enable

### For Agents

1. **Agents** > Select Agent > **Settings** > **Capabilities**
2. Attach **Browser**

### For MCP Gateways

1. **Gateways** > Select Gateway > **Capabilities**
2. Attach **Browser**

## Usage Examples

### Capture Screenshot

```
Render https://example.com to a screenshot
```

Returns:

* PNG image of rendered page
* Page title and URL
* Viewport dimensions

### Extract Page Content

```
Get the text content from https://news.example.com/article
```

Returns:

* Full page text (markdown formatted)
* Headings and structure
* Links and metadata

### Capture Dynamic Page

```
Screenshot the dashboard at https://app.example.com/dashboard
```

JavaScript executes, page fully renders before capture.

## Rendering Options

### Screenshot

Captures visual rendering of the page:

```json theme={null}
{
  "url": "https://example.com",
  "action": "screenshot",
  "viewport": {
    "width": 1280,
    "height": 720
  }
}
```

### HTML Extraction

Gets raw HTML:

```json theme={null}
{
  "url": "https://example.com",
  "action": "html"
}
```

### Text Extraction

Gets readable text:

```json theme={null}
{
  "url": "https://example.com",
  "action": "text"
}
```

## Configuration

Optional gateway specifications:

```json theme={null}
{
  "browser": {
    "timeout_seconds": 30,
    "viewport_width": 1280,
    "viewport_height": 720,
    "javascript_enabled": true,
    "timeout_wait_until": "networkidle"
  }
}
```

| Setting              | Default       | Effect          |
| -------------------- | ------------- | --------------- |
| `timeout_seconds`    | 30            | Max render time |
| `viewport_width`     | 1280          | Pixel width     |
| `viewport_height`    | 720           | Pixel height    |
| `javascript_enabled` | true          | Execute JS      |
| `timeout_wait_until` | "networkidle" | When to capture |

## Advanced Features

### Wait Conditions

Control when rendering completes:

* **load** - DOM loaded
* **domcontentloaded** - Initial HTML parsed
* **networkidle** - Network quiet (default)

### Custom Headers

Set request headers:

```json theme={null}
{
  "headers": {
    "User-Agent": "Custom Agent",
    "Authorization": "Bearer token"
  }
}
```

### Cookies

Include cookies in request:

```json theme={null}
{
  "cookies": [
    {
      "name": "session",
      "value": "abc123"
    }
  ]
}
```

## Common Use Cases

### Price Monitoring

```
Screenshot product pages to track price changes
```

1. Render competitor pages
2. Extract prices
3. Compare with your prices

### Content Scraping

```
Extract article text from news sites
```

1. Get page text
2. Parse structure
3. Extract key information

### Visual Testing

```
Screenshot app at different breakpoints
```

1. Render at desktop size
2. Render at mobile size
3. Compare visuals

### Data Extraction

```
Get structured data from tables and lists
```

1. Get HTML
2. Parse with Code Runner
3. Extract data

## Resource Limits

| Limit            | Value      | Notes                         |
| ---------------- | ---------- | ----------------------------- |
| Timeout          | 30 seconds | Configurable per request      |
| Default Viewport | 1280 × 720 | Configurable                  |
| JavaScript       | Enabled    | Fully renders dynamic content |

## Cost

For current pricing details, see [Pricing](https://noorle.com/pricing/).

Monitor in **Account** > **Usage** dashboard.

## Browser vs Computer Browser

| Feature          | Browser (this page)                  | Computer Browser Subsystem                   |
| ---------------- | ------------------------------------ | -------------------------------------------- |
| **State**        | Stateless — each call is independent | Stateful — session persists across calls     |
| **Sessions**     | No cookies/login between requests    | Cookies, login state, tabs preserved         |
| **Multi-step**   | Single-page operations only          | Navigate across pages, fill multi-step forms |
| **Availability** | Agents and MCP gateways              | Agents only                                  |
| **Setup**        | Attach Browser capability            | Attach Computer + enable `browser_enabled`   |
| **Use case**     | Screenshot, scrape, extract data     | Automate web apps, logged-in workflows       |

**Choose Browser when:** You need quick, one-shot page rendering — screenshots, content extraction, or data scraping where each request is self-contained.

**Choose Computer browser when:** You need persistent sessions, login state, multi-page navigation, or complex web application automation.

## Limitations

* Stateless: no session persistence between requests
* Cannot maintain logged-in state (use Computer for that)
* Cannot interact with complex multi-step JS applications
* Some sites may block automated rendering
* Timeouts on very slow pages

## Best Practices

### Use Screenshots for Visual Content

Screenshots best for:

* Product pages
* Design verification
* Visual inspection
* Chart/graph capture

### Use Text for Content Extraction

Text/HTML better for:

* Article content
* Structured data
* Link extraction
* SEO information

### Set Appropriate Timeouts

```json theme={null}
{
  "timeout_seconds": 30,
  "timeout_wait_until": "networkidle"
}
```

### Handle Errors Gracefully

Some pages may fail to render. Implement retry logic.

## Troubleshooting

### Screenshot is blank

* Page loading failed
* Wrong viewport size
* Page requires authentication
* Try increasing timeout

### Timeout error

* Page too slow
* Waiting for external resources
* Reduce timeout or increase wait condition
* Simplify the URL

### Access denied

* Site blocking automated access
* Use different User-Agent header
* Try at different time

### Content missing

* Content loaded via JavaScript asynchronously
* Increase timeout
* Use "load" wait condition instead of "networkidle"

## Privacy & Security

* Rendering is isolated per request
* No cookies stored between requests
* Headers/auth not retained
* Rendered pages not logged
* Results deleted after delivery

## Next Steps

* [Computer Capability](/docs/run/capabilities/computer) — Stateful browser with persistent sessions
* [Web Search - Find Content](/docs/run/capabilities/web-search)
* [HTTP Client - API Access](/docs/run/capabilities/http-client)
* [Code Runner - Process Data](/docs/run/capabilities/code-runner)
