---
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.
CodeAgent executes Python code on your local machine like Claude Code.
## 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
```
CodeAgent currently only works with [ChatBrowserUse](https://chat.browser-use.com) 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/dashboard/api).
## 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