firecrawl
Web scraping, content extraction, and autonomous research agent for deep web investigation.
Installation
Follow the repository instructions for this skill and your agent. Review the files and dependencies before adding it to your workflow.
View source ↗GuidesSkill instructions
Firecrawl (Web Scraping & Research)
Use Firecrawl to extract content from websites, perform web searches, and conduct autonomous deep research.
Tools
| Tool | Purpose |
|---|---|
firecrawl_scrape |
Extract content from a single URL |
firecrawl_crawl |
Crawl multiple pages from a domain |
firecrawl_map |
Discover all URLs on a website |
firecrawl_search |
Search the web and extract results |
firecrawl_agent |
Autonomous research agent - finds data anywhere on the web |
Firecrawl Agent (Deep Research)
The firecrawl_agent tool is an autonomous research agent that searches, navigates, and gathers data from anywhere on the web. No URLs required - just describe what you need.
When to Use Agent vs Other Tools
| Scenario | Tool | Why |
|---|---|---|
| Know the exact URL | scrape |
Faster, cheaper |
| Need to explore a site | map + scrape |
Controlled discovery |
| Simple web search | search |
Quick results |
| Don't know where data is | agent |
Autonomous navigation |
| Competitive analysis | agent |
Multi-site research |
| Complex research questions | agent |
Finds hard-to-reach data |
Basic Usage
firecrawl_agent({
prompt: "Find the founders of Firecrawl and their backgrounds"
})
Structured Output with Schema
For structured data, provide a JSON schema:
firecrawl_agent({
prompt: "Compare how Stripe, Auth0, and Clerk handle refresh token rotation",
schema: {
"type": "object",
"properties": {
"providers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"approach": { "type": "string" },
"token_lifetime": { "type": "string" },
"rotation_strategy": { "type": "string" }
},
"required": ["name", "approach"]
}
}
}
}
})
With Optional URLs (Focus the Agent)
When you have starting points but need deeper investigation:
firecrawl_agent({
urls: ["https://docs.stripe.com/api", "https://auth0.com/docs"],
prompt: "Compare the webhook retry strategies and timeout configurations"
})
Research Patterns
Competitive Analysis
firecrawl_agent({
prompt: "How do major auth providers (Auth0, Clerk, Supabase Auth) implement multi-tenant authentication? Focus on tenant isolation and session management.",
schema: {
"type": "object",
"properties": {
"providers": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": { "type": "string" },
"tenant_isolation": { "type": "string" },
"session_management": { "type": "string" },
"tradeoffs": { "type": "string" }
}
}
}
}
}
})
Implementation Research
firecrawl_agent({
prompt: "Find production examples of Effect-TS being used with Drizzle ORM. Include code patterns and gotchas.",
schema: {
"type": "object",
"properties": {
"examples": {
"type": "array",
"items": {
"type": "object",
"properties": {
"source": { "type": "string" },
"pattern": { "type": "string" },
"code_snippet": { "type": "string" },
"notes": { "type": "string" }
}
}
}
}
}
})
Best Practices Discovery
firecrawl_agent({
prompt: "What are industry best practices for WebSocket reconnection strategies? Include timeout values and backoff algorithms used by Pusher, Ably, and Socket.io."
})
Cost Management
Agent pricing is dynamic based on complexity. Control costs with:
- Specific prompts - More specific = fewer credits
- Schemas - Structured output reduces processing
- Focus with URLs - Optional URLs narrow the search scope
Single Page Scraping
firecrawl_scrape({
url: "https://docs.example.com/api/auth",
formats: ["markdown"]
})
Returns clean markdown content from the page.
Website Discovery
# First, map the site to find relevant pages
firecrawl_map({
url: "https://docs.example.com",
limit: 50
})
# Then scrape specific pages
firecrawl_scrape({ url: "https://docs.example.com/guides/quickstart" })
Web Search
firecrawl_search({
query: "Effect TypeScript error handling patterns",
limit: 5
})
Best Practices
- Use Agent for unknowns - When you don't know where data lives, let Agent find it
- Use scrape for knowns - When you have the URL, scrape is faster and cheaper
- Map before crawl - Discover URLs first, then selectively scrape
- Use markdown format - Cleaner for LLM consumption
-
Limit crawl depth - Avoid token overflow with
limitparameter - Be specific with prompts - Include library names, versions, and specific requirements
Tool Selection Guide
| Task | Tool | Example |
|---|---|---|
| Read known docs | scrape |
API documentation at specific URL |
| Research patterns | agent |
Find implementation examples anywhere |
| Site exploration | map + scrape |
Understand a new library's docs |
| Quick web search | search |
Find recent articles on a topic |
| PRD enrichment | scrape |
Extract requirements from linked docs |
| Competitive analysis | agent |
Compare how competitors solve problems |
| Deep research | agent |
Technical investigation across multiple sources |
Examples
Read the usage examples in the source repository.
View source ↗Source history
- Indexed on
- 2026-01-20
- Index updated
- 2026-03-03
- Branch
- main
Index and sync dates describe this directory. View the source repository for code history.
GitHub ↗chat Comments (0)
Sign in to join the discussion and leave a comment.
No comments yet. Be the first to share your thoughts!