> ## Documentation Index
> Fetch the complete documentation index at: https://browseruse-0aece648-pricing-docs-rework.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Install the SDK, set your API key, and run your first AI browser automation task with Python or TypeScript.

<Note>
  **Try the [BU Agent API (v3)](/cloud/new-features/api-v3)** — more accurate agents, long-running tasks, file uploads, and persistent workspaces. V3 is a superset of v2.
</Note>

**Every browser comes with:** anti-fingerprinting, automatic CAPTCHA solving, cookie/ad blocking, Cloudflare bypass, and residential proxies. No configuration needed.

## 1. Install & configure

<CodeGroup>
  ```bash Python theme={null}
  pip install browser-use-sdk
  ```

  ```bash TypeScript theme={null}
  npm install browser-use-sdk
  ```
</CodeGroup>

Get a key at [cloud.browser-use.com/settings](https://cloud.browser-use.com/settings?tab=api-keys), then:

```bash theme={null}
export BROWSER_USE_API_KEY=your_key
```

## 2. Run your first task

<CodeGroup>
  ```python Python theme={null}
  import asyncio
  from browser_use_sdk import AsyncBrowserUse

  async def main():
      client = AsyncBrowserUse()
      result = await client.run("What is the top post on Hacker News right now?")
      print(result.output)

  asyncio.run(main())
  ```

  ```typescript TypeScript theme={null}
  import { BrowserUse } from "browser-use-sdk";

  const client = new BrowserUse();
  const result = await client.run("What is the top post on Hacker News right now?");
  console.log(result.output);
  ```
</CodeGroup>

## 3. Get structured data

Define a schema and get validated, typed data back.

<CodeGroup>
  ```python Python theme={null}
  import asyncio
  from browser_use_sdk import AsyncBrowserUse
  from pydantic import BaseModel

  class Post(BaseModel):
      title: str
      url: str
      points: int

  class PostList(BaseModel):
      items: list[Post]

  async def main():
      client = AsyncBrowserUse()
      result = await client.run(
          "Get the top 3 posts from Hacker News",
          output_schema=PostList,
      )
      for post in result.output.items:
          print(f"{post.title} ({post.points} pts)")

  asyncio.run(main())
  ```

  ```typescript TypeScript theme={null}
  import { BrowserUse } from "browser-use-sdk";
  import { z } from "zod";

  const Post = z.object({
    title: z.string(),
    url: z.string(),
    points: z.number(),
  });

  const client = new BrowserUse();
  const result = await client.run("Get the top 3 posts from Hacker News", {
    schema: z.array(Post),
  });
  result.output.forEach((post) => console.log(`${post.title} (${post.points} pts)`));
  ```
</CodeGroup>

## 4. Watch it run

Every session has a `liveUrl` — a real-time view of the browser. Use it for debugging, embedding in your app, or handing control to a human mid-task.

<CodeGroup>
  ```python Python theme={null}
  client = AsyncBrowserUse()
  session = await client.sessions.create()
  print(session.live_url)  # open this or embed in an iframe

  result = await client.run(
      "Get the top 3 posts from Hacker News",
      session_id=session.id,
  )
  ```

  ```typescript TypeScript theme={null}
  const client = new BrowserUse();
  const session = await client.sessions.create();
  console.log(session.liveUrl); // open this or embed in an iframe

  const result = await client.run("Get the top 3 posts from Hacker News", {
    sessionId: session.id,
  });
  ```
</CodeGroup>

## 5. Add profiles, proxies, and 1Password

Use saved browser profiles for authenticated sites, residential proxies for geo-specific content, and 1Password for auto-filling credentials and 2FA codes.

<CodeGroup>
  ```python Python theme={null}
  client = AsyncBrowserUse()

  session = await client.sessions.create(
      profile_id="your-profile-id",       # saved cookies & localStorage
      proxy_country_code="us",             # residential proxy
  )

  result = await client.run(
      "Get my latest order status",
      session_id=session.id,
      op_vault_id="your-vault-id",         # 1Password auto-fill
      allowed_domains=["*.example.com"],    # restrict agent navigation
  )
  ```

  ```typescript TypeScript theme={null}
  const client = new BrowserUse();

  const session = await client.sessions.create({
    profileId: "your-profile-id",       // saved cookies & localStorage
    proxyCountryCode: "us",             // residential proxy
  });

  const result = await client.run("Get my latest order status", {
    sessionId: session.id,
    opVaultId: "your-vault-id",         // 1Password auto-fill
    allowedDomains: ["*.example.com"],  // restrict agent navigation
  });
  ```
</CodeGroup>

See [Tasks](/cloud/guides/tasks) for all parameters, or browse [Tips](/cloud/tips/data/structured-output) for copy-paste recipes.

<CardGroup cols={2}>
  <Card title="Coding Agent Quickstart" icon="brain" href="/cloud/coding-agent-quickstart">
    Paste one blob into your AI editor. Your agent knows the entire API.
  </Card>

  <Card title="Agent Tasks" icon="play" href="/cloud/guides/tasks">
    All parameters, structured output, streaming, and cost controls.
  </Card>
</CardGroup>
