By the fastCRW team · Pricing/features verified 2026-05-29 · Verify independently before buying.
Disclosure: We build fastCRW, and the most important fact for this article is one we'll state up front: fastCRW does not have a managed deep research API. There is no /v1/deep-research endpoint and no autonomous research agent you can call in one request. So this is a comparison of managed deep research APIs where we are honest about our own gap — and then show you how to build the same multi-step research loop yourself on fastCRW's search, crawl, and scrape primitives, cheaper and self-hostable.
What a deep research API actually does
A deep research API is a managed service that takes a natural-language question and autonomously runs the whole research loop for you: it plans sub-queries, searches the web, follows links, reads the pages, and synthesizes a cited answer or a structured object — all in a single API call. That is the difference from a plain search API, which returns links and snippets and stops. A deep research API keeps going until it has an answer.
For developers building an AI research agent, the capabilities that matter are:
- Autonomous multi-step navigation — it searches and follows leads without you supplying every URL.
- Structured output — predictable JSON matching a schema, not just prose, so it slots into a pipeline.
- Citations — every claim carries the source URL so you can build an audit trail.
- Iterative refinement — broad pass, then targeted follow-ups based on what the first pass found.
- Predictable cost — autonomous loops can fan out unboundedly, so you need a ceiling.
The last two are where the "buy a managed API" path quietly gets expensive — and where building the loop yourself wins back control. We'll get there. First, the managed options.
Comparison of managed deep research APIs
Here are the managed services developers actually evaluate for agentic research. We've grouped them by what they really do, because several marketed as "deep research" are search-grounding tools wearing the label.
| Service | Truly autonomous? | Structured output | Citations | Pricing shape |
|---|---|---|---|---|
| Agent / research endpoints (e.g. Firecrawl Agent, OpenAI/Anthropic research) | Yes — plans + iterates | Native schema (Pydantic/Zod) on some | Yes | Dynamic / token-metered |
| Perplexity Sonar | Yes (Pro tier multi-step) | Markdown summaries, weak schema control | Inline | Per-request + per-token |
| Tavily | No — you provide queries | JSON with summaries | Yes | Per-request |
| Exa | No (semantic discovery + Find Similar) | Basic JSON / snippets | Yes | Variable credits |
| fastCRW | No managed loop — you compose primitives | JSON via formats: ["json"] + schema | Source URLs preserved per result | Flat per-page credits; self-host = $0 |
Two honest observations from that table. First, only a couple of these are genuinely autonomous deep research — most are excellent search APIs that you still have to orchestrate. Second, the truly autonomous ones tend to bill on dynamic or token-metered models, which means the cost of a research run is hard to predict before you run it. That is the trade-off you're buying: convenience for cost opacity.
Where managed deep research APIs genuinely win
A vendor-authored comparison that pretends the alternatives have no advantages isn't useful, so plainly:
- Zero orchestration. One call, one answer. No loop to write, no planner to tune, no failure modes to handle. For a prototype, that is a real day-one advantage.
- Purpose-built reasoning models. Some research endpoints ship models tuned specifically for web navigation and extraction; you don't have to pick or prompt one.
- Anti-bot reach. The hosted research stacks usually carry heavier anti-bot machinery than fastCRW's open-core engine. If your targets fight back hard, that matters.
fastCRW has none of these as a single endpoint. If "describe it in English, get a cited report back in one call" is the requirement, a managed deep research API is the right tool and you should use one.
Build vs buy: composing your own research loop on fastCRW
Now the part that suits an open-core, primitives-first stack. A deep research API is not magic — it's a loop over three primitives that fastCRW already exposes through its Firecrawl-compatible REST surface:
/v1/search— web search via a self-hosted search backend, optionally scraping result content in the same call (1 credit per query)./v1/crawl— async BFS crawl of a site when one source has the whole answer (1 credit per page)./v1/scrape— one URL to clean markdown or, withformats: ["json"]+ ajsonSchema, to structured data (1 credit; 5 for JSON extraction).
Wire those into a plan → search → scrape → synthesize loop and you have a deep research agent. The synthesis step is a call to your own LLM (or fastCRW Cloud's managed search-answer mode). We wrote the whole thing up step by step in our deep research agent tutorial — that's the canonical reference; this section is the architecture summary.
The search-plan-scrape-synthesize pattern
The loop that every deep research API runs internally, expressed as primitives you control:
- Plan. Ask your LLM to decompose the question into 3–6 sub-queries. This is the only "reasoning" step and it's cheap.
- Search. Run each sub-query through
/v1/search. You get ranked results back; cap the breadth here to bound cost — this is the knob a managed API hides from you. - Scrape. Pull full content for the top N results with
/v1/scrape(markdown for synthesis, orformats: ["json"]when you need typed fields). fastCRW preserves the source URL on every result, so citations fall out for free. - Synthesize. Feed the gathered content plus source URLs to your LLM and ask for a cited answer or a schema-shaped object. fastCRW Cloud can also do this leg for you via
/v1/searchwithanswer: true. - Refine (optional). If the synthesis flags gaps, generate follow-up queries and loop back to step 2 with a depth limit.
Here's the inner search-and-scrape step against fastCRW using the Firecrawl-compatible SDK — note the single line that points it at fastCRW instead:
from firecrawl import Firecrawl
# One line is the entire migration: point the SDK at fastCRW
app = Firecrawl(api_key="YOUR_KEY", api_url="https://api.fastcrw.com")
def gather(sub_query, top_n=5):
hits = app.search(query=sub_query, limit=top_n)
sources = []
for hit in hits["data"][:top_n]:
page = app.scrape(url=hit["url"], formats=["markdown"])
sources.append({"url": hit["url"], "content": page["markdown"]})
return sources # url + content = ready to cite
Wrap gather() in the plan/synthesize/refine loop above and you have built the thing a deep research API sells. You can also let fastCRW Cloud handle synthesis directly: /v1/search supports answer: true and summarizeResults: true, available on paid plans using a managed LLM (the FREE plan has no LLM features), source:verified 2026-05-29. That collapses search + synthesize into one call while leaving the planning and depth control in your hands.
Cost and control trade-offs
The build-it-yourself argument is mostly an economics and control argument, so here it is concretely.
Cost. A self-hosted fastCRW engine is AGPL-3.0 — the search, crawl, and scrape primitives cost $0 per 1,000 calls; you pay only for your own server (it's a single ~8 MB static Rust binary, one container, runs on a $5 VPS — structural facts, not benchmarks). The only metered cost in a self-hosted loop is your LLM tokens for the plan and synthesize steps, which you're paying either way. A managed deep research API's dynamic/token pricing, by contrast, makes a single research run's cost a function of how far the agent decided to wander — which you don't control and can't quote to your finance team in advance. On fastCRW Cloud, where you do use credits, managed synthesis is capped at 8,000 credits per request (SEARCH_RESERVE_HARD_CAP_CREDITS, verified 2026-05-29) and tiers are transparent on /pricing — Free is 500 one-time credits, with the paid tiers above it.
Control. When you own the loop, every knob is yours: breadth per sub-query, scrape depth, recursion limit, which LLM does synthesis, when to stop. A managed deep research API makes those decisions for you, which is the whole point of buying one — until the day its choices don't match your latency budget or your accuracy bar.
Accuracy of the gathering step. The synthesis is only as good as the content you feed it, so the scrape primitive's quality matters. On Firecrawl's own public scrape-content-dataset-v1, fastCRW posted the highest truth-recall of three tools tested — 63.74% of 819 labeled URLs (diagnose_3way.py, 2026-05-08), ahead of 59.95% and 56.04% — with a p50 latency of 1914 ms. We also report the full tail: in fast mode, fastCRW's p90 is 4348 ms, the lowest of the three (Crawl4AI 4754 ms, Firecrawl 6937 ms), because the chrome-stealth fallback that recovers hard pages resolves them rather than abandoning them. For the search leg specifically, fastCRW averaged 880 ms over a 100-query benchmark (triple-bench.ts, single run) with 73 of 100 latency wins. Numbers and method are on /benchmarks; measure on your own URL mix before quoting them.
Privacy. A managed deep research API egresses your queries and the fetched content to a vendor. A self-hosted fastCRW loop keeps both target URLs and scraped content on your infrastructure — which for regulated research workloads is not a preference but a gating requirement. fastCRW respects robots.txt by default; override only where you have the legal right.
When a managed deep research API is worth it
Buy the managed loop when:
- You're prototyping and want a cited answer this afternoon, not a loop to maintain.
- Your research questions are open-ended enough that hand-tuning a planner isn't worth it.
- You depend on the heavy anti-bot reach of a hosted research stack against sites that fight scraping.
- Per-run cost opacity is acceptable because volume is low.
Build it on fastCRW primitives when:
- You need a hard cost ceiling — self-host and the per-call cost floors at your server price.
- Research content or queries can't leave your infrastructure.
- Volume is high enough that dynamic per-run pricing becomes the binding cost.
- You want to own the depth, breadth, and stopping logic instead of inheriting a vendor's defaults.
- You value the escape hatch: the same loop runs on fastCRW Cloud or self-hosted, and the SDK swap to or from Firecrawl is one line.
The honest bottom line: fastCRW is not a deep research API and we won't pretend otherwise. What it is, is the set of primitives a deep research API is built from — with a cost floor a managed metered service structurally cannot offer, and a one-line swap that keeps the decision reversible. If you'd rather buy the loop, use a managed endpoint and don't feel bad about it. If you'd rather own it, start from the deep research agent tutorial and the primitives below.
Sources
- fastCRW canonical facts (benchmarks, credits, API surface, gaps): verified 2026-05-29 against the OSS README and
diagnose_3way.pyrun (2026-05-08). - fastCRW repo and live pricing: github.com/us/crw · /pricing · /benchmarks
- Search and scrape benchmarks:
benchmarks/triple-bench.ts(100 queries, single run) andbench/server-runs/RESULT_3WAY_1000_FULL.md(819 labeled URLs).
Related: Build a deep research agent on fastCRW · Build a Perplexity-style answer engine · Search API for AI agents · Best RAG tools
