Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/firecrawl-interact/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | -16% | 0% |
| case-04 | ✗→✓ | ▲ Improved | -41% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -51% | 0% |
| case-06 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 3% | 0% |
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. For web searches, use search — interact is for acting on a specific page.
bash# 1. Scrape a page (scrape ID is saved automatically) firecrawl scrape "<url>" # 2. Interact with the page using a positional prompt firecrawl interact "Click the login button" firecrawl interact "Fill in the email field with test@example.com" firecrawl interact "Extract the pricing table" # A UUID first argument is auto-detected as the scrape ID firecrawl interact "<scrape-id>" "Extract the pricing table" # 3. Or use code for precise control firecrawl interact --code "agent-browser click @e5" --bash firecrawl interact --code "agent-browser snapshot -i" --bash # 4. Stop the session when done firecrawl interact stop
Run firecrawl interact --help for the full option list.
Done when: the requested content or action result is captured and the session is stopped with firecrawl interact stop.
Use --profile on the scrape to persist browser state (cookies, localStorage) across scrapes:
bash# 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):
bashfirecrawl scrape "https://app.example.com" --profile my-app --no-save-changes
interact requires a scrape ID from a previous firecrawl scrape call--scrape-id for subsequent interact calls. Saved sessions may expire after about 10 minutes; re-scrape if the CLI warns that the session is stalefirecrawl interact stop to free resources when done--scrape-idsearch for web searches| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 14,824 | 8,705 | -41% | 1 | 1 | 0% | 1,787 | 1,212 | -32% | 0 | 0 | — |
case-02 | fail→pass | 16,206 | 11,812 | -27% | 1 | 1 | 0% | 1,990 | 1,664 | -16% | 0 | 0 | — |
case-03 | fail→fail | 18,859 | 17,604 | -7% | 1 | 1 | 0% | 1,198 | 1,005 | -16% | 0 | 0 | — |
case-04 | fail→pass | 19,856 | 10,615 | -47% | 1 | 1 | 0% | 2,550 | 1,503 | -41% | 0 | 0 | — |
case-05 | fail→pass | 20,447 | 8,402 | -59% | 1 | 1 | 0% | 2,614 | 1,291 | -51% | 0 | 0 | — |
case-06 | fail→pass | 15,213 | 10,245 | -33% | 1 | 1 | 0% | 1,687 | 1,489 | -12% | 0 | 0 | — |
case-07 | fail→pass | 15,116 | 13,902 | -8% | 1 | 1 | 0% | 1,936 | 1,997 | +3% | 0 | 0 | — |
case-08 | fail→pass | 12,600 | 4,078 | -68% | 1 | 1 | 0% | 1,846 | 1,234 | -33% | 0 | 0 | — |
case-09 | pass→pass | 16,368 | 16,008 | -2% | 1 | 1 | 0% | 1,981 | 2,297 | +16% | 0 | 0 | — |
case-10 | pass→pass | 16,916 | 4,642 | -73% | 1 | 1 | 0% | 1,921 | 1,493 | -22% | 0 | 0 | — |
case-11 | fail→pass | 13,181 | 8,759 | -34% | 1 | 1 | 0% | 2,094 | 1,364 | -35% | 0 | 0 | — |
case-12 | fail→fail | 7,780 | 3,198 | -59% | 1 | 1 | 0% | 1,276 | 1,195 | -6% | 0 | 0 | — |
case-13 | pass→pass | 9,483 | 8,777 | -7% | 1 | 1 | 0% | 1,634 | 1,294 | -21% | 0 | 0 | — |
case-14 | fail→pass | 3,795 | 7,019 | +85% | 1 | 1 | 0% | 599 | 991 | +65% | 0 | 0 | — |
case-15 | fail→pass | 14,041 | 9,274 | -34% | 1 | 1 | 0% | 1,504 | 1,297 | -14% | 0 | 0 | — |
case-16 | fail→pass | 17,093 | 4,099 | -76% | 1 | 1 | 0% | 1,800 | 1,121 | -38% | 0 | 0 | — |
case-17 | fail→pass | 7,921 | 8,934 | +13% | 1 | 1 | 0% | 1,298 | 1,271 | -2% | 0 | 0 | — |
case-18 | fail→pass | 11,675 | 7,672 | -34% | 1 | 1 | 0% | 1,754 | 1,070 | -39% | 0 | 0 | — |
case-19 | fail→pass | 13,963 | 13,351 | -4% | 1 | 1 | 0% | 1,586 | 2,090 | +32% | 0 | 0 | — |
case-20 | fail→fail | 17,381 | 7,634 | -56% | 1 | 1 | 0% | 2,174 | 1,106 | -49% | 0 | 0 | — |
case-21 | pass→pass | 16,856 | 10,576 | -37% | 1 | 1 | 0% | 2,106 | 1,677 | -20% | 0 | 0 | — |
case-22 | pass→pass | 13,022 | 9,084 | -30% | 1 | 1 | 0% | 2,217 | 1,328 | -40% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +59 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
| Model | Method | Date | Lift |
|---|---|---|---|
| gemini-3.6-flash | verified | 8/23/2026 | +57% |
| gemini-3.6-flash | verified | 7/23/2026 | +78% |
Other measured skills in the registry, with their headline benchmark lift.