---
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