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

# BrowserAI FAQ

> Whether you're just getting started with BrowserAI or diving into advanced features, this FAQ covers everything from session handling and country targeting to performance tips, error codes, pricing, and more. Explore solutions, best practices, and helpful insights to make the most of your BrowserAI experience.

<AccordionGroup>
  <Accordion title="Can I navigate to multiple pages in one session?">
    **Nope!** BrowserAI is designed for **single-page navigation per session**.

    What this means:

    * You can **navigate within a page** (clicks, scrolling, interactions).
    * But **you can't load a second domain** within the same session.

    **Solution?** If you need to load multiple pages, spawn a new session for each URL.
  </Accordion>

  <Accordion title="How long can my session stay active?">
    * **Idle sessions** (no interaction) auto-close after 5 minutes.
    * **Max session duration:** 30 minutes. After that, your session will time out.
  </Accordion>

  <Accordion title="Can I force BrowserAI to use a specific country?">
    The **Change Location** feature lets you adjust your BrowserAI’s geographic location for accurate geo-targeted scraping and content testing. You can change the location by:

    1. Updating the `{"country":"XX"}` field in the **API Token** tab.
    2. Replacing `country-us` in the **Headless Browser** tab with your desired country code.

    <br />

    **Want all of Europe?**\
    Use `-country-eu` to dynamically select an EU-based IP.

    <Tip>
      **Heads-up:** For bot-heavy websites, manually selecting a country may actually decrease success rates. Let BrowserAI handle it automatically when possible!
    </Tip>
  </Accordion>

  <Accordion title="Which languages and automation tools does BrowserAI support?">
    BrowserAI is battle-tested for web automation and supports:

    * **Puppeteer (Node.js).**
    * **Playwright (Node.js, Python, C#).**
    * **Selenium (Java, Python, C#, Node.js, Go, Ruby).**

    **Supported environments:**

    | Language    | Puppeteer        | Playwright        | Selenium         |
    | :---------- | :--------------- | :---------------- | :--------------- |
    | **Node.js** | ✅ Native         | ✅ Native          | ✅ WebDriverJS    |
    | **Python**  | ❌                | ✅ Native          | ✅ WebDriver      |
    | **Java**    | ✅ Puppeteer-Java | ✅ Playwright-Java | ✅ Native         |
    | **C#**      | ✅ PuppeteerSharp | ✅ Playwright-.NET | ✅ WebDriver      |
    | **Go**      | ❌                | ✅ Playwright-Go   | ✅ WebDriver-Go   |
    | **Ruby**    | ✅ Puppeteer-Ruby | ✅ Playwright-Ruby | ✅ WebDriver-Ruby |
  </Accordion>

  <Accordion title="How can I take a screenshot of my session?">
    Need **visual proof** of what's happening in your session? Capture a **screenshot** at any time:

    <Tabs>
      <Tab title="Node.js">
        ```js Puppeteer theme={null}
        await page.screenshot({ path: 'screenshot.png', fullPage: true });
        ```
      </Tab>

      <Tab title="Python">
        ```python Playwright theme={null}
        await page.screenshot(path='screenshot.png', full_page=True)
        ```
      </Tab>
    </Tabs>
  </Accordion>

  <Accordion title="Why does my page take longer to load than expected?">
    Some websites have **complex anti-bot measures**, which require extra processing to **bypass protections**.

    **To ensure smooth navigation, increase the timeout threshold:**

    <CodeGroup>
      ```js Puppeteer theme={null}
      // Navigate to site with 2 min timeout  
      page.goto('<https://example.com>', { timeout: 2*60*1000 });  
      ```

      ```python Playwright theme={null}
      #  Navigate to site with 2 min timeout   
      page.goto('<https://example.com>', timeout=2*60*1000)  
      ```

      ```cs PuppeteerSharp theme={null}
      //  Navigate to site with 2 min timeout   
      await page.GoToAsync("https://example.com", new NavigationOptions()  
      {  
          Timeout = 2*60*1000,  
      });
      ```
    </CodeGroup>

    <Tip>
      Always set a higher timeout\*\*(2+ minutes)\*\*  for bot-protected websites.
    </Tip>
  </Accordion>

  <Accordion title="How do I verify my connection?">
    If you're getting **connection issues**, run the following **cURL test**:

    ```sh theme={null}
    curl -v -u USER:PASS https://brd.superproxy.io:9222/json/protocol
    ```

    If you get JSON in response: ✅ **You're successfully connected.**\
    If no JSON appears:
    ❌ **Check your credentials & network settings.**
  </Accordion>

  <Accordion title="What are the most common error codes?">
    | Error Code | Meaning                  | How to Fix                                   |
    | ---------- | ------------------------ | -------------------------------------------- |
    | **403**    | Authentication issue     | Check credentials & correct API zone.        |
    | **407**    | Proxy connection failure | Verify proxy settings & remote browser port. |
    | **503**    | Service unavailable      | Try again in 1-2 minutes.                    |
  </Accordion>

  <Accordion title="How does BrowserAI pricing work?">
    Simple: **You pay per GB of data transferred**.

    * No per-instance fees
    * No hourly costs
    * No extra charges for specific countries

    However, certain **Premium Domains** may have additional costs due to **extra unblocking measures**.
  </Accordion>
</AccordionGroup>
