firecrawl-deploy-integration
SKILL.md
Firecrawl Deploy Integration
Overview
Deploy applications using Firecrawl's web scraping API (api.firecrawl.dev) to production. Covers API key management, webhook endpoint deployment for async crawl results, and self-hosted Firecrawl deployment options using Docker.
Prerequisites
- Firecrawl API key stored in
FIRECRAWL_API_KEYenvironment variable - Application using
@mendable/firecrawl-jsSDK - Platform CLI installed (vercel, docker, or gcloud)
- Webhook endpoint for async crawl results
Instructions
Step 1: Configure Secrets
# Vercel
vercel env add FIRECRAWL_API_KEY production
# Cloud Run
echo -n "your-key" | gcloud secrets create firecrawl-api-key --data-file=-
Step 2: Deploy Scraping API
// api/scrape.ts
import FirecrawlApp from "@mendable/firecrawl-js";
const firecrawl = new FirecrawlApp({
apiKey: process.env.FIRECRAWL_API_KEY!,
});
export async function POST(req: Request) {
const { url, formats } = await req.json();
const result = await firecrawl.scrapeUrl(url, {
formats: formats || ["markdown"],
});
return Response.json({
markdown: result.markdown,
metadata: result.metadata,
});
}
Step 3: Self-Hosted Firecrawl (Docker)
# docker-compose.yml
version: "3.8"
services:
firecrawl:
image: mendableai/firecrawl:latest
ports:
- "3002:3002" # 3002 = configured value
environment:
- REDIS_URL=redis://redis:6379 # 6379: Redis port
- PLAYWRIGHT_BROWSERS_PATH=/browsers
depends_on:
- redis
redis:
image: redis:7-alpine
ports:
- "6379:6379" # Redis port
app:
build: .
ports:
- "3000:3000" # 3000: 3 seconds in ms
environment:
- FIRECRAWL_API_URL=http://firecrawl:3002
depends_on:
- firecrawl
Step 4: Webhook Endpoint for Async Crawls
// api/webhooks/firecrawl.ts
export async function POST(req: Request) {
const { type, id, data } = await req.json();
if (type === "crawl.completed") {
await processScrapedPages(id, data.pages);
}
return Response.json({ received: true });
}
Step 5: Health Check
export async function GET() {
try {
const result = await firecrawl.scrapeUrl("https://example.com", {
formats: ["markdown"],
});
return Response.json({ status: result ? "healthy" : "degraded" });
} catch {
return Response.json({ status: "unhealthy" }, { status: 503 }); # HTTP 503 Service Unavailable
}
}
Error Handling
| Issue | Cause | Solution |
|---|---|---|
| Rate limited | Too many scrape requests | Queue requests with delays |
| Scrape blocked | Target site protection | Use waitFor and browser options |
| API key invalid | Key expired | Regenerate at firecrawl.dev dashboard |
| Self-hosted memory | Playwright overhead | Increase container memory to 2GB+ |
Examples
Basic usage: Apply firecrawl deploy integration to a standard project setup with default configuration options.
Advanced scenario: Customize firecrawl deploy integration for production environments with multiple constraints and team-specific requirements.
Resources
Next Steps
For webhook handling, see firecrawl-webhooks-events.
Output
- Configuration files or code changes applied to the project
- Validation report confirming correct implementation
- Summary of changes made and their rationale
Weekly Installs
13
Repository
jeremylongshore…s-skillsGitHub Stars
1.6K
First Seen
Feb 18, 2026
Security Audits
Installed on
mcpjam13
claude-code13
replit13
junie13
windsurf13
zencoder13