Second-highest npm downloads in the category. TypeScript-first, Playwright-extending approach. Auto-caching reduces LLM costs over time.
Stagehand
activeAI-native browser automation SDK by Browserbase with natural language selectors and act/extract/observe primitives.
76/100
Trust
22K+
Stars
7
Evidence
78.0 MB
Repo size
Product screenshot

Videos
Reviews, tutorials, and comparisons from the community.
Tutorial de Testing E2E con IA
Stagehand V2: FULLY FREE Browser Use AI Agent! Automate ANYTHING! (Opensource)
Automate Your Browser with AI Using StageHand AI Agent
Repo health
13h ago
Last push
172
Open issues
1,424
Forks
38
Contributors
Editorial verdict
Best pick when the team wants TypeScript-native browser automation with the simplest possible API surface.
Source
GitHub: browserbase/stagehand
Docs: stagehand.dev
Public evidence
Front-page Show HN with overwhelmingly positive reception. Community praised hybrid AI + Playwright approach, though raised concerns about LLM cost per execution.
Independent hands-on review concluding Stagehand is a 'Playwright enhancement, not replacement.' Praises act/extract/observe primitives, but notes agent mode remains experimental with unpredictable results.
Independent landscape survey describes Stagehand v3 as '44% faster' with an 'AI-native rewrite' that talks directly to browsers via CDP. Positions it as the main OSS alternative to Playwright for AI agents.
Stagehand featured as a notable rising project with +17.1K stars gained in 2025 alone (from 2.8K to 19.9K total).
Cloudflare added native Stagehand support in their Browser Rendering Workers. Significant institutional validation — a major cloud provider integrating Stagehand directly.
Independent comparison measured Stagehand at ~75% task completion vs Browser Use ~78%. TypeScript-only (no Python). Auto-caching architecture genuinely differentiated: once AI action succeeds, selector cached and replayed without LLM calls.
How does this compare?
See side-by-side metrics against other skills in the same category.
Where it wins
TypeScript-native with clean act/extract/observe API
Natural language selectors reduce brittle CSS/XPath dependencies
Official Browserbase backing with cloud browser infrastructure
Where to be skeptical
Smaller community than Browser Use
Tied to Browserbase ecosystem for cloud execution
Newer — less battle-tested in production agent loops
Ranking in categories
Know a better alternative?
Submit evidence and we'll run the full pipeline.
Similar skills

Chrome DevTools MCP
86Google Chrome team's official MCP server for Chrome DevTools. Gives coding agents deep debugging, performance profiling, and Core Web Vitals analysis through 26 tools across 6 categories.

Playwright MCP
84Microsoft's official MCP server for Playwright. Uses accessibility snapshots instead of screenshots for structured browser control. Auto-configured in GitHub Copilot's Coding Agent.
Vercel Agent Browser
80Token-efficient browser automation CLI for AI agents. Rust core with sub-50ms boot. Claims 93% context reduction vs Playwright MCP through ref-based element selection on accessibility snapshots.
Skyvern
80Vision-LLM browser automation for enterprise workflows. Combines computer vision with LLM reasoning to handle websites never seen before. YC S23 backed with CAPTCHA solving, 2FA, and proxy networks.
Raw GitHub source
GitHub README peek
Constrained peek so you can sanity-check the source material without leaving the site.
What is Stagehand?
Stagehand is a browser automation framework used to control web browsers with natural language and code. By combining the power of AI with the precision of code, Stagehand makes web automation flexible, maintainable, and actually reliable.
Why Stagehand?
Most existing browser automation tools either require you to write low-level code in a framework like Selenium, Playwright, or Puppeteer, or use high-level agents that can be unpredictable in production. By letting developers choose what to write in code vs. natural language (and bridging the gap between the two) Stagehand is the natural choice for browser automations in production.
-
Choose when to write code vs. natural language: use AI when you want to navigate unfamiliar pages, and use code when you know exactly what you want to do.
-
Go from AI-driven to repeatable workflows: Stagehand lets you preview AI actions before running them, and also helps you easily cache repeatable actions to save time and tokens.
-
Write once, run forever: Stagehand's auto-caching combined with self-healing remembers previous actions, runs without LLM inference, and knows when to involve AI whenever the website changes and your automation breaks.
Getting Started
Start with Stagehand with one line of code, or check out our Quickstart Guide for more information:
npx create-browser-app
Example
Here's how to build a sample browser automation with Stagehand:
// Stagehand's CDP engine provides an optimized, low level interface to the browser built for automation
const page = stagehand.context.pages()[0];
await page.goto("https://github.com/browserbase");
// Use act() to execute individual actions
await stagehand.act("click on the stagehand repo");
// Use agent() for multi-step tasks
const agent = stagehand.agent();
await agent.execute("Get to the latest PR");
// Use extract() to get structured data from the page
const { author, title } = await stagehand.extract(
"extract the author and title of the PR",
z.object({
author: z.string().describe("The username of the PR author"),
title: z.string().describe("The title of the PR"),
}),
);
Documentation
Visit docs.stagehand.dev to view the full documentation.
Build and Run from Source
git clone https://github.com/browserbase/stagehand.git
cd stagehand
pnpm install
pnpm run build
pnpm run example # run the blank script at ./examples/example.ts
Stagehand is best when you have an API key for an LLM provider and Browserbase credentials. To add these to your project, run:
cp .env.example .env
nano .env # Edit the .env file to add API keys
Installing from a branch
You can install and build Stagehand directly from a github branch using gitpkg
In your project's package.json set:
"@browserbasehq/stagehand": "https://gitpkg.now.sh/browserbase/stagehand/packages/core?<branchName>",
Contributing
[!NOTE]