Migrate from Firecrawl
FairCrawl is intentionally close to the Firecrawl mental model, but the request shapes are cleaner and the runtime defaults are different.
High-level mapping
| Firecrawl | FairCrawl |
|---|---|
https://api.firecrawl.dev/v2 | https://api.faircompany.ai/v1 |
formats: ["markdown"] | format: "markdown" |
onlyMainContent | only_main_content |
includeSubdomains | include_subdomains |
sitemap: "only" | sitemap_only: true |
async /crawl job start + polling | synchronous POST /v1/crawl/web/crawl |
/agent prompt | /agent instruction |
/agent schema | /agent json_schema |
| credits budgeting | budget_usd in USD |
Scrape rewrite
POST https://api.firecrawl.dev/v2/scrape POST https://api.faircompany.ai/v1/crawl/web/scrape
{ "url": "https://stripe.com/pricing", "formats": ["markdown"], "onlyMainContent": true "format": "markdown", "only_main_content": true}Map rewrite
POST https://api.firecrawl.dev/v2/map POST https://api.faircompany.ai/v1/crawl/map
{ "url": "https://docs.stripe.com", "limit": 100, "includeSubdomains": true, "sitemap": "only" "include_subdomains": true, "sitemap_only": true}Crawl rewrite
Firecrawl’s crawl flow starts a job and then polls it. FairCrawl’s current /web/crawl path returns the completed page set directly.
POST https://api.firecrawl.dev/v2/crawl POST https://api.faircompany.ai/v1/crawl/web/crawl
{ "url": "https://docs.python.org/3/index.html", "limit": 50, "deduplicateSimilarURLs": true, "regexOnFullURL": "pricing|billing"}Agent rewrite
POST https://api.firecrawl.dev/v2/agent POST https://api.faircompany.ai/v1/crawl/agent
{ "prompt": "Compare Stripe and Adyen pricing", "schema": { "type": "object" }, "maxCredits": 50 "instruction": "Compare Stripe and Adyen pricing", "response_format": "json", "json_schema": { "type": "object" }, "budget_usd": 0.05}Find-and-replace checklist
- Replace
formatswith a singleformat. - Convert camelCase body keys to the snake_case fields FairCrawl exposes publicly.
- Remove Firecrawl crawl polling code and treat FairCrawl
/web/crawlas a direct response. - Swap agent
promptforinstructionand schemaschemaforjson_schema. - Keep platform-specific Firecrawl code behind source-filtered
/researchor direct FairCrawl typed routes, depending on the use case.