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

# Proxies

> Route API V4 agent runs through residential or custom proxies.

A US residential proxy is enabled by default. The browser's traffic passes
through that residential IP before reaching the website, so the website sees
the proxy's location—not your server's.

<img src="https://mintcdn.com/browseruse-0aece648/BCDzEtKfFmujvTtJ/cloud/images/browser-proxy-light.svg?fit=max&auto=format&n=BCDzEtKfFmujvTtJ&q=85&s=92b855dc367b84e73c96e2a2459588e4" alt="A cloud browser routing its traffic through a residential proxy before reaching a website" noZoom className="block dark:hidden" width="1200" height="400" data-path="cloud/images/browser-proxy-light.svg" />

<img src="https://mintcdn.com/browseruse-0aece648/BCDzEtKfFmujvTtJ/cloud/images/browser-proxy-dark.svg?fit=max&auto=format&n=BCDzEtKfFmujvTtJ&q=85&s=1539dafacffbb4ac54cf51bc83d1e114" alt="A cloud browser routing its traffic through a residential proxy before reaching a website" noZoom className="hidden dark:block" width="1200" height="400" data-path="cloud/images/browser-proxy-dark.svg" />

Set `browser_settings` / `browserSettings` when you create a V4 run to choose
another country:

<Note>
  The current TypeScript SDK type requires `proxyCountryCode` whenever
  `browserSettings` is present. Use `"us"` to keep the default, or `null` to
  disable the managed proxy.
</Note>

<CodeGroup>
  ```python Python theme={null}
  from browser_use_sdk.v4 import BrowserUse

  client = BrowserUse()
  run = client.runs.create(
      "Get the iPhone 16 price on amazon.de",
      browser_settings={"proxyCountryCode": "de"},
  )
  ```

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

  const client = new BrowserUse();
  const run = await client.runs.create({
    task: "Get the iPhone 16 price on amazon.de",
    model: "grok-4.5",
    browserSettings: { proxyCountryCode: "de" },
  });
  ```

  ```bash curl theme={null}
  curl https://api.browser-use.com/api/v4/runs \
    -H "X-Browser-Use-API-Key: $BROWSER_USE_API_KEY" \
    -H "Content-Type: application/json" \
    -d '{"task":"Get the iPhone 16 price on amazon.de",
         "browserSettings":{"proxyCountryCode":"de"}}'
  ```
</CodeGroup>

## Disable proxies

Pass `null` for QA or internal sites that do not need a residential proxy:

<CodeGroup>
  ```python Python theme={null}
  run = client.runs.create(
      "Test my staging site",
      browser_settings={"proxyCountryCode": None},
  )
  ```

  ```typescript TypeScript theme={null}
  const run = await client.runs.create({
    task: "Test my staging site",
    model: "grok-4.5",
    browserSettings: { proxyCountryCode: null },
  });
  ```
</CodeGroup>

## Custom proxy

Custom HTTP and SOCKS5 proxies are available on paid plans:

<CodeGroup>
  ```python Python theme={null}
  run = client.runs.create(
      "Check the account dashboard",
      browser_settings={
          "customProxy": {
              "host": "proxy.example.com",
              "port": 8080,
              "username": "user",
              "password": "pass",
              "ignoreCertErrors": False,
          }
      },
  )
  ```

  ```typescript TypeScript theme={null}
  const run = await client.runs.create({
    task: "Check the account dashboard",
    model: "grok-4.5",
    browserSettings: {
      proxyCountryCode: "us",
      customProxy: {
        host: "proxy.example.com",
        port: 8080,
        username: "user",
        password: "pass",
        ignoreCertErrors: false,
      },
    },
  });
  ```
</CodeGroup>

A custom proxy overrides `proxyCountryCode` and must be passed again when a
follow-up provisions a new browser. See the [Create run
reference](/cloud/api-v4/runs/create-run) for the complete settings object.
