<!-- twin of https://specstream.ai/migrate/firecrawl-v1 -->
# Firecrawl v1 compatible: change the address

Compared on Nov 10, 2026. The page: https://specstream.ai/migrate/firecrawl-v1

Since November 10, 2026 SpecStream answers Firecrawl's v1 API, `/v1/scrape`, `/v1/search`, `/v1/map` and `/v1/crawl`, in v1's own JSON. A search costs $0.005 for up to 10 results and a page $0.0008, from a balance, with no monthly plan.

The switch is one line: `V1FirecrawlApp(api_key=KEY, api_url="https://api.specstream.ai/firecrawl")` in place of `V1FirecrawlApp(api_key="fc-...")`. The v1 paths, the crawl's `next` and your parser stay.

The SpecStream Search API scores 97.9 F-score on SimpleQA Verified and the Extract API 0.908 F1 on WCXB. A new account gets $10 of credit, no card.

[Get an API key](https://specstream.ai/signup?src=alternatives-migrate-firecrawl-v1&utm_source=alternatives-md&utm_campaign=migrate-firecrawl-v1&returnTo=%2Fworkspace%2Fsearch%3Froute%3Dfirecrawl_v1) New accounts get $10 of credit, no card. It covers 2,000 searches.

## Firecrawl v1 to SpecStream, parameter by parameter and field by field

| | SpecStream | Firecrawl v1 |
|---|---|---|
| Address | `https://api.specstream.ai/firecrawl`, then `/v1/scrape`, `/v1/search`, `/v1/map` and `/v1/crawl` | `https://api.firecrawl.dev/v1`, then `/scrape`, `/search`, `/map` and `/crawl` |
| The key | A SpecStream key as `Authorization: Bearer` | A Firecrawl key as a Bearer token |
| Scrape | `url` and `formats` with `markdown`, `html`, `rawHtml` and `links` applied. The site's own status in `metadata.statusCode` | `url`, `formats` (default `markdown`) and page options. 1 credit a page |
| Search | `query`, `limit`, `tbs`, `lang`, `country`, `site:` and `scrapeOptions.formats` applied. Up to 10 results $0.005 | `query`, `limit` (default 5, up to 100), `tbs`, `scrapeOptions`. 2 credits per 10 results |
| Map | `url`, `limit`, `search`, `sitemapOnly`, `ignoreSitemap`, `includeSubdomains` and `ignoreQueryParameters` applied. `links` as strings | The same parameters, `limit` default 5,000. 1 credit a call |
| Crawl | `url`, `limit`, `maxDepth`, `maxDiscoveryDepth`, `includePaths` and `scrapeOptions.formats` applied. Up to 500 pages a job | The same parameters, `limit` defaults to 10,000. 1 credit a page |
| Errors | Firecrawl's own: `404` for an unknown crawl id, `401` for a wrong key. A busy call gets `429` with `Retry-After` and is not charged | `402` payment required, `429` request rate limit exceeded, `500` |
| Price | $0.005 a search, $0.80 per 1,000 pages, from a balance. $19 pays for 3,800 searches or 23,750 pages | Hobby $19 a month for 5,000 credits. Standard $99 a month for 100,000 |
| Free to start | $10 of credit, no card, which covers 2,000 searches or 12,500 pages | 1,000 free credits a month, no card |

## The Firecrawl v1 reference, on SpecStream

### The call, before and after

```
# Before
curl https://api.firecrawl.dev/v1/search \
  -H "Authorization: Bearer $FIRECRAWL_API_KEY" -H "Content-Type: application/json" \
  -d '{"query": "web scraping history", "limit": 5}'

# After
curl https://api.specstream.ai/firecrawl/v1/search \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"query": "web scraping history", "limit": 5}'
```

The reply is v1's: `success` and `data[]`, each result with `url`, `title`, `description`, and `markdown` when `scrapeOptions.formats` asks for it.

With firecrawl-py 4.55.0 the change is one line: `V1FirecrawlApp(api_key=KEY, api_url="https://api.specstream.ai/firecrawl")`. The client keeps the address's path and calls `/firecrawl/v1/...`, so `scrape_url`, `search`, `map_url`, `async_crawl_url`, `check_crawl_status` and `cancel_crawl` run as before.

### What the route reads, and what it refuses

Scrape, applied: `url` and `formats` with `markdown`, `html`, `rawHtml` and `links`. A page the site answers `404` comes back with `metadata.statusCode` 404, as on Firecrawl.

Search, applied: `query`, `limit`, operators such as `site:`, `tbs` such as `qdr:w`, `lang` and `country`, and `scrapeOptions.formats` with `markdown` for the page text of each result.

Map, applied: `url`, `limit`, `search`, `sitemapOnly`, `ignoreSitemap`, `includeSubdomains` and `ignoreQueryParameters` (on by default). Crawl, applied: `url`, `limit`, `maxDepth`, `maxDiscoveryDepth`, `includePaths` and `scrapeOptions.formats`, up to 500 pages a job, with the status read and `DELETE` to cancel.

Refused, in Firecrawl's own status and body: an unknown crawl id gets `404` and a wrong key gets `401`. Every parameter was measured on production on Nov 10, 2026, and the full [pass table](https://specstream.ai/specstream/dialects/firecrawl_v1.md) lists each one and its result.

### Every field that comes back

A scrape returns `data` with `markdown`, `html`, `rawHtml`, `links` and `metadata` (`title`, `sourceURL`, `statusCode`, `error`). A search returns `success` and `data[]` with `url`, `title`, `description`, `markdown` and `metadata`. A map returns `links` as strings. A crawl status read returns `success`, `status`, `total`, `completed`, `creditsUsed`, `expiresAt`, `next` and `data[]`.

The route does not return `screenshot`, `metadata.description` or `metadata.language` on a scrape.

### One price a search, one price a page

On Firecrawl a search is 2 credits per 10 results and a page or a map 1 credit, from a monthly plan: Hobby is $19 for 5,000 credits. On SpecStream a search of up to 10 results costs $0.005, each started block of 10 more adds $0.006, a page costs $0.0008 and a page that gives no text costs nothing. A busy call gets `429` with `Retry-After` and charges nothing. Credit you buy never expires.

### Speed, measured on production

On November 9, 2026 the fast search every drop-in route uses had a median of 0.82 s at 1 search a second and 1.07 s at 20 a second, and answered 718 of 720 calls. There is no limit per key and no daily limit.

### Scored on the official benchmarks

The SpecStream Search API scores 97.9 F-score on all 1,000 SimpleQA Verified questions, 978 of them correct, and 64.0 item F1 and 43.4 row F1 on all 200 WideSearch tasks. The Extract API scores 0.908 F1 on WCXB. Every score and its method is on the [benchmarks](https://specstream.ai/benchmarks?utm_source=alternatives&utm_campaign=migrate-firecrawl-v1) page.

### You decide what is kept, on each key

Create the key with `zero_retention` and a call made with it keeps no request text and no answer after the reply. `spend_cap_cents` is the most the key can spend.

```
curl -X POST https://api.specstream.ai/v1/account/keys \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" -H "Content-Type: application/json" \
  -d '{"name": "production", "scopes": ["account:read", "finds:spend"], "spend_cap_cents": 500000, "zero_retention": true}'
```

### Pages, search and rows on one key

The same address answers Firecrawl's v2 calls too, so a client can move to `/v2` with no new key. The key reads up to 20 pages or documents a call with the [Extract API](https://specstream.ai/extract-api?utm_source=alternatives&utm_campaign=migrate-firecrawl-v1). [Deep Search](https://specstream.ai/deep-search?utm_source=alternatives&utm_campaign=migrate-firecrawl-v1) returns every match for a request in plain words as structured rows, at 5¢, 15¢ or $1 a row, with a source URL on every value. The full comparison is on the [Firecrawl migration](https://specstream.ai/migrate/firecrawl?utm_source=alternatives&utm_campaign=migrate-firecrawl-v1) page.

## What else Firecrawl v1 users price

### Firecrawl v2

Firecrawl's newer API, on the same credits: Hobby is $19 a month for 5,000 credits. SpecStream answers v2's search, scrape, map and crawl at the same address, `https://api.specstream.ai/firecrawl`.

### Tavily

Search and extract billed in credits at $0.008 a credit on pay as you go. SpecStream answers Tavily's call at `https://api.specstream.ai/tavily` at $0.005 a search.

### Exa

A search API from $4 per 1,000 requests, with page contents at $1 per 1,000 pages. SpecStream answers Exa's own call at `https://api.specstream.ai/exa` and reads pages at $0.80 per 1,000.

### Serper

Google results as JSON, in credit packs from $1.00 per 1,000 that are valid for 6 months. SpecStream answers Serper's call at `https://api.specstream.ai/serper`, reads the pages too, and its credit never expires.

## How to migrate, step by step

1. Create a key under Agents & API in the workspace. A new account gets $10 of credit, no card, which covers 2,000 searches.

2. Set the address to `https://api.specstream.ai/firecrawl` where your code has `https://api.firecrawl.dev`, and send the SpecStream key as the Bearer token. A scrape in Python:

```
import requests

BASE = "https://api.specstream.ai/firecrawl"  # was https://api.firecrawl.dev

reply = requests.post(
    f"{BASE}/v1/scrape",
    headers={"Authorization": f"Bearer {SPECSTREAM_KEY}"},
    json={"url": "https://en.wikipedia.org/wiki/Web_scraping", "formats": ["markdown", "links"]},
    timeout=60,
)
reply.raise_for_status()
data = reply.json()["data"]
print(data["metadata"]["statusCode"], len(data["markdown"]), len(data["links"]))
```

3. A map in JavaScript:

```
const reply = await fetch("https://api.specstream.ai/firecrawl/v1/map", {
  method: "POST",
  headers: { Authorization: `Bearer ${process.env.SPECSTREAM_KEY}`, "Content-Type": "application/json" },
  body: JSON.stringify({ url: "https://quotes.toscrape.com/", search: "einstein", limit: 20 }),
});
const { links } = await reply.json();
console.log(links);
```

4. Read `429` as a call to send again after `Retry-After`. It is not charged.

## Frequently asked questions

### Is there a Firecrawl v1 compatible API?

Yes. Since Nov 10, 2026 SpecStream answers Firecrawl's `/v1/scrape`, `/v1/search`, `/v1/map` and `/v1/crawl` at `https://api.specstream.ai/firecrawl` in v1's JSON, as measured on production. A search costs $0.005.

### How do I migrate from Firecrawl v1?

Change one address: `https://api.firecrawl.dev` becomes `https://api.specstream.ai/firecrawl`, and a SpecStream key goes in the Bearer token. The v1 paths and bodies stay as they are.

### How much does Firecrawl cost?

Hobby is $19 a month for 5,000 credits, a page or a map is 1 credit and a search 2 credits per 10 results. SpecStream costs $0.005 a search and $0.80 per 1,000 pages with no plan, and its credit never expires.

### Does the Firecrawl Python SDK's v1 client work with SpecStream?

Yes. `V1FirecrawlApp` in firecrawl-py 4.55.0 works with `api_url="https://api.specstream.ai/firecrawl"`, as tested on production on Nov 10, 2026: scrape, search, map, crawl, status and cancel.

### Do I have to move from v1 to v2 first?

No. SpecStream answers v1 and v2 at the same address since Nov 10, 2026, so v1 code runs as it is and v2 code runs beside it on the same key.

### Which Firecrawl v1 fields does SpecStream not return?

`screenshot`, `metadata.description` and `metadata.language` on a scrape. A crawl job reads up to 500 pages. Every other field a v1 client reads comes back.

## Sources

SpecStream wrote this page. Each Firecrawl figure comes from Firecrawl's own pages, and each other provider's figure from that company's own page. The route's behavior comes from its code and the pass table measured on production.

- [Firecrawl pricing](https://www.firecrawl.dev/pricing), read Nov 10, 2026
- [Firecrawl v1 scrape](https://docs.firecrawl.dev/api-reference/v1-endpoint/scrape), read Nov 10, 2026
- [Firecrawl v1 search](https://docs.firecrawl.dev/api-reference/v1-endpoint/search), read Nov 10, 2026
- [Firecrawl v1 crawl](https://docs.firecrawl.dev/api-reference/v1-endpoint/crawl-post), read Nov 10, 2026
- [SpecStream Firecrawl v1 pass table](https://specstream.ai/specstream/dialects/firecrawl_v1.md), read Nov 10, 2026
- [Tavily pricing](https://tavily.com/pricing), read Nov 10, 2026
- [Exa pricing](https://exa.ai/docs/admin/pricing.md), read Nov 10, 2026
- [Serper](https://serper.dev/), read Nov 10, 2026
- [SpecStream benchmarks](https://specstream.ai/benchmarks), read Nov 10, 2026
- [SpecStream for agents](https://specstream.ai/agents.md), read Nov 10, 2026
