Migrating from Firecrawl Cloud to ZapFetch in under 10 minutes
Swap base URL, swap the API key, ship. A three-step migration path for Firecrawl Cloud users.
If you're already running against Firecrawl Cloud (api.firecrawl.dev),
migrating to ZapFetch takes three changes and no code refactoring. ZapFetch
is wire-compatible with both the /v1/* and /v2/* Firecrawl endpoints.
Why migrate?
- USD billing, metered by usage. No commits, no minimums, no surprise overages; every response tells you how many credits remain.
- Same SDKs, same schemas. You keep using
firecrawl-pyand@mendable/firecrawl-js. No vendor-specific client, no lock-in. - Both v1 and v2 endpoints supported. Whichever version your current Firecrawl SDK talks, ZapFetch accepts it — no pinning required.
Step 1 — Get a ZapFetch API key
- Sign in to the ZapFetch Console with GitHub, Google, or email.
- Open Dashboard → API keys.
- Click Create key. Copy the UUID API key — it's shown once.
ZapFetch API keys are UUID strings, not fc- prefixed Firecrawl Cloud keys.
If your existing config validates the fc- prefix, relax that validation
before switching traffic.
Step 2 — Swap the base URL
Point your SDK or HTTP client at https://api.zapfetch.com.
curl
- curl -X POST https://api.firecrawl.dev/v1/scrape \
+ curl -X POST https://api.zapfetch.com/v1/scrape \
-H "Authorization: Bearer YOUR_ZAPFETCH_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com", "formats": ["markdown"] }'Python
from firecrawl import FirecrawlApp
- app = FirecrawlApp(api_key="YOUR_ZAPFETCH_API_KEY")
+ app = FirecrawlApp(
+ api_key="YOUR_ZAPFETCH_API_KEY",
+ api_url="https://api.zapfetch.com",
+ )Node.js
import FirecrawlApp from "@mendable/firecrawl-js";
- const app = new FirecrawlApp({ apiKey: "YOUR_ZAPFETCH_API_KEY" });
+ const app = new FirecrawlApp({
+ apiKey: "YOUR_ZAPFETCH_API_KEY",
+ apiUrl: "https://api.zapfetch.com",
+ });Step 3 — Replace the API key
Swap your Firecrawl key for the ZapFetch key from Step 1. If you store it in an environment variable, you're done — only the value changes.
- FIRECRAWL_API_KEY=firecrawl-key-here
+ FIRECRAWL_API_KEY=zapfetch-uuid-key-hereSmoke test
Run one scrape to confirm the migration:
curl -X POST https://api.zapfetch.com/v1/scrape \
-H "Authorization: Bearer $FIRECRAWL_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://example.com", "formats": ["markdown"] }'Expected: HTTP 200 with a data.markdown field, and a credit-usage chunk
in the response envelope.
FAQ
Feature parity
Both /v1/* and /v2/* endpoints — scrape, crawl, search, map,
extract — are fully supported. Request and response schemas match. If you
hit a behavioral difference, it is a bug — file it on the Console.
Pricing
ZapFetch is credit-based in USD. The current plans are outlined on
Billing and on the pricing page. Pricing is subject to
change; the source of truth is console.zapfetch.com/dashboard/billing.
Rate limits
See Rate limits. Defaults are generous for Free and
scale with paid plans. 429 responses include Retry-After.
Can I run both in parallel?
Yes — your Firecrawl Cloud key keeps working on api.firecrawl.dev, and
your ZapFetch key works on api.zapfetch.com. Migrate traffic gradually
if you prefer.