Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 8 additions & 10 deletions content/docs/overview/browser-tools/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,11 @@ Browser Tools are stateless, single-call endpoints that spin up a managed browse
| `POST /v1/screenshot` | Loads a URL and returns a hosted PNG of the page. |
| `POST /v1/pdf` | Loads a URL and returns a hosted PDF of the page. |

Each call counts as 1 credit and is rate limited to 20 requests per minute per organization. Reach for [Sessions](/overview/sessions-api/overview) instead when you need cookies, multi-step navigation, or extension state.
Browser Tools cost $5 per 1,000 calls on Launch and Scale, with custom Enterprise pricing.
Steel-managed proxy bandwidth is billed separately at your plan's rate. Calls are rate
limited to 20 requests per minute per organization. See [Pricing/Limits](/overview/pricinglimits)
for rates and proxy access requirements. Reach for [Sessions](/overview/sessions-api/overview)
instead when you need cookies, multi-step navigation, or extension state.


### Scrape
Expand Down Expand Up @@ -177,7 +181,7 @@ All three endpoints accept the same handful of options for controlling how the p

| Option | Type | What it does |
| ---------- | --------- | ---------------------------------------------------------------------------------- |
| `useProxy` | `boolean` | Route the request through a Steel-managed residential proxy. Paid plans only. |
| `useProxy` | `boolean` | Route the request through a Steel-managed residential proxy. Requires proxy access. |
| `delay` | `number` | Milliseconds to wait after navigation before capturing. Useful for hydrated sites. |

A common pattern for client-rendered pages is to combine `delay` with a residential proxy:
Expand All @@ -203,18 +207,11 @@ result = client.scrape(
```
</CodeTabs>

:::callout
type: warn
### Hobby plans cannot use Steel proxies on Browser Tools
`useProxy: true` returns `402 Payment Required` on the hobby plan. Upgrade, or pass your own proxy by opening a [Session](/overview/sessions-api/overview) and scraping through it.
:::


### Errors

| Status | Meaning |
| ------ | ---------------------------------------------------------------- |
| 402 | `useProxy: true` requested on a plan that does not allow it. |
| 402 | `useProxy: true` requested before proxy access is enabled. |
| 408 | The browser timed out before completing the action. |
| 429 | Concurrent session limit for your plan reached, or 20 RPM hit. |
| 503 | No browser capacity available right now. Safe to retry. |
Expand All @@ -227,6 +224,7 @@ Browser Tools are stateless. Each call opens a fresh browser, performs the actio
- Persist cookies or local storage across navigations
- Submit forms, click through flows, or interact with the page
- Pin a proxy to a specific country (`useProxy: { geolocation: { country } }`)
- Route requests through your own proxy provider
- Reuse an authenticated profile or extension

You can still scrape, screenshot, or generate a PDF from inside a session. The Browser Tools endpoints are just the shortcut when you don't need the rest.
Expand Down
16 changes: 11 additions & 5 deletions content/docs/overview/pricinglimits.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,11 @@ description: "Steel pricing: start free with $30 in usage credits (about 300 bro
sidebarTitle: Pricing/Limits
llm: true
---
**Last Edit:** June 30th, 2026
**Last Edit:** October 23rd, 2026

### Pricing Table

| Tier | Price | Included usage |
| Tier | Monthly price | Included usage |
| ---------- | -------------- | ----------------------------------------- |
| Launch | $0 + usage | $30 free usage credits, one time |
| Scale | $250 + usage | $100 free usage credits / month |
Expand All @@ -33,7 +33,7 @@ llm: true
| Support | Dedicated Slack channel | - | Included | Included |
| Support | 911 email | - | - | Included |
| Support | Support & uptime SLAs | - | - | Included |
| Security | Enterprise SSO | - | Included | Included |
| Security | Enterprise SSO | - | - | Included |
| Security | HIPAA-ready BAA | - | Included | Included |

\* Browser hours are billed by the minute, rounded up.
Expand All @@ -58,9 +58,14 @@ type: warn
### Verify your Launch account with a $10 deposit
To use CAPTCHA solving or Steel-provided proxies on Launch, verify your account by adding
$10 in paid balance. Free credits do not count. The deposit goes toward usage, not an extra
fee. Scale includes anti-bot; Enterprise is custom.
fee. Scale includes access to managed proxies and CAPTCHA solving, billed at its usage
rates. Enterprise pricing and access are custom.
:::

Stealth Browser is Steel's custom Chromium fork. It is available on Enterprise at no
additional cost, with access enabled per workload. Enterprise SSO is also Enterprise-only;
Scale includes a HIPAA-ready BAA.

### Usage Examples

If you spent your included credits on a single usage category, you would get roughly:
Expand Down Expand Up @@ -131,7 +136,8 @@ Enterprise pricing.

Verify your Launch account by adding $10 in paid balance. This enables CAPTCHA solving and
Steel-provided proxies. Free credits do not count. The deposit goes toward usage, not an extra
fee. Scale includes anti-bot; Enterprise is custom.
fee. Scale includes access to managed proxies and CAPTCHA solving, billed at its usage
rates. Enterprise pricing and access are custom.

### How much do Browser Tools cost?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ llm: true

| Feature | Steel Local | Steel Cloud |
|------------------|-------------------------------------------|--------------------------------------------------------------|
| Concurrency | 1 | 100+ |
| Concurrency | 1 | 10 on Launch, 100 on Scale, 1,000+ on Enterprise |
| Stealth | Limited | Advanced Stealth (docs) |
| CAPTCHA Solving | None | Supported with the CAPTCHAs API |
| Proxies | Bring your own | Bring your own + Steel Managed Proxies |
Expand All @@ -18,6 +18,7 @@ llm: true


The defining factor between running Steel locally and using Steel Cloud is concurrency.
See [Pricing/Limits](/overview/pricinglimits) for Cloud plan availability and rates.

For the Extensions API, if you put the extensions you would like to build/load in the `api/src/extensions/` folder then Steel Local will build these and inject them into the session. Credentials are not supported in Steel Local.

Expand Down
5 changes: 3 additions & 2 deletions content/docs/overview/sessions-api/dedicated-ips.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,10 @@ Together:
## Lease Dedicated IPs

Dedicated IPs are leased from **Settings > Network** in the Steel dashboard. They are
available on paid plans; Hobby workspaces need to upgrade before leasing dedicated IPs.
available on Scale and Enterprise; Launch workspaces need to upgrade before leasing them.

Each dedicated IP is billed as a monthly subscription at **$5 per dedicated IP / month**.
On Scale, each dedicated IP is billed as a monthly subscription at **$5 per dedicated IP / month**.
Enterprise pricing is custom. See [Pricing/Limits](/overview/pricinglimits) for plan details.
You can lease up to 25 dedicated IPs self-serve from the Network page. If you need more,
contact support.

Expand Down
74 changes: 41 additions & 33 deletions content/docs/overview/sessions-api/quickstart.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ This guide will walk you through setting up your Steel account, creating your fi

1. Sign up for a free account at steel.dev

2. The free plan includes $30 in usage credits (about 300 browser hours) to get you started
2. Launch includes $30 in one-time free usage credits, valid for 90 days. See [Pricing/Limits](/overview/pricinglimits) for current rates and limits.

3. No credit card required

Expand All @@ -32,75 +32,83 @@ This guide will walk you through setting up your Steel account, creating your fi

2. Add your Steel API key:

```bash
STEEL_API_KEY=ste-your-api-key-here
```

Make sure to add `.env` to your `.gitignore` file to keep your key secure

### Installing Dependencies

Install the Steel SDK and Playwright:
Install the Steel SDK, Playwright, dotenv to load your `.env` file, and tsx to run TypeScript:

```package-install
steel-sdk playwright
steel-sdk playwright dotenv tsx
```

Using Python? `pip install steel-sdk playwright`, then `playwright install chromium`. The PyPI package is `steel-sdk`, but the import is `from steel import Steel`.


### Create Your First Session

Let's create a simple script that launches and then releases a Steel session:
Save the following as `steel-client.ts`. It creates a session, connects with Playwright, visits a page, and releases the session even if a browser operation fails:

```typescript Typescript -wcn -f steel-client.ts
import Steel from 'steel-sdk';
import dotenv from 'dotenv';
import { chromium } from 'playwright';
import 'dotenv/config';

dotenv.config();
async function main() {
const apiKey = process.env.STEEL_API_KEY;
if (!apiKey) {
throw new Error('Set STEEL_API_KEY in your .env file');
}

const client = new Steel({
steelAPIKey: process.env.STEEL_API_KEY,
});
const client = new Steel({
steelAPIKey: apiKey,
});

async function main() {
// Create a session
const session = await client.sessions.create();
console.log('Session created:', session.id);
console.log(`View live session at: ${session.sessionViewerUrl}`);

// Your session is now ready to use!
// When done, release the session
await client.sessions.release(session.id);
console.log('Session released');
try {
const browser = await chromium.connectOverCDP(
`wss://connect.steel.dev?apiKey=${encodeURIComponent(apiKey)}&sessionId=${session.id}`,
);
const page = await browser.contexts()[0].newPage();
await page.goto('https://example.com');
console.log('Page title:', await page.title());
} finally {
// Releasing the session closes its remote browser and connection.
await client.sessions.release(session.id);
console.log('Session released');
}
}

main().catch(console.error);
main().catch((error) => {
console.error(error);
process.exitCode = 1;
});
```

### Connecting to Your Session

Now that you have a session, you can connect to it using your preferred automation tool.


```typescript Typescript -wcn -f puppeteer.ts
import puppeteer from 'puppeteer';

const browser = await puppeteer.connect({
browserWSEndpoint: `wss://connect.steel.dev?apiKey=${process.env.STEEL_API_KEY}&sessionId=${session.id}`,
});
Run it from the directory containing your `.env` file:

const page = await browser.newPage();
await page.goto('https://example.com');
```bash
npx tsx steel-client.ts
```


### Session Features

Want to do more with your session? Here are some common options you can add when creating:
To configure your session, replace the `client.sessions.create()` call inside `main()`
with the following options:

```typescript Typescript -wcn
const session = await client.sessions.create({
useProxy: true, // Use Steel's residential proxy network
solveCaptcha: true, // Enable automatic CAPTCHA solving
timeout: 1800000, // Set 30-minute timeout (default is 5 minutes)
timeout: 600000, // Set 10-minute timeout (default is 5 minutes)
inactivityTimeout: 300000, // Release after 5 minutes of inactivity
userAgent: 'custom-ua' // Set a custom user agent
});
Expand All @@ -119,9 +127,9 @@ Reach out to us on the <span className="font-bold">#help</span> channel on [Disc
:::faq
### How long does a Steel session last by default?

The default session timeout is 5 minutes. You can extend it with the `timeout` option on session create (for example `timeout: 1800000` for 30 minutes) and set `inactivityTimeout` to release after a period of inactivity.
The default session timeout is 5 minutes. You can extend it with the `timeout` option on session create (for example `timeout: 600000` for 10 minutes) and set `inactivityTimeout` to release after a period of inactivity. The maximum is 15 minutes on Launch, 1 hour on Scale, and up to 24 hours on Enterprise. See [Pricing/Limits](/overview/pricinglimits).

### Can I enable proxies and CAPTCHA solving on a session?

Yes. Pass `useProxy: true` to route through Steel's residential proxy network and `solveCaptcha: true` to enable automatic CAPTCHA solving when creating the session. You can also set a custom user agent with `userAgent`.
Yes. Pass `useProxy: true` to route through Steel's residential proxy network and `solveCaptcha: true` to enable automatic CAPTCHA solving when creating the session. You can also set a custom user agent with `userAgent`. See [Pricing/Limits](/overview/pricinglimits) for access requirements and rates.
:::
6 changes: 3 additions & 3 deletions content/docs/overview/sessions-api/session-lifecycle.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Each session can be in one of three states:
* **Failed**: Something went wrong during the session's lifetime (like a crash or connection loss). These sessions are automatically cleaned up.


Browser sessions are billed and metered by the minute. A session can last up to 24 hours depending on your plan.
Browser sessions are billed by the minute, rounded up. Launch sessions can last up to 15 minutes, Scale sessions up to 1 hour, and Enterprise sessions up to 24 hours. See [Pricing/Limits](/overview/pricinglimits) for current rates and limits.

Understanding how sessions live and die helps you manage resources effectively and build more reliable applications.

Expand Down Expand Up @@ -68,7 +68,7 @@ The value must be a valid UUID such as `123e4567-e89b-12d3-a456-426614174000`. O

### Session Lifetime and Timeout

When you start a session, it stays alive for 5 minutes by default but you can change it by passing the timeout parameter. After the time passes, the session will be automatically released.
When you start a session, it stays alive for 5 minutes by default but you can change it by passing the timeout parameter, up to your plan's maximum session time. After the time passes, the session will be automatically released.

<CodeTabs storage="languageSwitcher">

Expand Down Expand Up @@ -191,7 +191,7 @@ Reach out to us on the <span className="font-bold">#help</span> channel on [Disc

### What is the maximum length of a Steel session?

Up to 24 hours, depending on your plan. Sessions are billed and metered by the minute.
Launch sessions can last up to 15 minutes, Scale sessions up to 1 hour, and Enterprise sessions up to 24 hours. Sessions are billed by the minute, rounded up. See [Pricing/Limits](/overview/pricinglimits) for current rates and limits.

### Can I extend the timeout of a running Steel session?

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ After adding the Steel Skills marketplace in Claude Code:
## Example Prompts

- "Plan the least invasive mitigation for this 403."
- "Show me the safe BYOP pattern on Hobby."
- "Show me the safe BYOP pattern on Launch."
- "Should this login workflow use profiles, credentials, or both?"

## Related Skills
Expand Down
2 changes: 1 addition & 1 deletion content/docs/overview/stealth/captcha-solving.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -344,7 +344,7 @@ const captchaSelectors = [

### Important Considerations

1. **Plan Availability**: CAPTCHA solving is only available on Developer, Startup, and Enterprise plans. It is not included in the free tier.
1. **Plan Availability**: CAPTCHA solving is available on Launch after account verification, and on Scale and Enterprise. See [Pricing/Limits](/overview/pricinglimits) for rates and access requirements.

2. **Success Rates**: While our system has high success rates, CAPTCHA solving is not guaranteed to work 100% of the time. Always implement proper error handling.

Expand Down
Loading
Loading