# Steel Documentation > Steel is a cloud browser API for AI agents and developers. > Use Steel to launch cloud browsers, scrape content, and automate web tasks. ## Quick Reference - Install: `npm install steel-sdk` (Node.js) or `pip install steel-sdk` (Python) - CLI: `curl -sSf https://setup.steel.dev | sh` - Auth header: `steel-api-key: ` - Auth env var: `STEEL_API_KEY` - API base URL: `https://api.steel.dev` - WebSocket: `wss://connect.steel.dev?apiKey=&sessionId=` - API reference: https://steel.apidocumentation.com/api-reference ## Agent Instructions - For the simplest one-liner scrape, use the CLI: ```bash steel scrape https://example.com ``` - For simple scraping without a browser session, use the REST scrape endpoint: ``` curl -X POST https://api.steel.dev/v1/scrape \ -H "steel-api-key: YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"url": "https://example.com"}' ``` - For browser automation, connect Puppeteer or Playwright via WebSocket: ```js import Steel from 'steel-sdk'; import puppeteer from 'puppeteer-core'; const client = new Steel({ steelAPIKey: process.env.STEEL_API_KEY }); const session = await client.sessions.create(); const browser = await puppeteer.connect({ browserWSEndpoint: `wss://connect.steel.dev?apiKey=${process.env.STEEL_API_KEY}&sessionId=${session.id}`, }); // ... use browser ... await browser.close(); await client.sessions.release(session.id); ``` - Python SDK: ```python from steel import Steel client = Steel(steel_api_key="YOUR_KEY") # or set STEEL_API_KEY env var result = client.scrape(url="https://example.com") print(result.content.html) ``` - `client.scrape()` returns a `ScrapeResponse` with: - `result.content.html` — full HTML string - `result.content.markdown` — markdown version - `result.content.cleaned_html` — cleaned HTML - `result.content.readability` — readability text - `result.metadata.status_code` — HTTP status (int) - `result.metadata.title` — page title - `result.links` — list of extracted links - Always release sessions when done: `client.sessions.release(sessionId)` - Do NOT use `session.websocketUrl` directly — construct the WSS URL as shown above - The Node SDK constructor param is `steelAPIKey` (not `apiKey`) - The Python SDK constructor param is `steel_api_key` (not `api_key`) - Individual doc pages are available as markdown via content negotiation (send `Accept: text/markdown`) ## Pages - [Cookbook](https://docs.steel.dev/cookbook): Runnable recipes for using Steel with your favorite libraries and frameworks. - [Integrations](https://docs.steel.dev/integrations) #### Overview - [Sessions Api Overview](https://docs.steel.dev/overview/sessions-api/overview): The Sessions API lets you create and control cloud-based browser sessions through simple API calls. Each session is like a fresh incognito window, but running in our cloud and controlled through code. - [Profiles Api Overview](https://docs.steel.dev/overview/profiles-api/overview): Reuse browser context, auth, cookies, extensions, credentials, and browser settings across sessions. - [Files Api Overview](https://docs.steel.dev/overview/files-api/overview): How to upload, download, manage and work with files within an active session - [Extensions Api Overview](https://docs.steel.dev/overview/extensions-api/overview): Add Chrome extensions to your Steel sessions. - [Credentials API](https://docs.steel.dev/overview/credentials-api/overview): Programmatic access to storing credentials for users or agents. - [Captchas Api Overview](https://docs.steel.dev/overview/captchas-api/overview): Automatically detect and solve CAPTCHAs in browser sessions using Steel's integrated captcha solvers and the CAPTCHAs API. - [Authentication](https://docs.steel.dev/overview/authentication): Authenticate requests to the Steel API and Steel SDKs using an API key. - [Captcha Solving](https://docs.steel.dev/overview/stealth/captcha-solving): CAPTCHA solving is one of Steel's advanced capabilities that helps AI agents and automation tools navigate the modern web more effectively. This document explains how our CAPTCHA solving system works, what types of CAPTCHAs we support, and best practices for implementation. - [Clustering](https://docs.steel.dev/overview/self-hosting/clustering): Self-Hosting a Steel Browser Cluster - [Docker](https://docs.steel.dev/overview/self-hosting/docker): Self-Hosting Steel Browser Using Docker - [Embed Sessions](https://docs.steel.dev/overview/sessions-api/embed-sessions): Learn how to view and embed your live and past sessions. - [Extensions](https://docs.steel.dev/overview/self-hosting/extensions): Self-Hosting Steel Browser Using Extensions - [Implement Human-in-the-Loop Controls](https://docs.steel.dev/overview/sessions-api/human-in-the-loop): How to let users take control of Steel browser sessions - [Intro to Steel](https://docs.steel.dev/overview/intro-to-steel): Humans use Chrome, Agents use Steel. - [Legal](https://docs.steel.dev/overview/legal): This page outlines the legal terms and conditions for using Steel. - [Live Sessions](https://docs.steel.dev/overview/sessions-api/embed-sessions/live-sessions): How to embed and share live browser sessions in your applications - [llms-full.txt](https://docs.steel.dev/overview/llms-full.txt) - [Mobile Mode](https://docs.steel.dev/overview/sessions-api/mobile-mode): Create browser sessions that appear as mobile devices with full mobile fingerprints and touch capabilities. - [Multi-region](https://docs.steel.dev/overview/sessions-api/multi-region): Control where your Steel browser sessions are hosted for optimal performance and latency. - [Need Help?](https://docs.steel.dev/overview/need-help): Need help with Steel? Check out our documentation or reach out to use on Discord. - [Past Sessions](https://docs.steel.dev/overview/sessions-api/embed-sessions/past-sessions): How to access recordings of past browser sessions and display them within your app - [Pricing/Limits](https://docs.steel.dev/overview/pricinglimits): This page outlines the current pricing breakdown between free/paid plans on Steel. - [Profiles](https://docs.steel.dev/overview/self-hosting/profiles): Self-Hosting Steel Browser Using Profiles - [Proxies](https://docs.steel.dev/overview/stealth/proxies): Proxies make your browser sessions appear to originate from different locations and IP addresses. This is essential for accessing geo-restricted content, avoiding rate limits, and maintaining anonymity during web automation. - [Railway](https://docs.steel.dev/overview/self-hosting/railway): A quick guide on deploying Steel Browser to Railway using our template - [Render](https://docs.steel.dev/overview/self-hosting/render) - [Reusing Context & Auth](https://docs.steel.dev/overview/sessions-api/reusing-auth-context): How to Reuse Authentication Across Steel Sessions - [Session Lifecycle](https://docs.steel.dev/overview/sessions-api/session-lifecycle): Learn how to start and release browser sessions programmatically. - [Sessions Api Quickstart](https://docs.steel.dev/overview/sessions-api/quickstart): Get up a running with your first Steel Session in a few minutes. - [Steel CLI + Skill](https://docs.steel.dev/overview/steel-cli) - [Steel Local vs Steel Cloud](https://docs.steel.dev/overview/self-hosting/steel-local-vs-steel-cloud): What's the difference between local Steel and Steel Cloud? - [WebRTC](https://docs.steel.dev/overview/self-hosting/webrtc): Self-Hosting Steel Browser Using WebRTC #### Integrations - [AgentKit](https://docs.steel.dev/integrations/agentkit): Build multi-agent networks in TypeScript with routing, shared state, and MCP tools. - [Agno](https://docs.steel.dev/integrations/agno): Build Python agent teams with shared memory, reasoning, and RAG. - [Browser Use](https://docs.steel.dev/integrations/browser-use): Open-source Python agent that lets LLMs navigate, fill forms, and extract from the web. - [Claude Agent SDK](https://docs.steel.dev/integrations/claude-agent-sdk): Build browser agents on Anthropic's first-party agent loop with in-process MCP tools. - [Claude Code](https://docs.steel.dev/integrations/claude-code): Give Claude Code a real cloud browser to drive from the terminal. - [Claude Computer Use](https://docs.steel.dev/integrations/claude-computer-use): Wire Claude's computer-use tool into a Steel browser session. - [Codex](https://docs.steel.dev/integrations/codex): Give Codex a real cloud browser to drive from the terminal. - [CrewAI](https://docs.steel.dev/integrations/crewai): Orchestrate multi-agent Python crews with shared memory and human-in-the-loop reviews. - [Gemini Computer Use](https://docs.steel.dev/integrations/gemini-computer-use): Wire Gemini 3's computer-use tool into a Steel browser session. - [Hermes Agent](https://docs.steel.dev/integrations/hermes-agent): Pending integration that adds Steel as a browser provider inside Hermes. - [LangGraph](https://docs.steel.dev/integrations/langgraph): Build Python browser agents as explicit state machines with LangGraph nodes, edges, and structured output. - [Magnitude](https://docs.steel.dev/integrations/magnitude): Turn natural-language prompts into typed browser actions and structured outputs. - [Mastra](https://docs.steel.dev/integrations/mastra): Build typed TypeScript browser agents with Mastra's Model Router, registry, and Studio playground. - [Notte](https://docs.steel.dev/integrations/notte): Reliable Python web-agent framework focused on stable navigation and structured outputs. - [OpenAI Agents SDK](https://docs.steel.dev/integrations/openai-agents-sdk): Build typed browser agents with handoffs, guardrails, and tracing. - [OpenAI Computer Use](https://docs.steel.dev/integrations/openai-computer-use): Wire OpenAI's computer-use tool into a Steel browser session. - [OpenClaw](https://docs.steel.dev/integrations/openclaw): Give OpenClaw a real cloud browser for form-heavy workflows from the terminal. - [Pi Agent](https://docs.steel.dev/integrations/pi-agent): Drop-in extension that gives Pi a real cloud browser and structured extract. - [Playwright](https://docs.steel.dev/integrations/playwright): Drive a Steel cloud browser from Playwright over CDP in TypeScript or Python. - [Puppeteer](https://docs.steel.dev/integrations/puppeteer): Drive a Steel cloud browser from Puppeteer over CDP in TypeScript. - [Pydantic AI](https://docs.steel.dev/integrations/pydantic-ai): Build provider-agnostic, typed Python browser agents with dependency injection. - [Replit](https://docs.steel.dev/integrations/replit): Remix Steel browser-automation starter templates and run them in Replit's cloud. - [Selenium](https://docs.steel.dev/integrations/selenium): Drive a Steel cloud browser from Selenium over the W3C WebDriver protocol in Python. - [StackBlitz / Bolt.new](https://docs.steel.dev/integrations/stackblitz-bolt.new): Run Steel TypeScript starter templates in your browser, no install. Bolt.new ready. - [Stagehand](https://docs.steel.dev/integrations/stagehand): Write browser automations in natural language with act, extract, and observe. - [Vercel AI SDK](https://docs.steel.dev/integrations/ai-sdk): Build typed browser agents with streaming across any model provider, in TypeScript. - [x402](https://docs.steel.dev/integrations/x402): Pay-per-use Steel sessions with USDC on Base and Solana. No API key, no account. #### Cookbook - [Agents](https://docs.steel.dev/cookbook/topics/agents): Agent frameworks that run a perception-plan-act loop against a Steel browser session. - [Authentication](https://docs.steel.dev/cookbook/topics/authentication): Patterns for persisting and replaying authenticated sessions across Steel browsers. - [Automate a cloud browser with Playwright](https://docs.steel.dev/cookbook/playwright): Use Steel with Playwright in TypeScript for cloud browser automation. - [Automate a cloud browser with Puppeteer](https://docs.steel.dev/cookbook/puppeteer): Use Steel with Puppeteer in TypeScript for cloud browser automation. - [Automate a cloud browser with Selenium](https://docs.steel.dev/cookbook/selenium): Use Steel with Selenium in Python for cloud browser automation. - [Automate browsing with natural-language instructions using Stagehand](https://docs.steel.dev/cookbook/stagehand): Use Steel with Stagehand for natural-language-driven AI browser automation. - [Automate logins with the Credentials API](https://docs.steel.dev/cookbook/credentials): Use the Steel Credentials API with Playwright to automate flows with stored credentials. - [Browser automation](https://docs.steel.dev/cookbook/topics/browser-automation): Drive a cloud browser with familiar automation libraries: Playwright, Puppeteer, Selenium, Stagehand. - [Browser Use](https://docs.steel.dev/cookbook/topics/browser-use): Agent recipes built on the browser-use framework. - [Build a browser agent with Agno](https://docs.steel.dev/cookbook/agno): Integrate Steel with the Agno agent framework. - [Build a browser agent with Browser Use](https://docs.steel.dev/cookbook/browser-use): Integrate Steel with the browser-use framework for AI-driven web automation. - [Build a browser agent with Inngest AgentKit](https://docs.steel.dev/cookbook/agentkit): Integrate Steel with Inngest's AgentKit framework. - [Build a browser agent with the Claude Agent SDK](https://docs.steel.dev/cookbook/claude-agent-sdk): Use Steel with the Claude Agent SDK (TypeScript) to build a tool-using browser agent on Anthropic's first-party agent loop. - [Build a multi-agent browser workflow with CrewAI](https://docs.steel.dev/cookbook/crewai): Integrate Steel with the CrewAI multi-agent framework. - [Build a typed browser agent with LangGraph](https://docs.steel.dev/cookbook/langgraph): Use Steel with LangGraph to build a typed browser agent with an explicit state-machine loop and a structured-output formatter node. - [Build a typed browser agent with Mastra](https://docs.steel.dev/cookbook/mastra): Use Steel with Mastra to build a typed browser agent with the Mastra Model Router and Studio playground. - [Build a typed browser agent with Pydantic AI](https://docs.steel.dev/cookbook/pydantic-ai): Use Steel with Pydantic AI to build typed, provider-agnostic browser agents with dependency injection. - [Build a typed browser agent with the OpenAI Agents SDK](https://docs.steel.dev/cookbook/openai-agents): Use Steel with the OpenAI Agents SDK for TypeScript to build typed, tool-using browser agents. - [Build a typed browser agent with the Vercel AI SDK](https://docs.steel.dev/cookbook/vercel-ai-sdk): Use Steel with the Vercel AI SDK v6 ToolLoopAgent for typed, tool-using browser agents. - [Build an AI browser agent with Magnitude](https://docs.steel.dev/cookbook/magnitude): Use Steel with Magnitude for AI-powered browser automation. - [Captchas](https://docs.steel.dev/cookbook/topics/captchas): Recipes that handle CAPTCHA challenges using Steel's CAPTCHA API. - [Computer use](https://docs.steel.dev/cookbook/topics/computer-use): Model-native browser control where the LLM sees the screen and emits actions directly. - [Control a browser with Notte's reasoning engine](https://docs.steel.dev/cookbook/notte): Control browsers with AI using Steel's infrastructure and Notte's reasoning engine. - [Drive a browser with Claude Computer Use](https://docs.steel.dev/cookbook/claude-computer-use): Connect Claude to a Steel browser session for autonomous web interactions. - [Drive a browser with Gemini Computer Use](https://docs.steel.dev/cookbook/gemini-computer-use): Connect Google's Gemini Computer Use to a Steel browser session for autonomous web interactions. - [Drive a browser with OpenAI Computer Use](https://docs.steel.dev/cookbook/openai-computer-use): Connect OpenAI's Computer Use Assistant to a Steel browser session for autonomous web interactions. - [Drive a mobile browser with Claude Computer Use](https://docs.steel.dev/cookbook/claude-computer-use-mobile): Claude Computer Use with Steel for autonomous task execution in mobile browser environments. - [Mobile](https://docs.steel.dev/cookbook/topics/mobile): Recipes targeting Steel's mobile browser environment. - [Move files between your machine and a cloud browser](https://docs.steel.dev/cookbook/files): Use the Steel Files API with Playwright to automate file uploads and downloads in the cloud. - [Next.js](https://docs.steel.dev/cookbook/topics/nextjs): Recipes that integrate Steel into a Next.js application. - [Persist authenticated sessions with Profiles](https://docs.steel.dev/cookbook/profiles): Maintain authenticated sessions across Steel browser instances using profiles. - [Playwright](https://docs.steel.dev/cookbook/topics/playwright): Recipes that use Playwright to drive a Steel session, either as the automation library itself or as transport for Steel APIs. - [Reuse authenticated sessions across browsers](https://docs.steel.dev/cookbook/auth-context): Maintain authenticated sessions across Steel browser instances by capturing and reusing cookies and local storage. - [Solve CAPTCHAs automatically in a Browser Use agent](https://docs.steel.dev/cookbook/browser-use-captcha-auto): Build an AI agent with browser-use and Steel that solves CAPTCHAs automatically. - [Solve reCAPTCHA v2 manually with Browser Use](https://docs.steel.dev/cookbook/browser-use-captcha-manual): Manually solve reCAPTCHA v2 using Steel's CAPTCHA API with the browser-use framework. - [Steel APIs](https://docs.steel.dev/cookbook/topics/steel-apis): Recipes for Steel's first-party APIs: credentials, auth contexts, profiles, extensions, files. - [Stream a browser agent into a Next.js chat app](https://docs.steel.dev/cookbook/vercel-ai-sdk-nextjs): A Next.js App Router chat app where a Vercel AI SDK agent drives a Steel cloud browser with embedded Live View. - [Typed output](https://docs.steel.dev/cookbook/topics/typed-output): Agents that return structured, schema-validated results instead of free-form text. - [Upload and run browser extensions](https://docs.steel.dev/cookbook/extensions): Use the Steel Extensions API with Playwright to upload and run browser extensions. #### Changelog - [Changelog #000](https://docs.steel.dev/changelog/changelog-000) - [Changelog #001](https://docs.steel.dev/changelog/changelog-001) - [Changelog #002](https://docs.steel.dev/changelog/changelog-002) - [Changelog #003](https://docs.steel.dev/changelog/changelog-003) - [Changelog #004](https://docs.steel.dev/changelog/changelog-004) - [Changelog #005](https://docs.steel.dev/changelog/changelog-005) - [Changelog #006](https://docs.steel.dev/changelog/changelog-006) - [Changelog #007](https://docs.steel.dev/changelog/changelog-007) - [Changelog #008](https://docs.steel.dev/changelog/changelog-008) - [Changelog #009](https://docs.steel.dev/changelog/changelog-009) - [Changelog #010](https://docs.steel.dev/changelog/changelog-010) - [Changelog #011](https://docs.steel.dev/changelog/changelog-011) - [Changelog #012](https://docs.steel.dev/changelog/changelog-012) - [Changelog #013](https://docs.steel.dev/changelog/changelog-013) - [Changelog #014](https://docs.steel.dev/changelog/changelog-014) - [Changelog #015](https://docs.steel.dev/changelog/changelog-015) - [Changelog #016](https://docs.steel.dev/changelog/changelog-016) - [Changelog #017](https://docs.steel.dev/changelog/changelog-017) - [Changelog #018](https://docs.steel.dev/changelog/changelog-018) - [Changelog #019](https://docs.steel.dev/changelog/changelog-019) - [Changelog #020](https://docs.steel.dev/changelog/changelog-020) - [Changelog #021](https://docs.steel.dev/changelog/changelog-021) - [Changelog #022](https://docs.steel.dev/changelog/changelog-022)