---
title: "Basics"
description: "Write Python code locally with browser automation"
icon: "code"
---

CodeAgent writes and executes Python code locally with browser automation capabilities. It's designed for repetitive data extraction tasks where the agent can write reusable functions.

<Warning>
CodeAgent executes Python code on your local machine like Claude Code.
</Warning>

## Quick Start


```python
import asyncio
from browser_use import CodeAgent
from dotenv import load_dotenv

load_dotenv()

async def main():
    task = "Extract all products from example.com and save to products.csv"

    agent = CodeAgent(task=task)
    await agent.run()

asyncio.run(main())
```

```bash .env
BROWSER_USE_API_KEY=your-api-key
```

<Note>
CodeAgent currently only works with [ChatBrowserUse](/supported-models) which is optimized for this use case.
Don't have one? We give you $10 to try it out [here](https://cloud.browser-use.com/new-api-key).
</Note>

## When to Use

**Best for:**
- Data extraction at scale (100s-1000s of items)
- Repetitive interactions where functions can be reused
- Tasks requiring data processing and file operations
- Deterministic workflows you want to rerun

**Performance:**
- Best performance for data collection tasks
- Slightly slower for one-off interactions vs standard Agent

**Output:**
- Generates Python code that can be rerun deterministically
- Perfect for refining extraction logic


The agent will write code blocks in different languages. This combines the power of js for browser interaction and python for data processing:
```js extract_products
(function(){
  return Array.from(document.querySelectorAll('.product')).map(p => ({
    name: p.querySelector('.name').textContent,
    price: p.querySelector('.price').textContent
  }))
})()
```
```python
import pandas as pd

products = await evaluate(extract_products) # reuse other code blocks
df = pd.DataFrame(products)
df.to_csv('products.csv', index=False)
```

## Available Libraries

The agent can use common Python libraries:

- **Data processing:** `pandas`, `numpy`
- **Web:** `requests`, `BeautifulSoup`
- **File formats:** `csv`, `json`, `openpyxl` (Excel)
- **Visualization:** `matplotlib`
- **Utilities:** `tabulate`, `datetime`, `re`
- and all which you install ...


## Available Tools

The agent has access to browser control functions:

- `navigate(url)` - Navigate to a URL
- `click(index)` - Click an element by index
- `input(index, text)` - Type text into an input
- `scroll(down, pages)` - Scroll the page
- `upload_file(path)` - Upload a file
- `evaluate(code, variables={})` - Execute JavaScript and return results
- `done(text, success, files_to_display=[])` - Mark task complete

## Exporting Sessions

CodeAgent automatically saves all executed code and JavaScript blocks during your session. You can export your complete automation workflow for sharing, version control, or re-running later.

### Quick Export

```python
from browser_use.code_use.notebook_export import export_to_ipynb, session_to_python_script

# After running your agent
await agent.run()

# Export to Jupyter notebook
notebook_path = export_to_ipynb(agent, "my_automation.ipynb")

# Export to Python script
script = session_to_python_script(agent)
with open("my_automation.py", "w") as f:
    f.write(script)
```

### Export Formats

- **Jupyter Notebook (.ipynb)**: Interactive development, sharing, documentation
- **Python Script (.py)**: Production deployment, version control, automation

Both formats include:
- Setup code with browser initialization
- JavaScript code blocks as Python variables
- All executed Python cells with outputs
- Ready-to-run automation workflows
