firecrawl-py==4.32.1. BeeCrawl keeps the request and response shape familiar,
but it is a self-hosted service: you own the API host, browser engine, worker,
database, and provider configuration.
The compatibility matrix is the source of truth for route coverage and
intentional differences. Check it before migrating less common options.
1. Run BeeCrawl
For a synchronous scrape, start the API:http://127.0.0.1:8000. For a deployed instance, use
that deployment’s API URL instead.
2. Change the API base URL
The smallest migration is to point the Firecrawl client at BeeCrawl. The official Python SDK can be smoke-tested with the same client initialization:success envelope. BeeCrawl
rejects unsupported fields and behavior-changing values with a JSON 400
instead of silently accepting an option and ignoring it.
3. Keep authentication consistent
Authentication remains optional when the BeeCrawl API has no key configured. When it is enabled, send the key using one of the headers already accepted by the compatibility layer:BEECRAWL_WEB_EXTRACT_API_KEY or
WEB_EXTRACT_API_KEY. Keep the key in your existing Firecrawl client secret
configuration; do not put it in source control.
Route mapping
See the full compatibility matrix for status,
limits, and provider-dependent behavior.
Behavior to verify before cutover
- Async infrastructure: crawl and batch status are persisted in Postgres and processed by a worker. A single API process is not enough for production async workloads.
- Browser infrastructure: browser rendering and browser sessions run in
Bee Engine. Install Chromium and configure
BEE_ENGINE_MAX_PAGESfor the expected concurrency. - Search providers: search quality and source availability depend on the configured SearXNG, DuckDuckGo, Bing, or image/news provider path.
- LLM extraction: deterministic extraction is the default. Configure an OpenAI-compatible provider only for model-backed JSON, answer, or highlight enrichment.
- Hosted account APIs: hosted Firecrawl usage, billing, and account routes are intentionally outside BeeCrawl’s self-hosted contract.
- Unsupported options: values such as
mobile=trueandfastMode=trueare rejected explicitly when BeeCrawl cannot preserve their semantics.
Validate the migration
With the API running, execute the pinned official SDK contract check:POST /v2/crawl or POST /v2/batch/scrape and poll its returned status URL.
For a browser smoke test, start Bee Engine and request useBrowser: true or a
browser action through POST /v2/scrape.
After the compatibility check passes, move application traffic to the BeeCrawl
base URL and keep the compatibility matrix
alongside the deployment runbook.