By the fastCRW team · Benchmark and feature claims verified 2026-05-29 · Verify independently.
What is agentic search?
Agentic search is a retrieval pattern where an LLM agent queries the live web at reasoning time — not at index time — and reads the actual page content before deciding what to do next. The search call is an action the agent takes mid-thought, the same way it would call a function or run code. Each result can reshape the next query: a stale doc surfaced in step one becomes the reason the agent reformulates and searches again in step two.
That single property — retrieval happening inside the reasoning loop rather than as a frozen preprocessing step — is what separates agentic search from both classic search APIs and from retrieval-augmented generation (RAG) over a vector store. It is also why the underlying tool matters so much: if the search-and-read call is slow, unreliable, or returns raw HTML the agent has to clean, the whole loop stalls.
Disclosure: we build fastCRW, a Firecrawl-compatible, open-core (AGPL-3.0) scrape/crawl/map/search engine. This post explains the pattern in general, then maps it onto the specific primitive we provide — a fast /v1/search endpoint with per-call content extraction. We are honest below about the parts of an agent harness we do not ship.
Agentic search vs RAG vs classic search
The three patterns are often conflated. They retrieve from fundamentally different places, and the right production agent frequently uses more than one.
| Dimension | Classic search API | RAG (vector store) | Agentic search |
|---|---|---|---|
| Data source | Live web index | Pre-indexed embeddings | Live web, read in full |
| Freshness | Current | Snapshot from last ingestion | Current at query time |
| What it returns | Titles + snippets | Chunked embeddings | Full page content the agent reads |
| Who decides what to fetch | Caller, once | Pipeline author, in advance | The agent, mid-reasoning |
| Discovery | Open web, no read | Bounded by what was ingested | Open-ended; pages never seen before |
| Best for | One-shot lookups | Internal docs, stable reference | Real-time signals, content you don't control |
RAG is the right layer for content you own and update deliberately: internal documentation, support articles, proprietary data. Its weakness is structural — the index reflects the corpus as it existed on the last ingestion run, and someone had to decide in advance what was worth embedding. Anything that changed since, or anything no one anticipated, is invisible.
A classic search API solves freshness but stops at snippets. The agent gets a ranked list of URLs and short blurbs, then has to fetch and parse each page itself — a second call, an HTML-cleaning step, and a place for the loop to break.
Agentic search collapses those two steps. The agent issues a query, gets back clean, full-page content from the live results, and reasons over it immediately. The retrieval strategy is not committed up front; it emerges as the agent learns what it needs. If you want the deeper RAG-versus-search trade-off for production pipelines, we cover it in building a web context layer for AI agents and choosing RAG tools.
Why cached results are not enough for live signals
Picture an agent that can only read a cached index as a researcher who can only read last year's newspapers. The corpus was seeded on a fixed day; anything after that day does not exist for the agent. A competitor's price change, a new CVE, a framework's breaking release — all unknown.
The failure mode is quiet and compounding. A coding agent reading documentation that was deprecated three versions ago will confidently recommend a removed method, ship it, and move on to the next file built on the same stale assumption. Nobody gets an error; you get a slowly accumulating pile of wrong decisions. For any signal that moves on a short cycle, live retrieval is the only method that guarantees freshness without you engineering a separate refresh job on top of a vector store.
Concrete cases where the live read is the whole point:
- Competitive intelligence. "How do we compare to vendor X on price?" requires the agent to fetch X's current pricing page, not a quarter-old embedding of it.
- Dependency and security monitoring. Querying current CVE feeds, GitHub issues, and changelog entries to decide whether a patch is needed.
- Open-web research. Reading the latest papers or release notes, where the relevant document may not have existed at your last ingestion run.
Anatomy of a reasoning-time search loop
An agentic search loop is mechanically simple. The intelligence is in the conditionals, not the plumbing:
- Decide to search. A lightweight intent check routes a query to the live web (changing/open content) or to the vector store (owned, stable content). This is the routing layer that keeps you from paying live-search latency for questions a cached index answers fine.
- Formulate the query from the current reasoning context, not a fixed template.
- Search and read in one call — get ranked results and clean page content back, so there is no separate scrape step to fail.
- Evaluate. Is the content fresh, on-topic, and sufficient? If a result is a deprecated doc, reformulate (for example, append a year or "alternatives") and loop.
- Synthesize or repeat until the agent has enough to answer — or concludes the answer is not findable.
Step 3 is the load-bearing one, and it is where the search tool's quality is felt. If each iteration costs two round trips and an HTML parse, a three-hop loop becomes painfully slow. The whole appeal of agentic search depends on retrieval being a single fast call the agent can afford to make repeatedly.
Building the search-and-read primitive
fastCRW provides exactly that primitive: a Firecrawl-compatible /v1/search that runs a web search and can scrape each result in the same request, returning LLM-ready markdown. You point the standard Firecrawl SDK at fastCRW by swapping the base URL — no rewrite.
from firecrawl import Firecrawl
# Point the Firecrawl SDK at fastCRW — one line
client = Firecrawl(api_key="YOUR_KEY", api_url="https://api.fastcrw.com")
# One call: search + per-result content extraction
results = client.search(
"langchain memory module breaking changes 2026",
limit=5,
scrape_options={"formats": ["markdown"]},
)
# Each result carries full markdown the agent reads inline —
# no second fetch, no HTML cleaning step.
On latency, the relevant number is from our search benchmark, which is separate from our scrape benchmark and self-consistent: fastCRW search averaged 880 ms over a 100-query, 10-category run, with a 785 ms median and 73 of 100 latency wins against two other providers (source: benchmarks/triple-bench.ts, single point-in-time run). That is a latency budget a multi-hop reasoning loop can actually afford to spend several times. The 100-query success rate in that run was 100%.
Search billing is straightforward: 1 credit per query. If you want the agent to get a synthesized answer or per-result summaries, /v1/search supports answer: true / summarizeResults: true. Answer and extraction run on fastCRW's managed LLM on paid plans, with no key required — metered in credits based on usage and capped at 8,000 credits per request. LLM features require a paid plan. Exact numbers live on /pricing. For the search-for-agents angle specifically, see our search API for AI agents guide and choosing a web search API for AI agents.
Where fastCRW is the retrieval primitive, not the agent
This is the honest boundary, and it matters for your architecture decision. fastCRW gives the agent a fast, scriptable search-and-read call. It does not ship a full autonomous research harness:
- No
/v1/agentand no Spark-style models. fastCRW does not run the reasoning loop for you — your framework (LangGraph, the OpenAI Agents SDK, CrewAI, your own code) owns the loop and calls fastCRW as a tool. - Research is a primitive, not a turnkey report.
/v1/search/research/papersfans out to arXiv, OpenAlex, and Semantic Scholar and posts the highest ArXivQA recall of any tool we've benchmarked (61.0% vs. Firecrawl's 53.3%) — but it returns structured sources for your loop to synthesize, not a single "ask one question, get a finished report" call. - Stateless per request. There is no persistent session or server-side memory; the agent (or your framework) carries state across hops.
- LLM extraction runs on the managed LLM for structured JSON extraction on paid plans (the same managed LLM powers the search-answer path). Screenshots are supported on the v2 scrape API (a
screenshotformat request returnsdata.screenshotas a base64 PNG data URL), and anti-bot handling — 12-signal block detection, UA rotation, stealth fingerprints, residential-proxy egress — ships natively in the open core.
If you are building the agent yourself and want the fast, self-hostable retrieval call inside your loop — plus a native research fan-out to lean on — that is precisely what fastCRW is for. To wire the loop, browser-driven tool use is covered in browser automation for AI agents.
When NOT to use agentic search
Live retrieval is not free and not always right. Reach for something else when:
- The content is yours and stable. Internal docs, product specs, and support articles belong in a vector store. Paying per-query live-search latency and credits to re-read content you control is waste.
- Latency is non-negotiable and the answer is static. An open-web hop adds round-trip time. If a cached answer is correct, route to it.
- You need a fully autonomous research agent out of the box. As noted above, fastCRW gives the primitive, not the harness — build the reasoning loop in your own framework and call fastCRW's search and research endpoints as tools.
- The signal is high-frequency structured data. For data that changes by the second on a known endpoint, a direct API or a scheduled crawl into a RAG pipeline may beat re-searching every time.
The production answer is usually both: a fast intent check routes owned/stable queries to RAG and open/changing queries to agentic search. Get the routing layer right and you pay for live retrieval only when freshness is the actual requirement.
Sources
- fastCRW search benchmark — 100 queries, 10 categories, single run: average 880 ms, 785 ms median, 73/100 latency wins, 100% success (
benchmarks/triple-bench.ts). See /benchmarks. - fastCRW endpoints and credit costs, in the OSS repo github.com/us/crw.
- Pricing (Free = 500 one-time credits): /pricing.
Related: Search API for AI agents · Web search API for AI agents · Browser automation for AI agents · Web context layer for AI agents
