BrowserWing
Browser automation platform with 78 built-in scripts, CLI for AI agents, and full browser control API. Turn any website into structured JSON with one command.
Install
npm install -g browserwing
Then start the server:
browserwing --port 8080
Chrome must be installed on the host machine.
Verify Installation
browserwing doctor
Quick Start — Run Built-in Scripts
BrowserWing ships with 78 ready-to-use scripts across 10 categories. No configuration needed.
# Get Hacker News top stories
browserwing run hackernews-top
# Get GitHub trending repos
browserwing run github-trending
# Get Bilibili hot videos
browserwing run bilibili-hot
# Search with parameters
browserwing run jd-search --keyword="mechanical keyboard"
# Output as table or CSV
browserwing run douban-movie-hot --format=table
browserwing run sinafinance-rank --format=csv > stocks.csv
Discover Scripts
# List all scripts
browserwing ls
# List only built-in scripts
browserwing ls --builtin
# Search by keyword
browserwing ls --search=stock
# Filter by category
browserwing ls --category=finance
# JSON output for programmatic use
browserwing ls --format=json
Built-in Script Categories
| Category |
Examples |
| Tech |
hackernews-top, github-trending, producthunt-hot, devto-top, stackoverflow-hot |
| Finance |
sinafinance-rank, eastmoney-hot, xueqiu-hot, binance-gainers, yahoo-finance-quote |
| News |
36kr-hot, toutiao-hot, bbc-news, bloomberg-rss, reuters-search |
| Social |
weibo-hot, zhihu-hot, xiaohongshu-hot, reddit-popular, twitter-trending |
| Entertainment |
bilibili-hot, douban-movie-hot, douyin-hot, imdb-trending, youtube-trending |
| Shopping |
jd-search, taobao-search, amazon-bestsellers, xianyu-hot, smzdm-hot |
| Academic |
arxiv-new, google-scholar-search, baidu-scholar-search, cnki-search |
| Jobs |
boss-recommend, linkedin-jobs |
| Reading |
douban-book-hot, weread-ranking, substack-feed, lesswrong-curated |
| Government |
gov-policy, gov-law |
Direct Browser Control
Control Chrome directly from the CLI — navigate, click, type, extract, screenshot, and more.
Workflow: Navigate → Snapshot → Interact → Extract
# 1. Navigate to a page
browserwing exec navigate https://example.com
# 2. Get page structure with element RefIDs
browserwing exec snapshot
# Output shows elements like:
# @e1 - Search (textbox)
# @e2 - Login (button)
# @e3 - Sign Up (link)
# 3. Interact using RefIDs
browserwing exec type @e1 "search query"
browserwing exec press-key Enter
browserwing exec click @e2
# 4. Extract data
browserwing exec extract ".result-item" --fields=text,href --multiple
# 5. Take screenshot
browserwing exec screenshot --output=page.png
# 6. Execute JavaScript
browserwing exec eval 'document.title'
All exec Actions
| Action |
Usage |
Description |
| navigate |
exec navigate <url> |
Open a URL |
| snapshot |
exec snapshot |
Get accessibility tree with @e refs |
| click |
exec click <@ref> |
Click element |
| type |
exec type <@ref> <text> |
Type into input |
| extract |
exec extract <selector> [--fields=text,href] [--multiple] |
Extract data |
| wait |
exec wait <@ref> [--state=visible] [--timeout=10] |
Wait for element |
| press-key |
exec press-key <Enter|Tab|Escape> |
Press key |
| screenshot |
exec screenshot [--output=file.png] |
Take screenshot |
| eval |
exec eval '<js>' |
Run JavaScript |
| fill-form |
exec fill-form --field=name:value [--submit] |
Fill form fields |
| tabs |
exec tabs <list|new|switch|close> |
Manage tabs |
| select |
exec select <@ref> <value> |
Select dropdown |
| hover |
exec hover <@ref> |
Hover element |
| scroll |
exec scroll |
Scroll to bottom |
| back/forward |
exec back, exec forward |
Navigation history |
| page-info |
exec page-info |
Get URL and title |
Admin Operations
Manage LLM configs, browser instances, cookies, scripts, and AI exploration — all from the CLI.
# LLM Configuration
browserwing config list
browserwing config add --name=gpt --provider=openai --api-key=sk-xxx --model=gpt-4o
browserwing config test gpt
# Browser Instances
browserwing browser list
browserwing browser start
browserwing browser stop
# Cookie Management
browserwing cookie list
browserwing cookie save
browserwing cookie import cookies.json
# Script Management
browserwing script get <id>
browserwing script create my-script.json
browserwing script delete <id>
browserwing script export --output=SKILL.md
browserwing script summary
# AI Exploration (auto-generate scripts)
browserwing explore start --url=https://example.com --task="find top products"
browserwing explore script <session-id>
browserwing explore save <session-id>
# System
browserwing health
browserwing doctor
browserwing mcp status
Output Formats
All commands support --format=json|table|csv:
browserwing run zhihu-hot --format=json # default, for piping
browserwing run zhihu-hot --format=table # human-readable
browserwing run zhihu-hot --format=csv # spreadsheet-friendly
Agent Integration Pattern
Typical AI agent workflow:
# Step 1: Discover available scripts
browserwing ls --format=json
# Step 2: Find relevant script
browserwing ls --search=stock --format=json
# Step 3: Execute and get structured data
browserwing run sinafinance-rank
# Step 4: Pipe to other tools
browserwing run hackernews-top | jq '.[0:5]'
For direct browser control:
# Step 1: Open page
browserwing exec navigate https://example.com
# Step 2: Understand page structure
browserwing exec snapshot
# Step 3: Interact
browserwing exec click @e3
browserwing exec type @e5 "query"
# Step 4: Extract results
browserwing exec extract ".item" --fields=text,href --multiple --format=json
CLI Exit Codes
| Code |
Meaning |
| 0 |
Success |
| 1 |
General error |
| 2 |
Cannot connect to server |
| 3 |
Script not found |
| 4 |
Script execution failed |
| 64 |
Bad arguments |
Environment Variables
| Variable |
Description |
BROWSERWING_URL |
Server URL (default: auto-detect from config.toml) |
BROWSERWING_JSON_ERRORS |
Set to 1 for JSON error output on stderr |
Links
1---2name: browserwing3description: Browser automation platform with 78 built-in scripts and full CLI. Turn any website into structured data with one command. Use when the user needs to scrape websites, extract data, automate browsers, run built-in scripts (Hacker News, GitHub trending, Bilibili, Zhihu, stock data, etc.), navigate pages, fill forms, take screenshots, or control Chrome programmatically. Triggers include "scrape", "extract data", "browser automation", "web data", "trending", "hot topics", "stock data", "run script", "open website", "fill form", "screenshot", "headless browser".4---56# BrowserWing78Browser automation platform with 78 built-in scripts, CLI for AI agents, and full browser control API. Turn any website into structured JSON with one command.910## Install1112```bash13npm install -g browserwing14```1516Then start the server:1718```bash19browserwing --port 808020```2122Chrome must be installed on the host machine.2324### Verify Installation2526```bash27browserwing doctor28```2930## Quick Start — Run Built-in Scripts3132BrowserWing ships with 78 ready-to-use scripts across 10 categories. No configuration needed.3334```bash35# Get Hacker News top stories36browserwing run hackernews-top3738# Get GitHub trending repos39browserwing run github-trending4041# Get Bilibili hot videos42browserwing run bilibili-hot4344# Search with parameters45browserwing run jd-search --keyword="mechanical keyboard"4647# Output as table or CSV48browserwing run douban-movie-hot --format=table49browserwing run sinafinance-rank --format=csv > stocks.csv50```5152### Discover Scripts5354```bash55# List all scripts56browserwing ls5758# List only built-in scripts59browserwing ls --builtin6061# Search by keyword62browserwing ls --search=stock6364# Filter by category65browserwing ls --category=finance6667# JSON output for programmatic use68browserwing ls --format=json69```7071### Built-in Script Categories7273| Category | Examples |74|----------|---------|75| Tech | hackernews-top, github-trending, producthunt-hot, devto-top, stackoverflow-hot |76| Finance | sinafinance-rank, eastmoney-hot, xueqiu-hot, binance-gainers, yahoo-finance-quote |77| News | 36kr-hot, toutiao-hot, bbc-news, bloomberg-rss, reuters-search |78| Social | weibo-hot, zhihu-hot, xiaohongshu-hot, reddit-popular, twitter-trending |79| Entertainment | bilibili-hot, douban-movie-hot, douyin-hot, imdb-trending, youtube-trending |80| Shopping | jd-search, taobao-search, amazon-bestsellers, xianyu-hot, smzdm-hot |81| Academic | arxiv-new, google-scholar-search, baidu-scholar-search, cnki-search |82| Jobs | boss-recommend, linkedin-jobs |83| Reading | douban-book-hot, weread-ranking, substack-feed, lesswrong-curated |84| Government | gov-policy, gov-law |8586## Direct Browser Control8788Control Chrome directly from the CLI — navigate, click, type, extract, screenshot, and more.8990### Workflow: Navigate → Snapshot → Interact → Extract9192```bash93# 1. Navigate to a page94browserwing exec navigate https://example.com9596# 2. Get page structure with element RefIDs97browserwing exec snapshot9899# Output shows elements like:100# @e1 - Search (textbox)101# @e2 - Login (button)102# @e3 - Sign Up (link)103104# 3. Interact using RefIDs105browserwing exec type @e1 "search query"106browserwing exec press-key Enter107browserwing exec click @e2108109# 4. Extract data110browserwing exec extract ".result-item" --fields=text,href --multiple111112# 5. Take screenshot113browserwing exec screenshot --output=page.png114115# 6. Execute JavaScript116browserwing exec eval 'document.title'117```118119### All exec Actions120121| Action | Usage | Description |122|--------|-------|-------------|123| navigate | `exec navigate <url>` | Open a URL |124| snapshot | `exec snapshot` | Get accessibility tree with @e refs |125| click | `exec click <@ref>` | Click element |126| type | `exec type <@ref> <text>` | Type into input |127| extract | `exec extract <selector> [--fields=text,href] [--multiple]` | Extract data |128| wait | `exec wait <@ref> [--state=visible] [--timeout=10]` | Wait for element |129| press-key | `exec press-key <Enter\|Tab\|Escape>` | Press key |130| screenshot | `exec screenshot [--output=file.png]` | Take screenshot |131| eval | `exec eval '<js>'` | Run JavaScript |132| fill-form | `exec fill-form --field=name:value [--submit]` | Fill form fields |133| tabs | `exec tabs <list\|new\|switch\|close>` | Manage tabs |134| select | `exec select <@ref> <value>` | Select dropdown |135| hover | `exec hover <@ref>` | Hover element |136| scroll | `exec scroll` | Scroll to bottom |137| back/forward | `exec back`, `exec forward` | Navigation history |138| page-info | `exec page-info` | Get URL and title |139140## Admin Operations141142Manage LLM configs, browser instances, cookies, scripts, and AI exploration — all from the CLI.143144```bash145# LLM Configuration146browserwing config list147browserwing config add --name=gpt --provider=openai --api-key=sk-xxx --model=gpt-4o148browserwing config test gpt149150# Browser Instances151browserwing browser list152browserwing browser start153browserwing browser stop154155# Cookie Management156browserwing cookie list157browserwing cookie save158browserwing cookie import cookies.json159160# Script Management161browserwing script get <id>162browserwing script create my-script.json163browserwing script delete <id>164browserwing script export --output=SKILL.md165browserwing script summary166167# AI Exploration (auto-generate scripts)168browserwing explore start --url=https://example.com --task="find top products"169browserwing explore script <session-id>170browserwing explore save <session-id>171172# System173browserwing health174browserwing doctor175browserwing mcp status176```177178## Output Formats179180All commands support `--format=json|table|csv`:181182```bash183browserwing run zhihu-hot --format=json # default, for piping184browserwing run zhihu-hot --format=table # human-readable185browserwing run zhihu-hot --format=csv # spreadsheet-friendly186```187188## Agent Integration Pattern189190Typical AI agent workflow:191192```bash193# Step 1: Discover available scripts194browserwing ls --format=json195196# Step 2: Find relevant script197browserwing ls --search=stock --format=json198199# Step 3: Execute and get structured data200browserwing run sinafinance-rank201202# Step 4: Pipe to other tools203browserwing run hackernews-top | jq '.[0:5]'204```205206For direct browser control:207208```bash209# Step 1: Open page210browserwing exec navigate https://example.com211212# Step 2: Understand page structure213browserwing exec snapshot214215# Step 3: Interact216browserwing exec click @e3217browserwing exec type @e5 "query"218219# Step 4: Extract results220browserwing exec extract ".item" --fields=text,href --multiple --format=json221```222223## CLI Exit Codes224225| Code | Meaning |226|------|---------|227| 0 | Success |228| 1 | General error |229| 2 | Cannot connect to server |230| 3 | Script not found |231| 4 | Script execution failed |232| 64 | Bad arguments |233234## Environment Variables235236| Variable | Description |237|----------|-------------|238| `BROWSERWING_URL` | Server URL (default: auto-detect from config.toml) |239| `BROWSERWING_JSON_ERRORS` | Set to `1` for JSON error output on stderr |240241## Links242243- GitHub: https://github.com/browserwing/browserwing244- npm: https://www.npmjs.com/package/browserwing245- Gitee: https://gitee.com/browserwing/browserwing