PluginBench
Skill
Official
Fail
Audit score 45

firecrawl-browser

firecrawl/cli

Interact with live webpages: click, fill forms, navigate, and extract data after scraping.

What is firecrawl-browser?

Deprecated in favor of scrape + interact. Use this skill when you need to interact with a webpage through clicks, form fills, pagination, or multi-step flows. It requires scraping a page first, then executing natural language prompts or code to manipulate and extract data from the live browser session.

  • Click buttons and links on scraped pages using natural language or code
  • Fill and submit forms with data
  • Navigate multi-step flows and handle pagination
  • Extract data after interaction completes
  • Persist browser state (cookies, localStorage) across sessions using profiles
  • Execute precise browser commands via bash, Python, or Node.js code

How to install firecrawl-browser

npx skills add null --skill firecrawl-browser
Prerequisites
  • A previous firecrawl scrape command (scrape ID is saved automatically)
  • Firecrawl CLI installed and authenticated
Claude Code
Cursor
Windsurf
Cline

How to use firecrawl-browser

  1. 1.Run firecrawl scrape with a URL to create a scrape session
  2. 2.Use firecrawl interact --prompt with a natural language instruction (e.g., 'Click the login button')
  3. 3.Optionally use firecrawl interact --code with bash, python, or node code for precise control
  4. 4.Repeat interact commands as needed to navigate and extract data
  5. 5.Run firecrawl interact stop to end the session and free resources

Use cases

Good for
  • Log into a website and extract authenticated content
  • Navigate a multi-page checkout or form flow
  • Click through pagination to collect all results
  • Fill search filters and extract filtered results
  • Handle infinite scroll or lazy-loaded content
Who it's for
  • Web scraping engineers needing interactive workflows
  • Developers automating form submissions and logins
  • Data extraction specialists handling JavaScript-heavy sites
  • QA automation engineers testing user flows

firecrawl-browser FAQ

Do I need to specify a scrape ID each time?

No. The scrape ID is saved automatically from your last firecrawl scrape call. Use --scrape-id only if you want to target a specific earlier scrape.

How do I keep a user logged in across multiple scrapes?

Use the --profile flag on scrape to persist cookies and localStorage. Subsequent scrapes with the same profile will maintain the authenticated state.

When should I use interact vs. scrape?

Try scrape first. Use interact only when scrape fails because content requires JavaScript interaction, or when you need to click, fill forms, or navigate.

Can I use interact for web searches?

No. Use firecrawl-search for web searches. Interact is only for manipulating pages you've already scraped.

What languages can I use for code execution?

Bash, Python, and Node.js are supported via the --language option.

Full instructions (SKILL.md)

Source of truth, from firecrawl/cli.


name: firecrawl-browser description: | DEPRECATED — use scrape + interact instead. Interact lets you scrape a page and then click, fill forms, and navigate without managing sessions manually. Use this skill when the user needs to interact with a webpage, log into a site, click buttons, fill forms, navigate multi-step flows, handle pagination, or when regular scraping fails because content requires JavaScript interaction. Triggers on "click", "fill out the form", "log in to", "paginated", "infinite scroll", "interact with the page", or "scrape failed". allowed-tools:

  • Bash(firecrawl *)
  • Bash(npx firecrawl *)

firecrawl interact (formerly browser)

The browser command is deprecated. Use scrape + interact instead. Interact lets you scrape a page and then click, fill forms, and navigate without managing sessions manually.

Interact with scraped pages in a live browser session. Scrape a page first, then use natural language prompts or code to click, fill forms, navigate, and extract data.

When to use

  • Content requires interaction: clicks, form fills, pagination, login
  • scrape failed because content is behind JavaScript interaction
  • You need to navigate a multi-step flow
  • Last resort in the workflow escalation pattern: search → scrape → map → crawl → interact
  • Never use interact for web searches — use search instead

Quick start

# 1. Scrape a page (scrape ID is saved automatically)
firecrawl scrape "<url>"

# 2. Interact with the page using natural language
firecrawl interact --prompt "Click the login button"
firecrawl interact --prompt "Fill in the email field with test@example.com"
firecrawl interact --prompt "Extract the pricing table"

# 3. Or use code for precise control
firecrawl interact --code "agent-browser click @e5" --language bash
firecrawl interact --code "agent-browser snapshot -i" --language bash

# 4. Stop the session when done
firecrawl interact stop

Options

OptionDescription
--prompt <text>Natural language instruction (use this OR --code)
--code <code>Code to execute in the browser session
--language <lang>Language for code: bash, python, node
--timeout <seconds>Execution timeout (default: 30, max: 300)
--scrape-id <id>Target a specific scrape (default: last scrape)
-o, --output <path>Output file path

Profiles

Use --profile on the scrape to persist browser state (cookies, localStorage) across scrapes:

# Session 1: Login and save state
firecrawl scrape "https://app.example.com/login" --profile my-app
firecrawl interact --prompt "Fill in email with user@example.com and click login"

# Session 2: Come back authenticated
firecrawl scrape "https://app.example.com/dashboard" --profile my-app
firecrawl interact --prompt "Extract the dashboard data"

Read-only reconnect (no writes to profile state):

firecrawl scrape "https://app.example.com" --profile my-app --no-save-changes

Tips

  • Always scrape first — interact requires a scrape ID from a previous firecrawl scrape call
  • The scrape ID is saved automatically, so you don't need --scrape-id for subsequent interact calls
  • Use firecrawl interact stop to free resources when done
  • For parallel work, scrape multiple pages and interact with each using --scrape-id

See also