Migrate in minutes
Already on Firecrawl? Swap the base URL, keep your code.
SuperScraper speaks the same core endpoints and shapes, so most code ports directly. Point your client at us and you are running. Below is the endpoint mapping and a straight, ground-truthed comparison. Where we are thinner, we say so.
The whole migration
- const client = new Firecrawl({ apiKey: process.env.FIRECRAWL_KEY });
+ const client = new Firecrawl({
+ apiKey: process.env.SUPERSCRAPER_KEY,
+ apiUrl: "https://superscraper-production-1381.up.railway.app",
+ });
// the rest of your code is unchanged
const { data } = await client.scrape("https://example.com");Same call sites, same response shapes. Just a new base URL and key.
Endpoint mapping
| Firecrawl | SuperScraper |
|---|---|
| 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) |
| POST /v1/map | POST /v1/map |
| POST /v1/extract | POST /v1/extract(schema-based) |
| POST /v1/batch/scrape | POST /v1/batch |
| screenshot (format) | POST /v1/screenshot(also a dedicated endpoint) |
| POST /v1/search | POST /v1/search |
Core endpoints
| Capability | SuperScraper | Firecrawl |
|---|---|---|
| Scrape (markdown / HTML / links / JSON / screenshot) | ||
| Crawl with include/exclude paths + webhook | ||
| Map / URL discovery | ||
| Batch (sync ≤100 + async) | ||
| Schema-based extract (single + multi-URL) | ||
| Dedicated screenshot endpoint(Firecrawl ships it as a format) | ||
| Browser actions (click/scroll/write/press/wait) | ||
| Search + scrape |
Output & extraction
| Capability | SuperScraper | Firecrawl |
|---|---|---|
| Clean, LLM-ready markdown | ||
| Content shaping (main-only / include-exclude tags) | ||
| Free JSON-LD / Open Graph extraction(where a site ships structured data) | ||
| Confidence score on extracted JSON | ||
| llms.txt generation |
Operations
| Capability | SuperScraper | Firecrawl |
|---|---|---|
| Automatic stealth-browser escalation | ||
| Proxy rotation handled for you | ||
| Per-domain cheapest-path cache | ||
| Never billed for failed scrapes |
Distribution
| Capability | SuperScraper | Firecrawl |
|---|---|---|
| Node + Python SDKs(in progress, not published) | ||
| CLI(in progress, not published) | ||
| Plain REST + bearer auth | ||
| MCP server | ||
| Compatible request shapes | ||
| Long-tail language SDKs (Go/Rust/Java/…)(on our backlog) |
Performance
Measured 2026-06-23| Metric | SuperScraper | Firecrawl |
|---|---|---|
| Median scrape latency (p50) | 2.17s | we have not measured this |
| Anti-bot pass rate, 27 live sites | 96.3% (26/27) | we have not measured this |
| Paid-proxy spend on that run | $0 | we have not measured this |
Our numbers come from one dated run against 27 live sites on 2026-06-23. The script and the raw per-site rows are published, so you can re-run it: see the method and what it does not prove. The Firecrawl column is empty because we have not benchmarked their stack. We will not put a number there until we do.
Full support Partial Not available