PluginBench
Skill
Official
Review
Audit score 70

firecrawl-interact

firecrawl/cli

Control live browser sessions to click, fill forms, navigate flows, and extract data from interactive web pages.

What is firecrawl-interact?

Interact with scraped pages in a live browser session using natural language prompts or code. Use when content requires clicks, form fills, pagination, login, or when regular scraping fails due to JavaScript interactions.

  • Click buttons and interact with page elements using natural language or code
  • Fill and submit forms with specified data
  • Navigate multi-step flows, pagination, and infinite scroll
  • Extract data after interaction completes
  • Maintain authenticated sessions using profiles with cookies and localStorage
  • Execute precise browser actions via bash, Python, or Node.js code

How to install firecrawl-interact

npx skills add null --skill firecrawl-interact
Prerequisites
  • A prior firecrawl scrape call (scrape ID is saved automatically)
  • Firecrawl CLI installed and configured
Claude Code
Cursor
Windsurf
Cline

How to use firecrawl-interact

  1. 1.Run firecrawl scrape on the target 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.Alternatively, use firecrawl interact --code with bash, python, or node code for precise control
  4. 4.Optionally specify --timeout (max 300 seconds) and --output for results
  5. 5.Run firecrawl interact stop to free resources when finished

Use cases

Good for
  • Log into a website and scrape authenticated content using saved profiles
  • Click through pagination or infinite scroll to collect all data
  • Fill out and submit a form to access gated content
  • Navigate a multi-step checkout or wizard flow
  • Interact with JavaScript-heavy sites where regular scraping returns incomplete data
Who it's for
  • Web scrapers needing to handle interactive content
  • Developers automating login and authenticated data extraction
  • QA engineers testing form submissions and user flows
  • Data engineers extracting data from sites requiring interaction

firecrawl-interact FAQ

Do I need to scrape before using interact?

Yes, always scrape first. The interact command requires a scrape ID from a previous firecrawl scrape call. The scrape ID is saved automatically.

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

Use the --profile flag on scrape to persist browser state (cookies, localStorage). Subsequent scrapes with the same profile will maintain the authenticated session.

Can I use interact for web searches?

No, never use interact for web searches. Use the firecrawl-search skill instead. Interact is only for controlling a live browser on a previously scraped page.

What languages can I use for code-based interactions?

You can write code in bash, Python, or Node.js. Specify the language with --language and pass your code via --code.

When should I use interact instead of scrape?

Use interact only when regular scrape fails due to JavaScript content, or when you need to click, fill forms, log in, or navigate flows. It is the last step in the escalation pattern: search → scrape → map → crawl → interact.

Full instructions (SKILL.md)

Source of truth, from firecrawl/cli.


name: firecrawl-interact description: | Control and interact with a live browser session on any scraped page — click buttons, fill forms, navigate flows, and extract data using natural language prompts or code. Use when the user needs to interact with a webpage beyond simple scraping: logging into a site, submitting forms, clicking through pagination, handling infinite scroll, navigating multi-step checkout or wizard flows, or when a regular scrape failed because content is behind JavaScript interaction. Also useful for authenticated scraping via profiles. Triggers on "interact", "click", "fill out the form", "log in to", "sign in", "submit", "paginated", "next page", "infinite scroll", "interact with the page", "navigate to", "open a session", or "scrape failed". allowed-tools:

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

firecrawl interact

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