$npx -y skills add firecrawl/cli --skill firecrawl-interactControl 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 fo
| 1 | # firecrawl interact |
| 2 | |
| 3 | 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. |
| 4 | |
| 5 | ## When to use |
| 6 | |
| 7 | - Content requires interaction: clicks, form fills, pagination, login |
| 8 | - `scrape` failed because content is behind JavaScript interaction |
| 9 | - You need to navigate a multi-step flow |
| 10 | - Last resort in the [workflow escalation pattern](firecrawl-cli): search → scrape → map → crawl → **interact** |
| 11 | - **Never use interact for web searches** — use `search` instead |
| 12 | |
| 13 | ## Quick start |
| 14 | |
| 15 | ```bash |
| 16 | # 1. Scrape a page (scrape ID is saved automatically) |
| 17 | firecrawl scrape "<url>" |
| 18 | |
| 19 | # 2. Interact with the page using natural language |
| 20 | firecrawl interact --prompt "Click the login button" |
| 21 | firecrawl interact --prompt "Fill in the email field with test@example.com" |
| 22 | firecrawl interact --prompt "Extract the pricing table" |
| 23 | |
| 24 | # 3. Or use code for precise control |
| 25 | firecrawl interact --code "agent-browser click @e5" --language bash |
| 26 | firecrawl interact --code "agent-browser snapshot -i" --language bash |
| 27 | |
| 28 | # 4. Stop the session when done |
| 29 | firecrawl interact stop |
| 30 | ``` |
| 31 | |
| 32 | ## Options |
| 33 | |
| 34 | | Option | Description | |
| 35 | | --------------------- | ------------------------------------------------- | |
| 36 | | `--prompt <text>` | Natural language instruction (use this OR --code) | |
| 37 | | `--code <code>` | Code to execute in the browser session | |
| 38 | | `--language <lang>` | Language for code: bash, python, node | |
| 39 | | `--timeout <seconds>` | Execution timeout (default: 30, max: 300) | |
| 40 | | `--scrape-id <id>` | Target a specific scrape (default: last scrape) | |
| 41 | | `-o, --output <path>` | Output file path | |
| 42 | |
| 43 | ## Profiles |
| 44 | |
| 45 | Use `--profile` on the scrape to persist browser state (cookies, localStorage) across scrapes: |
| 46 | |
| 47 | ```bash |
| 48 | # Session 1: Login and save state |
| 49 | firecrawl scrape "https://app.example.com/login" --profile my-app |
| 50 | firecrawl interact --prompt "Fill in email with user@example.com and click login" |
| 51 | |
| 52 | # Session 2: Come back authenticated |
| 53 | firecrawl scrape "https://app.example.com/dashboard" --profile my-app |
| 54 | firecrawl interact --prompt "Extract the dashboard data" |
| 55 | ``` |
| 56 | |
| 57 | Read-only reconnect (no writes to profile state): |
| 58 | |
| 59 | ```bash |
| 60 | firecrawl scrape "https://app.example.com" --profile my-app --no-save-changes |
| 61 | ``` |
| 62 | |
| 63 | ## Tips |
| 64 | |
| 65 | - Always scrape first — `interact` requires a scrape ID from a previous `firecrawl scrape` call |
| 66 | - The scrape ID is saved automatically, so you don't need `--scrape-id` for subsequent interact calls |
| 67 | - Use `firecrawl interact stop` to free resources when done |
| 68 | - For parallel work, scrape multiple pages and interact with each using `--scrape-id` |
| 69 | |
| 70 | ## See also |
| 71 | |
| 72 | - [firecrawl-scrape](../firecrawl-scrape/SKILL.md) — try scrape first, escalate to interact only when needed |
| 73 | - [firecrawl-search](../firecrawl-search/SKILL.md) — for web searches (never use interact for searching) |
| 74 | - [firecrawl-agent](../firecrawl-agent/SKILL.md) — AI-powered extraction (less manual control) |