Stagehand constructor
// Basic usage
// Defaults to Browserbase; if no API key is provided, it will default to LOCAL
// Default model is gpt-4o
const stagehand = new Stagehand();
// Custom configuration
const stagehand = new Stagehand({
env: "LOCAL",
// env: "BROWSERBASE", // To run remotely on Browserbase (needs API keys)
verbose: 1,
enableCaching: true,
logger: (logLine: LogLine) => {
console.log(`[${logLine.category}] ${logLine.message}`);
},
// LLM configuration
modelName: "google/gemini-2.0-flash", /* Name of the model to use in "provider/model" format */
modelClientOptions: {
apiKey: process.env.GOOGLE_GENERATIVE_AI_API_KEY, /* Model API key */
}, /* Configuration options for the model client */
apiKey: process.env.BROWSERBASE_API_KEY,
projectId: process.env.BROWSERBASE_PROJECT_ID,
/* API keys for authentication (if you want to use Browserbase) */
browserbaseSessionID:
undefined, /* Can set Session ID for resuming Browserbase sessions */
browserbaseSessionCreateParams: { /* Browser Session Params */
projectId: process.env.BROWSERBASE_PROJECT_ID!,
proxies: true, /* Using Browserbase's Proxies */
browserSettings: {
advancedStealth: true, /* Only available on Scale Plans */
blockAds: true, /* To Block Ad Popups (defaults to False) */
viewport: { // Browser Size (ie 1920x1080, 1024x768)
width: 1024,
height: 768,
},
},
},
localBrowserLaunchOptions: {
headless: true, // Launches the browser in headless mode.
executablePath: '/path/to/chrome', // Custom path to the Chrome executable.
args: ['--no-sandbox', '--disable-setuid-sandbox'], // Additional launch arguments.
env: { NODE_ENV: "production" }, // Environment variables for the browser process.
handleSIGHUP: true,
handleSIGINT: true,
handleSIGTERM: true,
ignoreDefaultArgs: false, // or specify an array of arguments to ignore.
proxy: {
server: 'http://proxy.example.com:8080',
bypass: 'localhost',
username: 'user',
password: 'pass'
},
tracesDir: '/path/to/traces', // Directory to store trace files.
userDataDir: '/path/to/user/data', // Custom user data directory.
acceptDownloads: true,
downloadsPath: '/path/to/downloads',
extraHTTPHeaders: { 'User-Agent': 'Custom Agent' },
geolocation: { latitude: 37.7749, longitude: -122.4194, accuracy: 10 },
permissions: ["geolocation", "notifications"],
locale: "en-US",
viewport: { width: 1280, height: 720 },
deviceScaleFactor: 1,
hasTouch: false,
ignoreHTTPSErrors: true,
recordVideo: { dir: '/path/to/videos', size: { width: 1280, height: 720 } },
recordHar: {
path: '/path/to/har.har',
mode: "full",
omitContent: false,
content: "embed",
urlFilter: '.*'
},
chromiumSandbox: true,
devtools: true,
bypassCSP: false,
cdpUrl: 'http://localhost:9222',
preserveUserDataDir: false, // Whether to preserve the user data directory after Stagehand is closed. Defaults to false.
},
});
// Resume existing Browserbase session
const stagehand = new Stagehand({
env: "BROWSERBASE",
browserbaseSessionID: "existing-session-id",
});
import os
from stagehand import Stagehand
# Basic usage
# Defaults to Browserbase; if no API key is provided, it will default to LOCAL
# Default model is gpt-4.1-mini
stagehand = Stagehand()
# Custom configuration
def custom_logger(log_line):
print(f"[{log_line.category}] {log_line.message}")
stagehand = Stagehand(
env="LOCAL",
# env="BROWSERBASE", # To run remotely on Browserbase (needs API keys)
verbose=1,
enable_caching=True,
logger=custom_logger,
# LLM configuration
model_name="google/gemini-2.0-flash", # Name of the model to use in "provider/model" format
model_api_key=os.getenv("GOOGLE_GENERATIVE_AI_API_KEY"), # Model API key
api_key=os.getenv("BROWSERBASE_API_KEY"),
project_id=os.getenv("BROWSERBASE_PROJECT_ID"),
# API keys for authentication (if you want to use Browserbase)
browserbase_session_id=None, # Can set Session ID for resuming Browserbase sessions
browserbase_session_create_params={ # Browser Session Params
"project_id": os.getenv("BROWSERBASE_PROJECT_ID"),
"proxies": True, # Using Browserbase's Proxies
"browser_settings": {
"advanced_stealth": True, # Only available on Scale Plans
"block_ads": True, # To Block Ad Popups (defaults to False)
"viewport": { # Browser Size (ie 1920x1080, 1024x768)
"width": 1024,
"height": 768,
},
},
},
local_browser_launch_options={
"headless": True, # Launches the browser in headless mode.
"executable_path": "/path/to/chrome", # Custom path to the Chrome executable.
"args": ["--no-sandbox", "--disable-setuid-sandbox"], # Additional launch arguments.
"env": {"NODE_ENV": "production"}, # Environment variables for the browser process.
"handle_sighup": True,
"handle_sigint": True,
"handle_sigterm": True,
"ignore_default_args": False, # or specify a list of arguments to ignore.
"proxy": {
"server": "http://proxy.example.com:8080",
"bypass": "localhost",
"username": "user",
"password": "pass"
},
"traces_dir": "/path/to/traces", # Directory to store trace files.
"user_data_dir": "/path/to/user/data", # Custom user data directory.
"accept_downloads": True,
"downloads_path": "/path/to/downloads",
"extra_http_headers": {"User-Agent": "Custom Agent"},
"geolocation": {"latitude": 37.7749, "longitude": -122.4194, "accuracy": 10},
"permissions": ["geolocation", "notifications"],
"locale": "en-US",
"viewport": {"width": 1280, "height": 720},
"device_scale_factor": 1,
"has_touch": False,
"ignore_https_errors": True,
"record_video": {"dir": "/path/to/videos", "size": {"width": 1280, "height": 720}},
"record_har": {
"path": "/path/to/har.har",
"mode": "full",
"omit_content": False,
"content": "embed",
"url_filter": ".*"
},
"chromium_sandbox": True,
"devtools": True,
"bypass_csp": False,
"cdp_url": "http://localhost:9222",
},
)
# Resume existing Browserbase session
stagehand = Stagehand(
env="BROWSERBASE",
browserbase_session_id="existing-session-id",
)
Arguments: ConstructorParams
- TypeScript
- Python
'LOCAL' | 'BROWSERBASE'
Defaults to
'BROWSERBASE'string
Your Browserbase API key. Defaults to
BROWSERBASE_API_KEY environment variablestring
Your Browserbase project ID. Defaults to
BROWSERBASE_PROJECT_ID environment variableboolean
Enables access to experimental features.
boolean
Whether to use the stagehand API. Defaults to
true when env: "BROWSERBASE".object
Configuration options for creating new Browserbase sessions. More information on browserbaseSessionCreateParams can be found here.
Show properties
Show properties
object
Show properties
Show properties
object
string
The uploaded Extension ID. See Upload Extension.
object
See usage examples in the Stealth Mode page.
Show properties
Show properties
enum<number>
Available options:
1, 2enum<string>[]
Available options:
chrome, edge, firefox, safarienum<string>[]
Available options:
desktop, mobileenum<string>[]
Note:
operatingSystems set to ios or android requires devices to include "mobile".
Available options: android, ios,linux, macos, windowsboolean
Enable or disable ad blocking in the browser. Defaults to
false.boolean
Enable or disable captcha solving in the browser. Defaults to
true.boolean
Enable or disable session recording. Defaults to
true.boolean
Advanced Browser Stealth Mode.
string
The uploaded Extension ID. See Upload Extension.
boolean
Set to true to keep the session alive even after disconnections. This is available on the Browserbase Startup plan only.
boolean
Proxy configuration. Can be true for default proxy, or an array of proxy configurations.
enum<string>
The region where the Session should run. Available options:
us-west-2, us-east-1, eu-central-1, ap-southeast-1number
Duration in seconds after which the session will automatically end. Defaults to the Project’s defaultTimeout.
Required range:
60 < x < 21600object
Arbitrary user metadata to attach to the session. For more information about user metadata, see UserMetadata
Show Properties
Show Properties
userMetadata.
{key} anystring
ID of an existing Browserbase session to resume
string
Specifying the default language model to use. Format supported is
{provider}/{modelName}. For a list of supported providers, see Available Providers.object
Configuration options for the language model client (i.e.
apiKey)boolean
Enables caching of LLM responses. When set to
true, the LLM requests will be cached on disk and reused for identical requests. Defaults to falseinteger
Specifies the timeout in milliseconds for waiting for the DOM to settle. Defaults to
30_000 (30 seconds)(message: LogLine) => void
message is a LogLine object. Handles log messages. Useful for custom logging implementations. For more information, see the Logging pageboolean
Whether Pino should be disabled for logging. This is helpful for Next.js or test environments. Pino will automatically be disabled if a custom
logger is defined.integer
Enables several levels of logging during automation:
0: ERROR (limited to no logging)1: INFO (SDK-level logging)2: DEBUG (Detailed logging and tracing)
string
A custom system prompt to use for the LLM in addition to the default system prompt for act, extract, and observe methods.
boolean
Enables self-healing mode. When set to
true, Stagehand will attempt to recover from errors (eg. outdated cached element not resolving) by retrying the last action. Defaults to true. Set to false to disable LLM inference on cache errors.LocalBrowserLaunchOptions
Provides comprehensive options for local browser instances.
Show properties
Show properties
string[]
Additional command-line arguments to pass to the browser.
boolean
Enable or disable Chromium’s sandbox.
boolean
Open the browser’s developer tools on launch.
Record<string, string | number | boolean>
Environment variables for the browser process.
string
Path to the browser executable.
boolean
Option to handle the SIGHUP signal.
boolean
Option to handle the SIGINT signal.
boolean
Option to handle the SIGTERM signal.
boolean
Launches the browser in headless mode.
boolean | string[]
Ignore all default arguments or specify an array to ignore.
object
string
Directory to store trace files.
string
Custom user data directory.
boolean
Allow file downloads.
string
Directory where downloads are saved.
Record<string, string>
Additional HTTP headers to send with each request.
object
boolean
Indicates if the device has touch capabilities.
boolean
Whether to ignore HTTPS errors.
string
Sets the browser’s locale.
string[]
Array of permissions to grant (e.g., “geolocation”, “notifications”).
object
object
number
Device scale factor for high-DPI displays.
string
Timezone to emulate (e.g., “America/Los_Angeles”).
boolean
Whether to bypass Content Security Policy.
Cookie[]
Array of cookies to initialize the browser session.
string
URL for the Chrome DevTools Protocol. Useful for connecting to a running browser instance.
boolean
Whether to preserve the user data directory after Stagehand is closed. This is useful for reusing local context with multiple sessions. Defaults to false.
'LOCAL' | 'BROWSERBASE'
Defaults to
'BROWSERBASE'string
Your Browserbase API key. Defaults to
BROWSERBASE_API_KEY environment variablestring
Your Browserbase project ID. Defaults to
BROWSERBASE_PROJECT_ID environment variableboolean
Enables access to experimental features.
boolean
Whether to use the stagehand API. Defaults to
true when env: "BROWSERBASE".object
Configuration options for creating new Browserbase sessions. More information on browserbaseSessionCreateParams can be found here.
Show properties
Show properties
object
Show properties
Show properties
object
string
The uploaded Extension ID. See Upload Extension.
object
See usage examples in the Stealth Mode page.
Show properties
Show properties
enum<number>
Available options:
1, 2enum<string>[]
Available options:
chrome, edge, firefox, safarienum<string>[]
Available options:
desktop, mobileenum<string>[]
Note:
operatingSystems set to ios or android requires devices to include "mobile".
Available options: android, ios,linux, macos, windowsboolean
Enable or disable ad blocking in the browser. Defaults to
false.boolean
Enable or disable captcha solving in the browser. Defaults to
true.boolean
Enable or disable session recording. Defaults to
true.boolean
Advanced Browser Stealth Mode.
string
The uploaded Extension ID. See Upload Extension.
boolean
Set to true to keep the session alive even after disconnections. This is available on the Browserbase Startup plan only.
boolean
Proxy configuration. Can be true for default proxy, or an array of proxy configurations.
enum<string>
The region where the Session should run. Available options:
us-west-2, us-east-1, eu-central-1, ap-southeast-1number
Duration in seconds after which the session will automatically end. Defaults to the Project’s defaultTimeout.
Required range:
60 < x < 21600object
Arbitrary user metadata to attach to the session. For more information about user metadata, see UserMetadata
Show Properties
Show Properties
userMetadata.
{key} anystring
ID of an existing Browserbase session to resume
string
Specifying the default language model to use. Format supported is
{provider}/{model_name}. For a list of supported providers, see Available Providers.object
Configuration options for the language model client (i.e.
apiKey)integer
Specifies the timeout in milliseconds for waiting for the DOM to settle. Defaults to
30_000 (30 seconds)Callable[[LogLine], None]
message is a LogLine object. Handles log messages. Useful for custom logging implementations. For more information, see the Logging pageinteger
Enables several levels of logging during automation:
0: ERROR (limited to no logging)1: INFO (SDK-level logging)2: DEBUG (Detailed logging and tracing)
string
A custom system prompt to use for the LLM in addition to the default system prompt for act, extract, and observe methods.
boolean
Enables self-healing mode. When set to
true, Stagehand will attempt to recover from errors (eg. outdated cached element not resolving) by retrying the last action. Defaults to true. Set to false to disable LLM inference on cache errors.integer
Specifies the timeout in milliseconds for act commands. Defaults to
30_000 (30 seconds)boolean
Launches the browser in headless mode.
boolean
Whether to use Rich for colorized logging. Defaults to
true.LocalBrowserLaunchOptions
Provides comprehensive options for local browser instances.
Show properties
Show properties
string[]
Additional command-line arguments to pass to the browser.
boolean
Enable or disable Chromium’s sandbox.
boolean
Open the browser’s developer tools on launch.
Record<string, string | number | boolean>
Environment variables for the browser process.
string
Path to the browser executable.
boolean
Option to handle the SIGHUP signal.
boolean
Option to handle the SIGINT signal.
boolean
Option to handle the SIGTERM signal.
boolean
Launches the browser in headless mode.
boolean | string[]
Ignore all default arguments or specify an array to ignore.
object
string
Directory to store trace files.
string
Custom user data directory.
boolean
Allow file downloads.
string
Directory where downloads are saved.
Record<string, string>
Additional HTTP headers to send with each request.
object
boolean
Indicates if the device has touch capabilities.
boolean
Whether to ignore HTTPS errors.
string
Sets the browser’s locale.
string[]
Array of permissions to grant (e.g., “geolocation”, “notifications”).
object
object
number
Device scale factor for high-DPI displays.
string
Timezone to emulate (e.g., “America/Los_Angeles”).
boolean
Whether to bypass Content Security Policy.
Cookie[]
Array of cookies to initialize the browser session.
string
URL for the Chrome DevTools Protocol. Useful for connecting to a running browser instance.
boolean
Whether to preserve the user data directory after Stagehand is closed. This is useful for reusing local context with multiple sessions. Defaults to false.
Returns: Stagehand object
The constructor returns an instance of theStagehand class configured with the specified options. However, to use Stagehand, you must still initialize it with init().
stagehand.init()
await stagehand.init();
await stagehand.init()
init() asynchronously initializes the Stagehand instance. It should be called before any other methods.
stagehand.close()
await stagehand.close();
await stagehand.close()
close() is a cleanup method to remove the temporary files created by Stagehand. It’s recommended that you call this explicitly when you’re done with your automation.
