Written 10 November 2026. Last checked against Cloudflare's documentation: 11 November 2026.
What is Cloudflare Web Search?
The Cloudflare Web Search API gives an application web search through Cloudflare's AI Gateway. You send a query and name a provider, and Cloudflare forwards the query to that provider and returns its results in one format. There are three providers: Ceramic.ai, which is the default, Exa and Linkup (Providers). It launched as an open beta on 2 October 2026.
Its case is consolidation. Search runs through the same gateway as your model calls, so it shares their logs, billing and access controls, and you pay each engine's list price with no markup.
What is Jevlin?
Jevlin gives an agent web search through one API, in two ways. SuperSearch is the default: one query goes to several engines at once, and one list comes back in which each page appears once and names the engines that found it. Or you can name a single engine and Jevlin sends the query there alone, which is what a web search router does.
Either way, the response is a receipt: every engine asked, whether it answered, how many results it returned and how long it took. For coding agents, each search is also tied to the session and turn that asked.
Cloudflare sends your query to one engine and logs it beside your model calls. Jevlin asks several engines, merges the results, and records what each engine did.
Features
| Cloudflare Web Search API | Jevlin | |
|---|---|---|
| Status | Open beta since 2 October 2026 | Live |
| One call does this | Sends the query to one engine and returns its list | SuperSearch: sends the query to several engines and returns one merged list |
| Engines | Ceramic.ai (default), Exa, Linkup | balanced: Exa, Brave, Parallel, Perplexity. max adds Serper, TinyFish, and Telem's two indexes, Ceramic and Seltz |
| Who picks the engine | You, with one provider value. In the Agents tool, your application picks and the model cannot | Nobody on SuperSearch. You, when you name providers |
| One engine only | Yes. This is the product | Yes, by naming one engine in providers |
| Several engines, merged | Not offered. You make one call per engine and merge them yourself | Included. Each page appears once and names the engines that found it |
| When an engine fails | No engine fallback documented. The Agents tool tells the model to retry or continue | The other engines still answer. The failed one is named with its status |
| Request options | query, provider, limit (1 to 10), a stored-key alias, a gateway id | query, tier, recency, domain_filter, max_results (1 to 25), providers, view |
| Each result carries | URL, title, description, optional image and date | URL, title, excerpt, and found_by: every engine that returned the page and its rank |
| The response also carries | The query, a request id, latency | Each engine asked with its status, result count and latency; the cost of the search; a request id |
| A written answer | No | No. Both return sources |
| Your own engine keys | Yes. Store a key on the gateway and the engine bills you | No |
| Price | Each engine's list price with no markup: $0.25, $5 or $7 per 1,000 requests. A 5% fee applies to credit purchases | $1.30 per 1,000 fast searches on the two-index default ($5.30 on the three-index preset), about $22 per 1,000 balanced, each engine's own price with no markup |
| Free use | None documented | $10 of credit for the first 30 days, then $2 of credit every week, half of it for search; invites add $1 a week each for 12 weeks. |
| Getting started | A Cloudflare account, a gateway, an API token, and credits or a stored key | jevlin setup mints a key with no browser. A person claims it later |
| Engine data retention | Labelled per engine on the Providers page | Not labelled per engine |
Sources for the Cloudflare column: overview, Providers, How to use, the Agents tool and Unified Billing. For Jevlin: Request options, Providers and tiers and Pricing.
Three rows deserve a sentence each.
Several engines. On Cloudflare, asking three engines means three calls, three charges and a merge you write, and the response does not name the provider or give a rank for merging. On Jevlin it is one call.
Price. Cloudflare is cheaper for a single engine. Its default engine costs $0.25 per 1,000 requests, and it adds no markup to any of the three. A Jevlin balanced search pays four engines.
Your own keys. Cloudflare lets you bring a key you already hold with an engine. Jevlin does not.
Observability
Cloudflare's observability lives in AI Gateway. It is wide: one place for every model call and every search, with costs, spend limits, User Insights, log classification and OpenTelemetry export. Jevlin's is narrow and deep: it records searches only, and it records each one engine by engine and in the place it held in the agent's work.
| Cloudflare AI Gateway | Jevlin | |
|---|---|---|
| What is recorded | Every model call and every search that passes through the gateway | Searches only. Model calls are not recorded |
| Unit of record | One log row per request | A search, inside a turn, inside a session |
| What a search record holds | The general log fields. Search-specific fields are not listed in the docs | The query and tier; each engine with its status, result count and latency; the cost; which engines found each page |
| Session and turn | Custom metadata, up to five entries per request. Session counts appear in User Insights | Session, turn and call ids from the agent hooks, hashed before they leave the machine. A subagent names its parent |
| Replaying a session | Not in the gateway's log viewer. Available in Agents tracing for agents that run on Workers, or in your own OpenTelemetry backend | The trajectory view: each turn in order, with every search in its place |
| Why the agent searched | Visible when the model call also goes through the gateway | The assistant's text from just before the search, where the agent's hook can supply it |
| Cost tracking | Estimated from tokens for model calls. Spend limits by provider, model or metadata | Metered engine cost on every search. Spend caps per day, week and month |
| Per-user insight | User Insights: spend and usage by identity, with unusual sessions flagged | None |
| Automatic labelling | Log classification by task and by model fit, in beta | None |
| Export | OpenTelemetry spans for model requests, Logpush, GraphQL analytics | None documented |
| Disabling storage | Per gateway or per request | Zero retention per project, or JEVLIN_TRACE=off on the machine |
Where Cloudflare is ahead: it sees the whole agent. Model calls and searches share one log, one budget and one set of access rules, and the logs leave through OpenTelemetry and Logpush to tools you already use. Jevlin sees nothing but search and has no export.
Where Jevlin is ahead: it explains a single search. You can see which engines were asked, which one found the page the agent used, what the search cost, and what the agent had just written when it decided to search. Cloudflare's docs say a search appears in the gateway logs beside model calls. They do not list search-specific fields, and they do not say whether a search can carry a session or turn, so we make no claim either way.
Agent integration
Cloudflare
There are three ways to call it (How to use):
- REST, from any backend, with a Cloudflare API token.
- The Workers AI binding,
env.AI.websearch(), from a Worker. - The Agents SDK
web_searchtool, with adapters for Pi Durable, the AI SDK and TanStack AI (Agents tool).
The Agents tool is built for agents you write and deploy. Your application fixes the provider, the gateway and the result limit, and the model supplies only the query. Reading a page is a separate web_fetch tool. Cloudflare has announced search as a built-in server tool inside model calls, and it has not shipped yet.
The fullest picture of an agent's run comes from Agents tracing, which requires the agent to run on Workers.
Jevlin
Jevlin starts from the agents developers already run on their own machines. One command sets up each coding agent it finds:
npm install -g @jevlinsearch/jevlin
jevlin setup
The agent then searches by running a command, which the installed skill teaches it; a host that prefers MCP runs jevlin mcp, a local MCP server over stdio with the same search, fetch and decide as tools. There is no hosted MCP endpoint. The hooks are what attach the session and turn to each search, and they differ by agent because each agent exposes different things:
| Agent | What jevlin setup installs | What each search carries |
|---|---|---|
| Claude Code | A skill and five hooks | Session, turn, and the assistant's text before the search |
| Cursor | A skill and eight hooks, for the editor and the Agent CLI | Session, turn, and the assistant's text before the search |
| opencode | A plugin | Session, turn, and the assistant's text before the search |
| Pi | A skill and an extension | Session, turn, and the assistant's text before the search |
| Codex | A skill, a permission profile and five hooks | Session and turn ids |
| Hermes | A skill and one hook | Session and turn ids |
| Your own agent | Nothing. Use the AI SDK tool or call the HTTP API | The search alone, with no session |
What each agent sends, and how to switch it off, is on What leaves the machine. For an agent you are building, the AI SDK tool adds SuperSearch in one line, and the HTTP API works from any language.
The difference in one sentence: Cloudflare integrates with the agent you deploy on its platform, and Jevlin integrates with the coding agent already open on your laptop.
Which one fits
Choose Cloudflare Web Search when your agent already runs on Workers or behind AI Gateway, you want one bill, one budget and one log for models and search, one engine per query is enough, or you want to bring your own engine keys.
Choose Jevlin when you want several engines asked on every search, you want to see which engines found each page, your agent is Claude Code, Cursor, Codex, opencode, Pi or Hermes, or you want each search placed in the session and turn that made it.
They are not exclusive. An agent can send its model calls through AI Gateway and its searches to Jevlin.
Questions
Is Jevlin an alternative to Cloudflare Web Search?
For search, yes. Both give an agent web search through one API and one key. They differ in what a call does: Cloudflare sends the query to one engine, and Jevlin's SuperSearch sends it to several and merges the results. Jevlin does not replace AI Gateway for model traffic.
Can Cloudflare Web Search query several engines at once?
Not in one call. As documented on 10 November 2026, each request names one provider, and Ceramic.ai is the default. To ask several engines you make one call for each and merge the lists yourself.
Does Jevlin work with agents that do not run on Cloudflare Workers?
Yes. Jevlin installs into Claude Code, Cursor, Codex, opencode, Pi and Hermes on your own machine, and any other agent can use the AI SDK tool or the HTTP API.
Does either product write an answer?
No. Both return search results for the model to read.
Can I use both?
Yes. An agent can send its model calls through AI Gateway and its searches to Jevlin. The model calls are then logged by Cloudflare and the searches by Jevlin.
Which engines do both offer?
Exa and Ceramic are the engines in both line-ups today.
Sources
Cloudflare's pages were read on 10 November 2026: the Web Search overview, Providers and How to use; the AI Gateway pages on logging, legacy logs, log classification, User Insights, costs and OpenTelemetry; and the Agents web search tool.
Disclaimer
Jevlin wrote this post and competes with Cloudflare Web Search. It compares documentation, not results: we did not call Cloudflare's API, and nothing here says which product finds better pages. Where Cloudflare's documentation is silent we say so and do not treat silence as absence. Cloudflare Web Search is a beta, so its providers, prices and tools may have changed since the date above, and Cloudflare's own pages are the authority. If something here is wrong, tell us and we will correct it.