Migrate from Firecrawl to WebPeel in 5 Minutes
WebPeel is a free, open-source alternative to Firecrawl with a compatible API. In most cases, switching is a one-line URL change.
Why switch?
Firecrawl is a well-built product and a solid choice. If you're on their free tier and it works for your needs, there's no urgent reason to switch. WebPeel is for people who want:
- A free recurring tier — 500 requests/week, no credit card, no one-time cap
- Self-hosting without restrictions — full AGPL-3.0 codebase,
docker compose upand you're running - More MCP tools — 18 vs. ~5 (quick answers, YouTube transcripts, hotel search, change tracking, and more)
- Stealth mode built-in — 28 preconfigured domains with anti-bot bypass, no cloud-only restriction
- LLM-free Q&A — answer factual questions from web pages without sending content to an LLM
- Token efficiency — budget mode reduces tokens by 83% on typical pages
Feature comparison
| Feature | Firecrawl | WebPeel |
|---|---|---|
| Price | $16/mo+ (free tier is limited, one-time) | Free (500 req/week recurring) |
| Open Source | AGPL — hosted service has additional proprietary layers | AGPL-3.0, fully open — server, CLI, SDKs |
| MCP Tools | ~5 tools | 7 tools |
| Stealth / Anti-bot | Cloud only | Built-in (28 domain configs), self-hostable |
| Quick Answer (Q&A) | ✗ No | ✓ Yes (LLM-free, confidence score) |
| YouTube Transcripts | ✗ No | ✓ Yes (no API key needed) |
| Hotel Search | ✗ No | ✓ Yes (multi-source, merged results) |
| Budget Mode | ✗ No | ✓ Yes (83% token reduction) |
| Self-hosting | Limited (some features cloud-only) | Full — docker compose up |
| No API key for CLI/MCP | ✗ Required | ✓ Works without key (25 req/hr anonymous) |
| GitHub Stars | 84.8K ⭐ | Growing ⭐ — help us out |
API compatibility
WebPeel supports Firecrawl-compatible endpoints at /v1/scrape and /v1/crawl. For most use cases, switching is a single URL change:
Supported Firecrawl-compatible fields:
POST /v1/scrape—url,formats(markdown, html, rawHtml, screenshot, links, json),onlyMainContent,waitFor,actionsPOST /v1/crawl—url,limit,maxDepth,includePaths,excludePathsGET /v1/crawl/:jobId— job status pollingPOST /v2/scrape— v2 scrape endpoint
/v1/fetch offers additional parameters like budget, focus, stealth, and more. We recommend using the native API for new integrations — see the API Reference.
Code examples
REST API
curl -X POST https://api.firecrawl.dev/v1/scrape \
-H "Authorization: Bearer fc-YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"formats": ["markdown"]
}'
curl -X POST https://api.webpeel.dev/v1/scrape \
-H "Authorization: Bearer wp_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com",
"formats": ["markdown"]
}'
The response shape is identical. No other changes needed for basic scraping.
MCP server config (Claude Desktop)
{
"mcpServers": {
"firecrawl": {
"command": "npx",
"args": ["-y", "firecrawl-mcp"],
"env": {
"FIRECRAWL_API_KEY": "fc-YOUR_KEY"
}
}
}
}
{
"mcpServers": {
"webpeel": {
"command": "npx",
"args": ["-y", "webpeel", "mcp"]
}
}
}
No API key is required to use the WebPeel MCP server. You get 25 anonymous requests per hour, or sign up free for 500/week.
Prefer a remote URL (no install, always up-to-date)?
{
"mcpServers": {
"webpeel": {
"url": "https://api.webpeel.dev/v2/mcp"
}
}
}
Node.js library
import FirecrawlApp from '@mendable/firecrawl-js';
const app = new FirecrawlApp({
apiKey: 'fc-YOUR_KEY'
});
const result = await app.scrapeUrl(
'https://example.com',
{ formats: ['markdown'] }
);
console.log(result.markdown);
import { peel } from 'webpeel';
// No API key required for basic usage
const result = await peel('https://example.com');
console.log(result.content); // markdown
Install WebPeel: npm install webpeel
For API-key authenticated requests with the full client:
import { WebPeel } from 'webpeel';
const client = new WebPeel({ apiKey: 'wp_YOUR_KEY' });
const result = await client.scrape('https://example.com', {
formats: ['markdown'],
budget: 4000, // Token budget (WebPeel-specific)
stealth: true, // Built-in stealth mode
});
console.log(result.markdown);
Python SDK
from firecrawl import FirecrawlApp
app = FirecrawlApp(api_key="fc-YOUR_KEY")
result = app.scrape_url(
"https://example.com",
params={"formats": ["markdown"]}
)
print(result["markdown"])
from webpeel import WebPeel
client = WebPeel(api_key="wp_YOUR_KEY")
result = client.scrape("https://example.com")
print(result.content) # markdown
Install: pip install webpeel
What's different (and new)
WebPeel does everything Firecrawl does, plus a few things it doesn't:
Budget mode — token-efficient fetching
Pass budget=4000 to get any page distilled to ~4K tokens. Content density pruning removes sidebars, footers, navigation, and ads automatically. On a Wikipedia page, this reduced 99,427 tokens to 3,867 — a 96% reduction.
# REST API
curl "https://api.webpeel.dev/v1/fetch?url=https://en.wikipedia.org/wiki/AI&budget=4000"
# CLI
npx webpeel https://en.wikipedia.org/wiki/AI --budget 4000
LLM-free quick answers
Ask factual questions from any web page without sending content to an LLM. Uses BM25 retrieval + heuristic answer extraction with a confidence score.
curl -X POST https://api.webpeel.dev/v1/answer \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/pricing",
"question": "What is the monthly price?"
}'
Domain extractors (stealth built-in)
28 domain-specific extractors handle sites that typically require anti-bot bypasses: Amazon, Reddit, LinkedIn, Twitter/X, GitHub, Hacker News, Yelp, Booking.com, and more. These work on self-hosted instances too — no cloud requirement.
npx webpeel https://www.amazon.com/dp/B08N5WRWNW --schema amazon --json
YouTube transcripts
Extract full transcripts from YouTube videos — no YouTube API key required.
npx webpeel https://www.youtube.com/watch?v=dQw4w9WgXcQ
Hotel search
Multi-source hotel search with merged and sorted results — a unique capability not available in other web fetching tools.
npx webpeel hotels "Paris" --checkin 2026-04-01 --checkout 2026-04-05 --sort price
Step-by-step migration
In your environment config, swap https://api.firecrawl.dev for https://api.webpeel.dev. Your existing Firecrawl API calls will work as-is against /v1/scrape and /v1/crawl.
Sign up at app.webpeel.dev for 500 free requests/week. For basic testing, anonymous access gives 25 requests/hour with no signup.
WebPeel API keys start with wp_live_. Update any env vars — e.g. FIRECRAWL_API_KEY → WEBPEEL_API_KEY. If your client hardcodes the key prefix, update that too.
If you're using the Firecrawl SDK, you can keep using it with the base URL override, or migrate to the WebPeel SDK for access to native features like budget mode and stealth.
npm install webpeel # Node.js
pip install webpeel # Python
Replace the Firecrawl MCP config with the WebPeel config shown above. WebPeel has 7 MCP tools vs. Firecrawl's ~5.
Self-hosting
Unlike Firecrawl, all WebPeel features (including stealth mode and domain extractors) work in self-hosted deployments.
# Clone and start
git clone https://github.com/webpeel/webpeel
cd webpeel
docker compose up
See the Self-Hosting guide for environment variables, database setup, and production configuration.
Next steps
- API Reference — full parameter docs for WebPeel's native API
- MCP Server — all 7 MCP tools documented
- LLM-Free Q&A — how the answer endpoint works
- Node.js & Python SDKs — full SDK reference
- Self-Hosting — run WebPeel on your own infrastructure
- GitHub — source code, issues, contributions