Automate any website with AI-powered browser automation. Use when the user needs to interact with a website — filling forms, extracting data, downloading files, logging in, or running multi-step workflows. Skyvern navigates sites it has never seen before using LLMs and computer vision. Integrates via Python SDK, TypeScript SDK, REST API, MCP server, or CLI.
Skyvern automates browser-based workflows using LLMs and computer vision. It navigates websites it has never seen before — filling forms, extracting data, and completing multi-step tasks — via a simple API.
Execute a one-shot browser automation with natural language instructions.
Inputs:
prompt (required): Natural language description of what to dourl (required): Starting page URLdata_extraction_schema (optional): JSON schema for structured outputproxy_location (optional): Country code for geo-routing (e.g., US, DE)Python SDK:
from skyvern import Skyvern
client = Skyvern(api_key="YOUR_API_KEY")
result = await client.run_task(
prompt="Get the title of the top post on Hacker News",
url="https://news.ycombinator.com",
)
TypeScript SDK:
import Skyvern from "@skyvern/client";
const client = new Skyvern({ apiKey: "YOUR_API_KEY" });
const result = await client.runTask({
prompt: "Get the title of the top post on Hacker News",
url: "https://news.ycombinator.com",
});
REST API:
curl -X POST https://api.skyvern.com/api/v2/run \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"prompt": "Get the top post title", "url": "https://news.ycombinator.com"}'
Define a JSON schema to get consistent, typed output from any page.
result = await client.run_task(
prompt="Extract the top 3 posts",
url="https://news.ycombinator.com",
data_extraction_schema={
"type": "object",
"properties": {
"posts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"title": {"type": "string"},
"url": {"type": "string"},
"points": {"type": "integer"}
}
}
}
}
},
)
Chain task blocks, loops, conditionals, data extraction, and file operations into reusable automations.
Block types: NavigationBlock, ActionBlock, ExtractBlock, LoopBlock, TextPromptBlock, LoginBlock, FileDownloadBlock, FileParseBlock, UploadBlock, EmailBlock, WebhookBlock, ValidationBlock, WaitBlock, CodeBlock, ForLoopBlock, FileURLParsingBlock, DownloadToS3Block, SendEmailBlock.
workflow = await client.create_workflow(
title="Invoice Downloader",
blocks=[...], # See workflow blocks reference
)
run = await client.run_workflow(workflow_id=workflow.workflow_id)
Persist a live browser across multiple tasks — maintain login state, cookies, and page context.
session = await client.create_session()
# Run multiple tasks on the same browser
await client.run_task(prompt="Log in", url="https://example.com", browser_session_id=session.browser_session_id)
await client.run_task(prompt="Download invoice", url="https://example.com/billing", browser_session_id=session.browser_session_id)
await client.close_session(session.browser_session_id)
Store passwords, TOTP/2FA secrets, and credit cards securely. Skyvern auto-fills login forms and generates 2FA codes during automation.
Supported credential providers: Skyvern vault (built-in), Bitwarden, 1Password, Azure Key Vault.
Connect AI assistants directly to browser automation. The MCP server exposes 75+ tools.
Install for Claude Code:
claude mcp add skyvern-cloud -- npx @anthropic-ai/skyvern-mcp@latest --skyvern-api-key YOUR_API_KEY
Install for Cursor/VS Code: Add to MCP config:
{
"mcpServers": {
"skyvern": {
"command": "npx",
"args": ["@anthropic-ai/skyvern-mcp@latest", "--skyvern-api-key", "YOUR_API_KEY"]
}
}
}
pip install skyvern
export SKYVERN_API_KEY="YOUR_KEY"
skyvern browser session create # Start a cloud browser
skyvern browser act "Click the login button" # Natural language action
skyvern browser extract '{"title": "string"}' # Extract structured data
skyvern browser screenshot # Capture screenshot
skyvern task run --prompt "..." --url "..." # Run a task
skyvern workflow run --id wf_xxx # Run a workflow
max_steps to control costs.