Migrating from Firecrawl
SuperScraper exposes the same core endpoints with Firecrawl-compatible request shapes, so most existing code ports directly. Swap the base URL and key; the rest of your call sites are unchanged.
- const client = new Firecrawl({ apiKey: process.env.FIRECRAWL_KEY });
+ const client = new Firecrawl({
+ apiKey: process.env.SUPERSCRAPER_KEY,
+ apiUrl: "https://api.superscraper.dev",
+ });
// the rest of your code is unchanged
const { data } = await client.scrape("https://example.com");This mirrors apps/web's /migrate page (opens in a new tab), kept in sync with the same endpoint mapping and capability comparison, in docs form. Only claim compatibility where it's actually true; the gaps below are called out, not hidden.
Endpoint mapping
| Firecrawl | SuperScraper | Notes |
|---|---|---|
POST /v1/scrape | POST /v1/scrape | Same formats & actions |
POST /v1/crawl | POST /v1/crawl | Include/exclude paths + webhook |
GET /v1/crawl/:id | GET /v1/jobs/:id | Job status, different path, same idea |
POST /v1/map | POST /v1/map | |
POST /v1/extract | POST /v1/extract | Schema-based |
POST /v1/batch/scrape | POST /v1/batch | |
screenshot (a formats value) | POST /v1/screenshot | We also ship it as a dedicated endpoint |
POST /v1/search | POST /v1/search |
Core endpoints
| Capability | SuperScraper | Firecrawl |
|---|---|---|
| Scrape (markdown / HTML / links / JSON / screenshot) | Yes | Yes |
| Crawl with include/exclude paths + webhook | Yes | Yes |
| Map / URL discovery | Yes | Yes |
| Batch (sync ≤100 + async) | Yes | Yes |
| Schema-based extract (single + multi-URL) | Yes | Yes |
| Dedicated screenshot endpoint | Yes | Partial (Firecrawl ships it as a format) |
| Browser actions (click/scroll/write/press/wait) | Yes | Yes |
| Search + scrape | Yes | Yes |
Output & extraction
| Capability | SuperScraper | Firecrawl |
|---|---|---|
| Clean, LLM-ready markdown | Yes | Yes |
| Content shaping (main-only / include-exclude tags) | Yes | Yes |
| Free JSON-LD / Open Graph extraction | Yes | Partial (where a site ships structured data) |
| Confidence score on extracted JSON | Yes | No |
| llms.txt generation | Yes | Yes |
Operations
| Capability | SuperScraper | Firecrawl |
|---|---|---|
| Automatic stealth-browser escalation | Yes | Yes |
| Proxy rotation handled for you | Yes | Yes |
| Per-domain cheapest-path cache | Yes | No |
| Never billed for failed scrapes | Yes | Partial |
Distribution
| Capability | SuperScraper | Firecrawl |
|---|---|---|
| Node + Python SDKs | Yes | Yes |
| CLI | Yes | Yes |
| MCP server | Yes | Yes |
| Compatible request shapes | Yes | Yes |
| Long-tail language SDKs (Go/Rust/Java/…) | No (on the backlog) | Yes |
Performance
96.3% anti-bot pass rate (26 of 27 protected sites), measured 2026-06-23 against a public anti-bot test suite, with no paid proxies. We haven't re-run Firecrawl's stack head-to-head, so this isn't a side-by-side number, see the full methodology and reproduce script on the benchmark page (apps/web /benchmarks, scripts/benchmark-antibot.mjs).
Pricing
Our tiers sit below Firecrawl at the same credit volumes, and structured extraction that Firecrawl bills for is free here (JSON-LD / Open Graph). See Pricing for the full ladder.
What doesn't map 1:1
GET /v1/crawl/:idbecomesGET /v1/jobs/:id, different path, same job-status shape.- Confidence (
_confidence) and provenance (_extraction_method,_provenance) fields exist on SuperScraper's/v1/scrapeand/v1/extractresponses and have no Firecrawl equivalent, see Extract. - Long-tail language SDKs beyond Node/Python (Go, Rust, Java) aren't published yet, call the REST API directly in the meantime.