https://github.com/browserbase/stagehand
An AI web browsing framework focused on simplicity and extensibility.
https://github.com/browserbase/stagehand
agents ai llms playwright puppeteer selenium
Last synced: 2 days ago
JSON representation
An AI web browsing framework focused on simplicity and extensibility.
- Host: GitHub
- URL: https://github.com/browserbase/stagehand
- Owner: browserbase
- License: mit
- Created: 2024-03-24T19:19:44.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-04-05T05:59:12.000Z (9 days ago)
- Last Synced: 2025-04-05T10:01:02.370Z (9 days ago)
- Topics: agents, ai, llms, playwright, puppeteer, selenium
- Language: TypeScript
- Homepage: https://stagehand.dev
- Size: 36.8 MB
- Stars: 9,356
- Watchers: 49
- Forks: 490
- Open Issues: 100
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
- my-awesome-list - stagehand
- awesome-rainmana - browserbase/stagehand - An AI web browsing framework focused on simplicity and extensibility. (TypeScript)
- AiTreasureBox - browserbase/stagehand - 04-07_9393_16](https://img.shields.io/github/stars/browserbase/stagehand.svg)|An AI web browsing framework focused on simplicity and extensibility.| (Repos)
- awesome-ccamel - browserbase/stagehand - An AI web browsing framework focused on simplicity and extensibility. (TypeScript)
- awesome-repositories - browserbase/stagehand - An AI web browsing framework focused on simplicity and extensibility. (TypeScript)
- awesome-github-repos - browserbase/stagehand - An AI web browsing framework focused on simplicity and extensibility. (TypeScript)
README
The production-ready framework for AI browser automations.
Read the Docs## 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, Stagehand is the natural choice for browser automations in production.
1. **Choose when to write code vs. natural language**: use AI when you want to navigate unfamiliar pages, and use code ([Playwright](https://playwright.dev/)) when you know exactly what you want to do.
2. **Preview and cache actions**: Stagehand lets you preview AI actions before running them, and also helps you easily cache repeatable actions to save time and tokens.
3. **Computer use models with one line of code**: Stagehand lets you integrate SOTA computer use models from OpenAI and Anthropic into the browser with one line of code.
## Example
Here's how to build a sample browser automation with Stagehand:
![]()
```typescript
// Use Playwright functions on the page object
const page = stagehand.page;
await page.goto("https://github.com/browserbase");// Use act() to execute individual actions
await page.act("click on the stagehand repo");// Use Computer Use agents for larger actions
const agent = stagehand.agent({
provider: "openai",
model: "computer-use-preview",
});
await agent.execute("Get to the latest PR");// Use extract() to read data from the page
const { author, title } = await page.extract({
instruction: "extract the author and title of the PR",
schema: 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](https://docs.stagehand.dev) to view the full documentation.
## Getting Started
Start with Stagehand with one line of code, or check out our [Quickstart Guide](https://docs.stagehand.dev/get_started/quickstart) for more information:
```bash
npx create-browser-app
```### Build and Run from Source
```bash
git clone https://github.com/browserbase/stagehand.git
cd stagehand
npm install
npx playwright install
npm run build
npm 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:
```bash
cp .env.example .env
nano .env # Edit the .env file to add API keys
```## Contributing
> [!NOTE]
> We highly value contributions to Stagehand! For questions or support, please join our [Slack community](https://stagehand.dev/slack).At a high level, we're focused on improving reliability, speed, and cost in that order of priority. If you're interested in contributing, we strongly recommend reaching out to [Anirudh Kamath](https://x.com/kamathematic) or [Paul Klein](https://x.com/pk_iv) in our [Slack community](https://stagehand.dev/slack) before starting to ensure that your contribution aligns with our goals.
For more information, please see our [Contributing Guide](https://docs.stagehand.dev/contributions/contributing).
## Acknowledgements
This project heavily relies on [Playwright](https://playwright.dev/) as a resilient backbone to automate the web. It also would not be possible without the awesome techniques and discoveries made by [tarsier](https://github.com/reworkd/tarsier), and [fuji-web](https://github.com/normal-computing/fuji-web).
We'd like to thank the following people for their major contributions to Stagehand:
- [Paul Klein](https://github.com/pkiv)
- [Anirudh Kamath](https://github.com/kamath)
- [Sean McGuire](https://github.com/seanmcguire12)
- [Miguel Gonzalez](https://github.com/miguelg719)
- [Sameel Arif](https://github.com/sameelarif)
- [Filip Michalsky](https://github.com/filip-michalsky)
- [Jeremy Press](https://x.com/jeremypress)
- [Navid Pour](https://github.com/navidpour)## License
Licensed under the MIT License.
Copyright 2025 Browserbase, Inc.