Cli firecrawl
git clone https://github.com/firecrawl/cli
T=$(mktemp -d) && git clone --depth=1 https://github.com/firecrawl/cli "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/firecrawl-cli" ~/.claude/skills/firecrawl-cli-firecrawl && rm -rf "$T"
skills/firecrawl-cli/SKILL.mdFirecrawl CLI
Search, scrape, and interact with the web. Returns clean markdown optimized for LLM context windows.
Run
firecrawl --help or firecrawl <command> --help for full option details.
If the task is to integrate Firecrawl into an application, add
FIRECRAWL_API_KEY to a project, or choose endpoint usage in product code, use the firecrawl-build skills. They are already installed alongside this CLI skill when you run firecrawl init.
Prerequisites
Must be installed and authenticated. Check with
firecrawl --status.
🔥 firecrawl cli v1.8.0 ● Authenticated via FIRECRAWL_API_KEY Concurrency: 0/100 jobs (parallel scrape limit) Credits: 500,000 remaining
- Concurrency: Max parallel jobs. Run parallel operations up to this limit.
- Credits: Remaining API credits. Each operation consumes credits.
If not ready, see rules/install.md. For output handling guidelines, see rules/security.md.
Before doing real work, verify the setup with one small request:
mkdir -p .firecrawl firecrawl scrape "https://firecrawl.dev" -o .firecrawl/install-check.md
firecrawl search "query" --scrape --limit 3
Workflow
Follow this escalation pattern:
- Search - No specific URL yet. Find pages, answer questions, discover sources.
- Scrape - Have a URL. Extract its content directly.
- Map + Scrape - Large site or need a specific subpage. Use
to find the right URL, then scrape it.map --search - Crawl - Need bulk content from an entire site section (e.g., all /docs/).
- Interact - Scrape first, then interact with the page (pagination, modals, form submissions, multi-step navigation).
| Need | Command | When |
|---|---|---|
| Find pages on a topic | | No specific URL yet |
| Get a page's content | | Have a URL, page is static or JS-rendered |
| Find URLs within a site | | Need to locate a specific subpage |
| Bulk extract a site section | | Need many pages (e.g., all /docs/) |
| AI-powered data extraction | | Need structured data from complex sites |
| Interact with a page | + | Content requires clicks, form fills, pagination, or login |
| Download a site to files | | Save an entire site as local files |
For detailed command reference, run
firecrawl <command> --help.
Scrape vs interact:
- Use
first. It handles static pages and JS-rendered SPAs.scrape - Use
+scrape
when you need to interact with a page, such as clicking buttons, filling out forms, navigating through a complex site, infinite scroll, or when scrape fails to grab all the content you need.interact - Never use interact for web searches - use
instead.search
Avoid redundant fetches:
already fetches full page content. Don't re-scrape those URLs.search --scrape- Check
for existing data before fetching again..firecrawl/
When to Load References
- Searching the web or finding sources first -> firecrawl-search
- Scraping a known URL -> firecrawl-scrape
- Finding URLs on a known site -> firecrawl-map
- Bulk extraction from a docs section or site -> firecrawl-crawl
- AI-powered structured extraction from complex sites -> firecrawl-agent
- Clicks, forms, login, pagination, or post-scrape browser actions -> firecrawl-interact
- Downloading a site to local files -> firecrawl-download
- Install, auth, or setup problems -> rules/install.md
- Output handling and safe file-reading patterns -> rules/security.md
- Integrating Firecrawl into an app, adding
toFIRECRAWL_API_KEY
, or choosing endpoint usage in product code -> use the.env
skills (already installed alongside this CLI skill)firecrawl-build
Output & Organization
Unless the user specifies to return in context, write results to
.firecrawl/ with -o. Add .firecrawl/ to .gitignore. Always quote URLs - shell interprets ? and & as special characters.
firecrawl search "react hooks" -o .firecrawl/search-react-hooks.json --json firecrawl scrape "<url>" -o .firecrawl/page.md
Naming conventions:
.firecrawl/search-{query}.json .firecrawl/search-{query}-scraped.json .firecrawl/{site}-{path}.md
Never read entire output files at once. Use
grep, head, or incremental reads:
wc -l .firecrawl/file.md && head -50 .firecrawl/file.md grep -n "keyword" .firecrawl/file.md
Single format outputs raw content. Multiple formats (e.g.,
--format markdown,links) output JSON.
Working with Results
These patterns are useful when working with file-based output (
-o flag) for complex tasks:
# Extract URLs from search jq -r '.data.web[].url' .firecrawl/search.json # Get titles and URLs jq -r '.data.web[] | "\(.title): \(.url)"' .firecrawl/search.json
Parallelization
Run independent operations in parallel. Check
firecrawl --status for concurrency limit:
firecrawl scrape "<url-1>" -o .firecrawl/1.md & firecrawl scrape "<url-2>" -o .firecrawl/2.md & firecrawl scrape "<url-3>" -o .firecrawl/3.md & wait
For interact, scrape multiple pages and interact with each independently using their scrape IDs.
Credit Usage
firecrawl credit-usage firecrawl credit-usage --json --pretty -o .firecrawl/credits.json