Steel Browser
Steel is an open-source browser API that provides full control of Chrome instances via Puppeteer, Playwright, or Selenium, managing sessions, proxies, and resources. It solves the complexity of building browser automation infrastructure for AI agents and apps, allowing developers to focus on their application logic.
✨ Key features
- Full browser control via Puppeteer, Playwright, or Selenium
- Session management with state, cookies, and local storage
- Built-in proxy chain management for IP rotation
- Load custom Chrome extensions
- Anti-detection with stealth plugins and fingerprint management
- Quick actions for scraping, screenshots, and PDFs
🎯 Use cases
- Build AI agents that interact with live web pages
- Scrape clean HTML content from websites
- Take full-page screenshots or generate PDFs of web pages
- Automate complex, stateful browsing workflows with custom proxies
- Integrate with existing Selenium test suites
📦 Installation
🧰 Requirements: Requires Docker or Node.js with Chrome installed; no API keys needed for self-hosted, but Steel Cloud account optional.
Docker
The simplest way to deploy/run a Steel browser instance locally is to run the pre-built Docker image:
docker run -p 3000:3000 -p 9223:9223 ghcr.io/steel-dev/steel-browser
Alternatively, you can run the API and UI separately with docker compose:
docker compose up
For Mac Silicon users, you will need to pass this env flag to the Docker compose command to run the images on the correct platform:
DOCKER_DEFAULT_PLATFORM=linux/arm64 docker compose up
Node.js
Alternatively, if you have Node.js and Chrome installed, you can run both the server and the UI directly:
npm install
npm run dev
Make sure you have the Chrome executable installed and in one of these paths:
- Linux:
/usr/bin/google-chrome - MacOS:
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome - Windows:
C:\Program Files\Google\Chrome\Application\chrome.exeORC:\Program Files (x86)\Google\Chrome\Application\chrome.exe
🚀 Usage
Scrape a Web Page
Extract the HTML content of a web page.
curl -X POST http://0.0.0.0:3000/v1/scrape \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"delay": 1000
}'
Take a Screenshot
Take a screenshot of a web page.
curl -X POST http://0.0.0.0:3000/v1/screenshot \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"fullPage": true
}' --output screenshot.png
Download a PDF
Download a PDF of a web page.
curl -X POST http://0.0.0.0:3000/v1/pdf \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com"
}' --output output.pdf
⚠️ Good to know
Steel is in public beta and evolving every day; Selenium integration does not support all features of the CDP-based browser sessions API.
❓ FAQ
How can I run Steel locally?
You can run Steel locally using Docker with docker run -p 3000:3000 -p 9223:9223 ghcr.io/steel-dev/steel-browser, or with Node.js by running npm install and npm run dev.
What browsers can I connect with?
Steel uses Puppeteer and CDP, allowing you to connect using Puppeteer, Playwright, or Selenium.
Can I use custom proxies?
Yes, Steel has built-in proxy chain management for IP rotation, and you can specify a proxy URL when creating a session.
Is there a cloud version?
Yes, you can create a Steel Cloud account at app.steel.dev for the easiest way to get started.
📊 Repository
🤖 Overview, features, install steps and FAQ were generated from the project's README on Sep 4, 2026. Always check the original source before running commands.