<!-- twin of https://specstream.ai/migrate/firecrawl-deep-research -->
# Firecrawl deep research ends Dec 10, 2026: where each field goes

Compared on Nov 13, 2026. The page: https://specstream.ai/migrate/firecrawl-deep-research

Firecrawl removes `/v1/deep-research` on Thursday, December 10, 2026, at 15:00 UTC. After that every request fails with HTTP `410 Gone`. Firecrawl's replacement is `/v2/agent`, where the report and the sources are fields you add to a schema.

SpecStream is the live web data engine for teams and agents. `POST /v1/research` takes the same question and returns a written report with the page behind each cited sentence, at $0.10, $0.30 or $1.00 a report.

[Get an API key](https://specstream.ai/signup?src=alternatives-migrate-firecrawl-deep-research&utm_source=alternatives-md&utm_campaign=migrate-firecrawl-deep-research&returnTo=%2Fworkspace%2Fsearch%3Froute%3Dfirecrawl-deep-research) New accounts get $10 of credit, no card. It covers 100 quick reports or 33 standard reports.

## Every deep research field, on SpecStream and on /v2/agent

| | SpecStream | Firecrawl v1 deep research | Firecrawl /v2/agent |
|---|---|---|---|
| After Dec 10, 2026 | `POST /v1/research` answers, on the same key as the Search API and the Extract API | Removed at 15:00 UTC. Every request fails with HTTP `410 Gone` | The replacement Firecrawl names. Needs the latest SDK and a rewrite of each call |
| The call | `POST https://api.specstream.ai/v1/research`, then `GET /v1/research/{id}` | `POST /v1/deep-research`, then `GET /v1/deep-research/{id}` | `POST /v2/agent`, then `GET /v2/agent/{id}` |
| The question | `input`, up to 15,000 characters. Put your `systemPrompt` and `analysisPrompt` text in it | `query`, with `systemPrompt` and `analysisPrompt` beside it | `prompt`. Firecrawl's guide says to merge `query`, `systemPrompt` and `analysisPrompt` into one prompt |
| How far it reads | `depth`: `quick`, `standard` (the default) or `deep`. About one minute, four minutes and five minutes | `maxDepth` 1 to 10 (default 7), `timeLimit` 30 to 300 seconds (default 270), `maxUrls` 1 to 1,000 (default 20) | `maxDepth` and `timeLimit` have no equivalent. `maxUrls` becomes `maxCredits`, a spend cap that defaults to 2,500. There is no page limit |
| The report | `report.content`, on every report, with `[1]` markers. `length` is `short`, `standard` or `long` | `data.finalAnalysis` | `data.report`, after you add a `report` string to `schema` |
| The sources | `report.sources` lists every page read. `report.citations` gives each cited sentence its page, read time and passage | `data.sources`: `url`, `title`, `description` and `icon` for each | `data.sources`, after you add a `sources` array to `schema` |
| Progress | `GET /v1/research/{id}/events`, server-sent events that resume with `Last-Event-ID`, or a `webhook` | `data.activities` and the `onActivity` callback | `GET /v2/agent/{id}/trace`, or a webhook |
| JSON in place of text | `"output": {"type": "json", "schema": {...}}` | `jsonOptions.schema` | `schema` |
| Price | $0.10 quick, $0.30 standard, $1.00 deep, shown as `price_usd` in the reply to the `POST`. Taken once, when the report is delivered. A cancelled report is not charged | 1 credit for each URL analyzed | 5 daily runs free, then usage-based pricing. AI credits are billed at 2× in a zero data retention run |
| When a run stops early | `POST /v1/research/{id}/cancel` stops it at no charge. `402` before the start when the balance does not hold the price | `status` is `processing`, `completed` or `failed` | A run that reaches `maxCredits` reports `failed` with `stopReason` `credit_limit_reached`. `data` is set on completed runs only |

## Why deep research users move to SpecStream

### What ends on December 10

Firecrawl's docs mark the v1 deep research API as deprecated and give one date for its removal: Thursday, December 10, 2026, 15:00 UTC. From that minute `POST /v1/deep-research` and `GET /v1/deep-research/{id}` return `410 Gone`. The SDK methods `deepResearch`, `asyncDeepResearch` and `checkDeepResearchStatus` (in Python `deep_research`, `async_deep_research` and `check_deep_research_status`) call those two paths, so they stop at the same time. Firecrawl tells no-code users on n8n, Zapier and Make to update the Firecrawl node or app.

### The report and its sources come back without a schema

Deep research returned `finalAnalysis` and `sources` on every run. On `/v2/agent` both are fields you write into `schema` yourself: a required `report` string and a required `sources` array of `{ url, title }` objects. A SpecStream research report holds both on every run. `report.content` is the text, `report.sources` lists every page read, and `report.citations` ties each cited sentence to its page, the time it was read and the passage that supports it. Your reader can check a sentence against the passage without opening the whole page.

### You know the price before the report starts

Deep research charged 1 credit for each URL analyzed, so `maxUrls` set the most a run could cost. `/v2/agent` replaces it with `maxCredits`, default 2,500, and a run that reaches the cap reports `failed`. A SpecStream report has three prices: $0.10 for `quick`, $0.30 for `standard` and $1.00 for `deep`. The reply to the `POST` shows the price as `price_usd`, the balance pays it once when the report is delivered, and a cancelled report costs nothing. See [pricing](https://specstream.ai/pricing?utm_source=alternatives&utm_campaign=migrate-firecrawl-deep-research).

### The rest of your Firecrawl code moves on the same key

SpecStream also answers Firecrawl's own `/v1/scrape`, `/v1/search`, `/v1/map` and `/v1/crawl` at `https://api.specstream.ai/firecrawl`, in v1's JSON. A search costs $0.001 for up to 10 results and a page $0.0008, from the same balance as the reports. The [Firecrawl v1 migration page](https://specstream.ai/migrate/firecrawl-v1?utm_source=alternatives&utm_campaign=migrate-firecrawl-deep-research) lists each field.

## Other Firecrawl deep research alternatives

### Firecrawl /v2/agent

SpecStream returns a cited report for $0.10, $0.30 or $1.00, and the other three options price as follows. `/v2/agent` is the path Firecrawl names: one `prompt`, an optional `schema` and a `maxCredits` cap that defaults to 2,500. Five runs a day are free, and usage-based pricing applies after that. The report and the sources exist when your schema asks for them. On SpecStream they are part of every report, at a price shown before the run.

### Your own loop on Firecrawl search

Firecrawl's second suggestion is to build the research loop yourself on its Search API, at 2 credits per 10 results plus the scrape cost of each page you read. You write the planning, the reading, the synthesis and the citations, and you pay for the model that writes the report. SpecStream does that work inside one call and bills one price for the finished report.

### Exa deep search

Exa answers a research question through `/search` with `type: "deep"` at $12 per 1,000 requests, or the older `deep-reasoning` type at $15 per 1,000 requests. The result is a search response. SpecStream returns a written report of the length you choose, with the passage behind each cited sentence.

### Parallel Task API

Parallel prices a task run by processor, per 1,000 runs: 5 for `lite`, 300 for `ultra` and 2,400 for `ultra8x`, which is $0.005, $0.30 and $2.40 a run. You pick the processor for each task. SpecStream has three depths, and the deepest report costs $1.00.

## How to migrate, step by step

1. Find every deep research call: `deepResearch`, `asyncDeepResearch` and `checkDeepResearchStatus` in Node, `deep_research`, `async_deep_research` and `check_deep_research_status` in Python, and raw calls to `/v1/deep-research`.

2. Create a key under Agents & API in the workspace. New accounts get $10 of credit, no card.

3. Start the report. `query` becomes `input`, and `maxDepth`, `timeLimit` and `maxUrls` become one `depth`. The reply is `202` with the report's `id` and its `price_usd`.

```
curl -X POST https://api.specstream.ai/v1/research \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"input": "What are the latest developments in quantum computing?", "depth": "standard"}'
```

4. Read it until `status` is `completed`, as you did with `GET /v1/deep-research/{id}`. `report.content` takes the place of `data.finalAnalysis`, and `report.sources` the place of `data.sources`.

```
curl https://api.specstream.ai/v1/research/REPORT_ID \
  -H "Authorization: Bearer $SPECSTREAM_API_KEY"
```

5. If you used `onActivity`, follow `GET /v1/research/{id}/events` or pass `"webhook": {"url": "https://..."}`. If you used `jsonOptions.schema`, send the same JSON Schema as `"output": {"type": "json", "schema": {...}}`.

6. Send an `Idempotency-Key` header on the `POST` so a retry returns the same report and is charged once. The [research report docs](https://specstream.ai/docs/research?utm_source=alternatives&utm_campaign=migrate-firecrawl-deep-research) list every field and error.

An agent can run the same report over MCP at `https://api.specstream.ai/mcp`: `research_price` shows the price of each depth, `start_research` starts the report once the person who pays approves that price, and `get_research` reads it. The [MCP guide](https://specstream.ai/docs/mcp?utm_source=alternatives&utm_campaign=migrate-firecrawl-deep-research) has the setup for each client.

## Frequently asked questions

### When does Firecrawl deep research shut down?

On Thursday, December 10, 2026, at 15:00 UTC. After that every `/v1/deep-research` request fails with HTTP `410 Gone`, including the SDK methods `deepResearch` and `deep_research`.

### What replaces Firecrawl's /v1/deep-research?

Firecrawl names `/v2/agent`, or your own research loop on its Search API. On `/v2/agent` you add a `report` string and a `sources` array to `schema` to get back what `finalAnalysis` and `sources` held. SpecStream's `POST /v1/research` returns both on every report.

### What is the best Firecrawl deep research alternative?

SpecStream, for a team that wants the same shape of call: one question in, a written report with its sources out, for $0.10, $0.30 or $1.00. The report takes about one minute at `quick`, four at `standard` and five at `deep`.

### How much did Firecrawl deep research cost, and what does SpecStream cost?

Firecrawl billed 1 credit for each URL analyzed, up to the `maxUrls` you set, 20 by default. SpecStream bills $0.10 for a quick report, $0.30 for a standard report and $1.00 for a deep report, once, when the report is delivered.

### Do maxDepth, timeLimit and maxUrls have an equivalent?

On SpecStream the three become one field, `depth`, with the values `quick`, `standard` and `deep`. On Firecrawl `/v2/agent`, `maxDepth` and `timeLimit` are removed with no equivalent and `maxUrls` becomes `maxCredits`.

### Can I get JSON in place of a text report?

Yes. Send `"output": {"type": "json", "schema": {...}}` with a JSON Schema, the same schema you passed as `jsonOptions.schema`. The price stays $0.10, $0.30 or $1.00 by depth.

### Can I limit the sites a report reads?

Yes. `include_domains` and `exclude_domains` choose the sites for a report, at the same $0.10, $0.30 or $1.00.

## Sources

SpecStream wrote this page. Each rival figure comes from that company's own page.

- [Firecrawl: Migrating from Deep Research](https://docs.firecrawl.dev/migrating-from-deep-research.md), read Nov 13, 2026
- [Firecrawl: Deep Research (legacy v1)](https://docs.firecrawl.dev/features/alpha/deep-research.md), read Nov 13, 2026
- [Firecrawl: Agent](https://docs.firecrawl.dev/features/agent.md), read Nov 13, 2026
- [Firecrawl: Billing](https://docs.firecrawl.dev/billing.md), read Nov 13, 2026
- [Exa pricing](https://exa.ai/docs/admin/pricing.md), read Nov 13, 2026
- [Parallel pricing](https://docs.parallel.ai/getting-started/pricing.md), read Nov 13, 2026
