firecrawl

Scrape, crawl, search, and interact with web pages using Firecrawl CLI and API. Use when the user mentions "firecrawl", "scrape a website", "crawl a site", "map a site", "web scraping", "extract web data", "interact with a page", or needs richer web extraction than WebExtract (JS-rendered pages, full site crawls, sitemaps, form interaction, login-required pages).

9 stars

Best use case

firecrawl is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Scrape, crawl, search, and interact with web pages using Firecrawl CLI and API. Use when the user mentions "firecrawl", "scrape a website", "crawl a site", "map a site", "web scraping", "extract web data", "interact with a page", or needs richer web extraction than WebExtract (JS-rendered pages, full site crawls, sitemaps, form interaction, login-required pages).

Teams using firecrawl should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/firecrawl/SKILL.md --create-dirs "https://raw.githubusercontent.com/exiao/skills/main/external-services/firecrawl/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/firecrawl/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How firecrawl Compares

Feature / AgentfirecrawlStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Scrape, crawl, search, and interact with web pages using Firecrawl CLI and API. Use when the user mentions "firecrawl", "scrape a website", "crawl a site", "map a site", "web scraping", "extract web data", "interact with a page", or needs richer web extraction than WebExtract (JS-rendered pages, full site crawls, sitemaps, form interaction, login-required pages).

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# Firecrawl — Web Scraping, Search & Browser Interaction for AI Agents

> Firecrawl helps agents search first, scrape clean content, and interact with live pages when plain extraction is not enough.

## Prerequisites

**Install (one command):**
```bash
npx -y firecrawl-cli@latest init --all --browser
```

This installs CLI tools, sets up skills, and opens browser auth. Verify with:
```bash
firecrawl --status
```

If already installed, skip to the appropriate path below.

---

## Choose Your Path

| Need | Path |
|------|------|
| Web data during this session | **Path A** — Live CLI tools |
| Add Firecrawl to app code | **Path B** — SDK integration |
| Account or API key first | **Path C** — Auth only |
| No install, just curl | **Path D** — REST API directly |

---

## Path A: Live CLI Tools

**Default decision flow:**
1. **Search** → when you need discovery (find URLs about a topic)
2. **Scrape** → when you have a specific URL
3. **Interact** → only when the page needs clicks, forms, or login
4. **Crawl** → when you need all pages from a site/section
5. **Map** → when you need a sitemap/URL inventory of a domain

### Commands

```bash
# Search the web
firecrawl search "query here"

# Scrape a single URL to clean markdown
firecrawl scrape "https://example.com" -o output.md

# Interact with a live page (clicks, forms, JS-rendered content)
firecrawl interact "https://example.com"

# Crawl an entire site or section
firecrawl crawl "https://example.com/docs"

# Map all URLs on a domain
firecrawl map "https://example.com"
```

Save outputs to `.firecrawl/` directory for organized storage:
```bash
mkdir -p .firecrawl
firecrawl scrape "https://example.com/blog" -o .firecrawl/blog.md
```

---

## Path B: Integrate Into App Code

Requires `FIRECRAWL_API_KEY=fc-...` in `.env`.

**SDK install (Python):**
```bash
pip install firecrawl-py
```

**SDK install (Node):**
```bash
npm install @mendable/firecrawl-js
```

Use `firecrawl-build-onboarding` for setup, `firecrawl-build` for endpoint selection, and narrower `firecrawl-build-*` skills for implementation.

---

## Path C: Auth / API Key Setup

**Option 1 — Browser sign-up:**
https://www.firecrawl.dev/signin?view=signup&source=agent-suggested

**Option 2 — Automated agent auth flow:**
```bash
# Generate auth parameters
SESSION_ID=$(openssl rand -hex 32)
CODE_VERIFIER=$(openssl rand -base64 32 | tr '+/' '-_' | tr -d '=\n' | head -c 43)
CODE_CHALLENGE=$(printf '%s' "$CODE_VERIFIER" | openssl dgst -sha256 -binary | openssl base64 -A | tr '+/' '-_' | tr -d '=')
```

Have human open:
`https://www.firecrawl.dev/cli-auth?code_challenge=$CODE_CHALLENGE&source=coding-agent#session_id=$SESSION_ID`

Poll every 3 seconds:
```bash
curl -X POST https://www.firecrawl.dev/api/auth/cli/status \
  -H "Content-Type: application/json" \
  -d "{\"session_id\": \"$SESSION_ID\", \"code_verifier\": \"$CODE_VERIFIER\"}"
```
- `{"status": "pending"}` → keep polling
- `{"status": "complete", "apiKey": "fc-..."}` → save to `.env`

```bash
echo "FIRECRAWL_API_KEY=fc-..." >> .env
```

---

## Path D: REST API (No Install)

**Base URL:** `https://api.firecrawl.dev/v2`
**Auth:** `Authorization: Bearer fc-YOUR_API_KEY`

| Endpoint | Purpose |
|----------|---------|
| `POST /search` | Discover pages by query; returns results with optional full-page content |
| `POST /scrape` | Extract clean markdown from a single URL |
| `POST /interact` | Browser actions on live pages (clicks, forms, navigation) |

---

## When to Use Firecrawl vs WebExtract

| Scenario | Tool |
|----------|------|
| Quick content grab from a URL | WebExtract |
| JS-rendered / SPA pages | **Firecrawl** (scrape or interact) |
| Full site crawl (all pages) | **Firecrawl** (crawl) |
| Site URL inventory / sitemap | **Firecrawl** (map) |
| Pages behind login / forms | **Firecrawl** (interact) |
| Web search → scrape pipeline | **Firecrawl** (search → scrape) |
| Simple static page | Either works |

## References

- **Docs:** https://docs.firecrawl.dev
- **API Reference:** https://docs.firecrawl.dev/api-reference/introduction
- **Skills repo:** https://github.com/firecrawl/skills
- **Skill source:** https://www.firecrawl.dev/agent-onboarding/SKILL.md

Related Skills

writer

9
from exiao/skills

Write content in Eric's voice — articles, blog posts, tweets, social media posts, marketing copy, newsletter drafts. Loads WRITING-STYLE.md and enforces kill phrases.

positioning-angles

9
from exiao/skills

Use when defining product positioning, choosing strategic angles, crafting value propositions, competitive positioning, product messaging, differentiation strategy, or go-to-market angles. Also use for 'how should I position my app', 'what angle should I use', 'painkiller vs vitamin', or 'market positioning'.

outline-generator

9
from exiao/skills

Use when generating outlines, article structures, content outlines, blog outlines, planning article sections, structuring posts, breaking down topics into sections, or organizing ideas for long-form content. Also use for 'outline this', 'structure this article', or 'plan the sections'.

last30days-open

9
from exiao/skills

Use only when the user explicitly asks for the open variant of last30days, including watchlists, briefings, and history queries. Sources: Reddit, X, YouTube, web.

last30days

9
from exiao/skills

Use when researching what happened in the last 30 days on a topic. Also triggered by 'last30'. Sources: Reddit, X, YouTube, web. Produces expert-level summary with copy-paste-ready prompts.

hooks

9
from exiao/skills

Use when generating hooks, headlines, titles, and scroll-stopping openers for content. Also use when analyzing viral posts, Reels, TikToks, YouTube Shorts, or successful social examples to extract reusable hook patterns and improve hook guidance.

evaluate-content

9
from exiao/skills

Use when judging content quality OR editing/improving existing copy: shareability, readability, voice, cuttability, angle, copy sweeps.

editor-in-chief

9
from exiao/skills

Use when a first draft is complete and all Phase 1 gates are done: topic selected (seo-research), title approved (hooks), outline approved (outline-generator), draft written (writer). Runs autonomous diagnosis-prescribe-rewrite loop before Substack.

copywriting

9
from exiao/skills

Write or improve marketing copy for any surface: pages, ads, app stores, landing pages, TikTok/Meta scripts, push notifications, UGC. Combines page copy frameworks with direct response principles.

content-strategy

9
from exiao/skills

Use when building content strategy: hooks, angles, and ideas from what's trending now. Covers organic and paid creative across TikTok, X, YouTube, Meta, LinkedIn.

content-pipeline

9
from exiao/skills

Orchestrator for the 3-article content pipeline — runs research phase, spawns parallel article sub-agents, creates Typefully drafts. Use when running the full content pipeline (usually via cron at 3am).

yt-dlp

9
from exiao/skills

Download audio/video from YouTube and other sites using yt-dlp. Use when the user asks to download music, songs, albums, podcasts, or video from YouTube or similar platforms. Triggers on 'download song', 'get mp3', 'yt-dlp', 'youtube download', 'rip audio'.