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- A prior firecrawl scrape call (scrape ID is saved automatically)
- Firecrawl CLI installed and configured
How to use firecrawl-interact
- 1.Run firecrawl scrape on the target URL to create a scrape session
- 2.Use firecrawl interact --prompt with a natural language instruction (e.g., 'Click the login button')
- 3.Alternatively, use firecrawl interact --code with bash, python, or node code for precise control
- 4.Optionally specify --timeout (max 300 seconds) and --output for results
- 5.Run firecrawl interact stop to free resources when finished
Use cases
- 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
- 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
Yes, always scrape first. The interact command requires a scrape ID from a previous firecrawl scrape call. The scrape ID is saved automatically.
Use the --profile flag on scrape to persist browser state (cookies, localStorage). Subsequent scrapes with the same profile will maintain the authenticated session.
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.
You can write code in bash, Python, or Node.js. Specify the language with --language and pass your code via --code.
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
scrapefailed 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
searchinstead
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
| Option | Description |
|---|---|
--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 —
interactrequires a scrape ID from a previousfirecrawl scrapecall - The scrape ID is saved automatically, so you don't need
--scrape-idfor subsequent interact calls - Use
firecrawl interact stopto free resources when done - For parallel work, scrape multiple pages and interact with each using
--scrape-id
See also
- firecrawl-scrape — try scrape first, escalate to interact only when needed
- firecrawl-search — for web searches (never use interact for searching)
- firecrawl-agent — AI-powered extraction (less manual control)
Related skills
More from firecrawl/cli and the wider catalog.
firecrawl
Search, scrape, and interact with the web via Firecrawl CLI—real-time content extraction and monitoring.
firecrawl-scrape
Extract clean markdown from any URL, including JavaScript-rendered pages.
firecrawl-search
Web search with full page content extraction—find articles, research topics, and discover sources beyond snippets.
firecrawl-crawl
Bulk extract content from entire websites or site sections with depth and path filtering.
firecrawl-agent
AI-powered autonomous data extraction from complex websites, returning structured JSON.
firecrawl-map
Discover and list all URLs on a website with optional search filtering.