Cloudflare Web Search API: providers, pricing, and the 28x gap

Kurnia Kharisma
Written by

Kurnia Kharisma

Katelin Teen
Reviewed by

Katelin Teen

Last edited October 8, 2026

Expert Verified
Hand-drawn illustration of a robot agent holding a magnifying glass, sending a query into a Cloudflare switchboard that routes it to three different search providers

What the Cloudflare Web Search API actually is

The pitch in the launch post by Michelle Chen, Sam Else, and Gabriel Massadas starts with a fun admission. When an agent needs a live page, it usually guesses the URL and curls it, which is why you see so many 404s in agent logs. Web search gives the agent a real starting point: send a query, get a list of results, feed them into the model.

The Cloudflare Web Search API overview page, showing the open beta label and the one-call pitch, as taken from the Cloudflare docs
The Cloudflare Web Search API overview page, showing the open beta label and the one-call pitch, as taken from the Cloudflare docs

Under the hood it is a routing layer, not a search engine. Cloudflare's About page lists four steps for every request:

  1. Route the request through the AI Gateway you name.
  2. Forward the query to the provider you chose, or to Ceramic.ai if you did not choose.
  3. Normalize the response into one format: URL, title, and an optional description, image, favicon, and last-modified date.
  4. Log the request and bill it to your account.

That is the whole product today, and I mean that as a compliment. If you already run model calls through AI Gateway, search now shows up in the same logs, against the same budget, under the same access rules. Cloudflare also says server tools are coming, so web search will eventually be built into the control plane instead of a tool you wire up yourself.

The launch landed in Birthday Week, and it clearly struck a nerve. The Hacker News thread hit 590 points and 284 comments, which is more than the Kitesurf browser launch pulled. Cloudflare's own announcement on X got a reply that sums up why people care:

"search in the same gateway as the model calls is the nice part. wiring exa into my agent tonight"

How a request moves through it

Before getting into money, it helps to see the moving parts, because every interesting decision sits in one of them.

Hand-drawn flow of one Web Search API request: your agent sends a query of up to 1,024 characters to AI Gateway, which handles logs, credits or your key, and access rules, then routes it to Ceramic.ai, Exa, or Linkup, which all return the same JSON with url, title, and description, up to 10 results, back into model context
Hand-drawn flow of one Web Search API request: your agent sends a query of up to 1,024 characters to AI Gateway, which handles logs, credits or your key, and access rules, then routes it to Ceramic.ai, Exa, or Linkup, which all return the same JSON with url, title, and description, up to 10 results, back into model context

You can call it two ways, both documented on the how-to page:

  • REST: POST https://api.cloudflare.com/client/v4/accounts/{account_id}/ai/websearch/, authenticated with a Cloudflare API token that has both Workers AI Read and AI Gateway Read permissions.
  • Workers binding: env.AI.websearch({ gatewayId, query, provider, limit }), which returns a standard Response you call .json() on.

The request has very few knobs, which tells you a lot about the design:

ParameterWhat it doesLimits
queryThe search text1 to 1,024 characters
providerWhich engine runs itceramic (default), exa, linkup
limitHow many results come back1 to 10, default 10
byokAliasUse a provider key stored on your gatewayFails with a 400 if not configured
gateway.idWhich AI Gateway to route throughEvery account has default

There is no date filter, no domain allowlist, no country parameter, and no "fetch the full page" option. Each provider runs in a fixed mode: Exa uses its auto search type with highlights as the description, and Linkup uses fast depth with raw results, per the providers page. If you need Exa's or Linkup's deeper modes, you call them directly.

The How to use Web Search API docs page, showing prerequisites and the REST endpoint with a curl example, as taken from the Cloudflare docs
The How to use Web Search API docs page, showing prerequisites and the REST endpoint with a curl example, as taken from the Cloudflare docs

The response is deliberately thin: an items array and a metadata block with your query, a request ID, and latencyMs. That thinness is the point. It drops straight into a model's context window without you writing a parser per provider, and Cloudflare's docs include a full example of wiring it as a web_search tool for a model like Gemma 4 running on Workers AI.

Why the provider parameter is the real pricing decision

Here is the table that matters. Every number below is from Cloudflare's providers page, checked on October 8, 2026:

Providerprovider valuePrice per 1,000 requestsZero Data RetentionWhat you get back
Ceramic.ai (default)ceramic$0.25YesOwn index of 40B+ pages, descriptions up to 8,000 characters
Linkuplinkup$5.00Yesfast depth, raw sourced results, no generated answer
Exaexa$7.00Noauto search type, query-relevant highlights as the description
Hand-drawn bar chart of price per 1,000 searches: Ceramic.ai default at $0.25 with ZDR yes, Linkup at $5.00 with ZDR yes, Exa at $7.00 with ZDR no, with a bracket marking a 28x gap
Hand-drawn bar chart of price per 1,000 searches: Ceramic.ai default at $0.25 with ZDR yes, Linkup at $5.00 with ZDR yes, Exa at $7.00 with ZDR no, with a bracket marking a 28x gap

Exa costs 28 times what Ceramic costs for the same request shape, and switching between them is one string. That is great for experimentation and dangerous for budgets, because nothing in your code changes when a teammate flips ceramic to exa in a config file. One HN commenter who posted the price list asked the right question:

Hacker News

"Does anyone have insights on the quality differences? Web search API pricing for AI agent usecases has always felt so expensive for what it is, but I have no grounding on the economics of running a web index."

Cloudflare's launch post includes a log screenshot that makes the per-search cost very concrete: a single exa/search call billed at $0.007, which is exactly $7.00 per 1,000.

AI Gateway log entry for an exa/search request costing $0.00700000 with a duration of 3,451 ms, billed through Unified Billing to the /websearch endpoint, as taken from Cloudflare's blog
AI Gateway log entry for an exa/search request costing $0.00700000 with a duration of 3,451 ms, billed through Unified Billing to the /websearch endpoint, as taken from Cloudflare's blog

The "no markup" line, read carefully

Cloudflare says searches are billed "at each provider's list API price, with no additional markup." That is true per search. But AI Gateway credits come from Unified Billing, and that page states that a 5% fee applies to all credits purchased: a $100 top-up is a $105 charge. So if you pay with credits, your effective rate is about 5% above list. If you bring your own key, the provider bills you directly and the credit fee does not apply to those searches.

Here is what that looks like at real volumes, assuming one search per request:

Searches per monthCeramic.ai (list / via credits)Linkup (list / via credits)Exa (list / via credits)
10,000$2.50 / $2.63$50.00 / $52.50$70.00 / $73.50
100,000$25.00 / $26.25$500.00 / $525.00$700.00 / $735.00
1,000,000$250.00 / $262.50$5,000.00 / $5,250.00$7,000.00 / $7,350.00

The 5% is a rounding error next to the provider choice. At a million searches a month, picking Exa over Ceramic is a $6,750 decision at list price; the credit fee on top is $350 at most. Agents rarely search once per task, either. A research loop that fires five searches per user question turns 200,000 questions into a million searches, which is how a "cheap" feature ends up on a finance review. If you want to plug in your own numbers, this calculator does the multiplication:

What Cloudflare normalized, and what it did not

This is the angle I think most coverage misses. Cloudflare made the three providers look identical at the API level. They are not identical in the ways that matter to a product team.

Hand-drawn two-column comparison: Cloudflare makes it the same lists one request format, one response shape, one log and one bill, verified-bot crawling, and a source link per result; still differs by provider lists price per 1,000, data retention, what you may store, index and ranking, and description length
Hand-drawn two-column comparison: Cloudflare makes it the same lists one request format, one response shape, one log and one bill, verified-bot crawling, and a source link per result; still differs by provider lists price per 1,000, data retention, what you may store, index and ranking, and description length

One X post put it better than I can:

"The catch is that a unified endpoint also makes search providers look interchangeable when result quality, coverage, ranking, and failure modes probably won’t be."

Three gaps are worth checking before you ship.

Data retention says two different things

The changelog entry says "all three support Zero Data Retention for requests made through Cloudflare." The providers page, updated the same day, lists Exa as "Zero Data Retention: No." Both pages still said that when I checked on October 8. An HN reader spotted it within hours, and someone from Exa replied:

Hacker News

"Thanks for raising this! We're looking into this discrepancy (I work at Exa)."

Until those match, I would plan as if the providers table is right. If your queries contain customer names, order numbers, or anything from a ticket, that makes Ceramic or Linkup the safer picks. Also note that Unified Billing's ZDR setting does not control AI Gateway logging; that is a separate switch.

What you can store is set by each provider's terms

Cloudflare unified the JSON. It did not unify the license. Simon Willison raised the question that every product with a "share this chat" button should ask:

Hacker News

"My number one question about search APIs is always if they allow you to store and resyndicate results you get from them."

He then quoted Ceramic's terms of service, which bar you from retaining, caching, or storing output beyond what is "reasonably necessary to display such Output to your authorized end users in the ordinary and real-time course of use." If your agent writes search results into a saved transcript, a knowledge base, or a cache, read the terms for the provider you pick. Exa and Linkup link their own terms from the same providers table.

Result quality is not a parameter

The cheapest provider is the default, and the docs frame Ceramic as built for "low-latency, low-cost search." Early testers found its index uneven:

Hacker News

"Tried one query on ceramic.ai (the default provider for cloudflare web search api): "qwen-3.8 flash next and rtx 5090 best inference setup" ... 0 results ... same query on google and ddg both yield proper results."

One anecdote is not a benchmark, and Exa's head of index made the fair point in the same thread that search quality varies by query type. But it is a reminder that an empty result set is a normal outcome your agent has to handle, not an edge case. More on why that matters below.

Cloudflare actually has two things called "web search" now, which confused a few readers. AI Gateway's older web search page, updated in June, covers proxying each model vendor's own search tool. The new API is a separate product.

OptionWhere search runsWho picks the resultsWorks with any model?
Cloudflare Web Search APICeramic.ai, Exa, or LinkupYou get raw results and decide what to pass inYes, including open models
Native tools via AI Gateway (Anthropic web_search_20250305, OpenAI web_search_preview, xAI web_search, Alibaba enable_search)Inside the model vendor's callThe modelOnly that vendor's supported models
Search-first APIs via AI Gateway proxy (Perplexity, Parallel)The providerThe provider's own endpointSeparate call, provider-specific format
Calling a search provider directlyThe providerYouYes, with one integration per provider

If you are on Anthropic's API or OpenAI's API and happy with their built-in search, the native tools are less plumbing. The Web Search API earns its place when you run open models, such as Kimi K3 or the models behind DeepSeek Harness, that have no search partner of their own. One HN commenter guessed at exactly that: the big coding agents come with search partners, and open models need search from somewhere.

Plenty of developers asked "why not call the providers directly?" The honest answer from the thread is procurement and budgets, not technology. One commenter described giving an agent a single Cloudflare token with spending limits instead of building a proxy per service:

Hacker News

"Instead I put my API keys to cloudflare, set limits, and gave the agent the CloudFlare token, and in minutes it could contact tens of services."

That lines up with what Cloudflare documents: spend limits per gateway, scoped by model, provider, or custom metadata. If your team already pays Cloudflare, adding search is a budget line, not a new vendor review. If you do not, a direct integration with Exa or a scraper like Firecrawl may be just as quick. The landscape is also shifting under everyone's feet: Google's Custom Search JSON API is closed to new customers, and existing ones have until January 1, 2027 to move.

Where this fits for a support agent, and where it does not

Here is my bias, stated up front. I have spent two years working in SEO, and the first thing it teaches you is that search intent decides everything. A customer asking "can I return this after 30 days?" is not asking the internet. They are asking you. The right source is your returns policy, not the top 10 results for "30 day return policy."

That matters because of a failure I have seen up close. I have seen paying eesel customers whose bot answered real customers with made-up claims when knowledge base retrieval came back empty; one reply pulled "Oxygen" off the periodic table. The fix was not more search. It was a hard fallback: when your own sources have nothing, hand off to a human instead of letting the model fill the gap from wherever it can. A general web search API makes that gap bigger, not smaller, because now the model has the whole internet to be confidently wrong from. The patterns are written up in eesel's guide to AI hallucinations in support.

So for support, I would rank sources like this:

  1. Your help center, macros, and past tickets. This is what retrieval-augmented generation for support should mean.
  2. Your own website and product docs, scoped to your domain.
  3. The open web, last, for questions that are genuinely about the outside world: a carrier's service outage, a public regulation, a third-party integration's changelog.

The Cloudflare Web Search API is a reasonable tool for that third bucket. It is not a replacement for the first two, and Cloudflare does not pitch it as one.

How eesel fits next to a search API

Web search is infrastructure. eesel is the employee. Cloudflare gives your agent a way to look things up; eesel gives you a ready-to-work teammate that already knows where your answers live. The AI helpdesk teammate joins your existing queue in tools like Zendesk, learns from your help center and past tickets, drafts or sends replies, and escalates when it does not have a grounded answer. The current roster also includes an AI blog writer for content teams.

eesel dashboard showing a Zendesk agent's activity feed with resolved and pending tickets, connected integrations including Zendesk, Slack, and two websites, and a chat panel for setup
eesel dashboard showing a Zendesk agent's activity feed with resolved and pending tickets, connected integrations including Zendesk, Slack, and two websites, and a chat panel for setup

If you are the kind of team that reads Cloudflare changelogs for fun, you will probably like the eesel CLI. It runs the same teammate from a terminal, and anything you set up there shows up in the dashboard. The commands map neatly onto the "your sources first" idea:

  • npx @eesel/cli init chat-bubble --site https://your-site.com creates an agent that starts reading your own site, with no account needed for a 7-day trial workspace.
  • eesel integrations connect website --url ... or eesel integrations connect <platform> adds your helpdesk or docs as knowledge, and eesel files upload ./refund-policy.pdf adds a single policy.
  • eesel chat "what's our refund policy?" tests the answer before a customer ever sees it.
  • eesel approvals lists actions held for a human, so a write the agent wants to make waits for sign-off.

Every command prints JSON and every error comes back with a hint, so a coding agent like Claude Code or Codex can run the whole setup and read its own results. eesel mcp token also turns the workspace into an MCP server, which is how I would connect it to an agent that already uses Cloudflare for search. It is the same pattern I covered in CLI for customer support: a terminal, scripts, and agents all driving one teammate.

Where eesel is not the right fit: if you are building a general research agent that lives on public web data, you want a search API like Cloudflare's, not a helpdesk teammate.

My verdict on the Cloudflare Web Search API

It is a clean, small, honest product. Three things I would do before relying on it:

  • Pin the provider explicitly, even if you want Ceramic. A default you did not write down is a default someone will change without noticing a 28x bill difference.
  • Treat the ZDR column as unsettled for Exa until the changelog and providers page agree, and read the storage terms for whichever provider you keep.
  • Handle zero results on purpose. Return "I don't know" or hand off, rather than letting the model improvise. That is the single habit that keeps AI grounding from becoming AI hallucination.

If you already build on Cloudflare, it is the easiest way I have seen to give an open model live search with one bill and one log. If you are evaluating search for a customer-facing agent, start with your own knowledge and add the web as the last resort. For more on the Cloudflare agent stack, see my notes on Clef decision models and the Kitesurf alternatives, or browse the wider field of AI search engines.

Try eesel for grounded support answers

If the reason you are looking at a web search API is that your support bot keeps answering from thin air, the fix is usually closer to home. eesel's AI helpdesk teammate learns from your help center, macros, and past tickets, and escalates to your team when it has nothing grounded to say. You can test it against your own knowledge base before it touches a live ticket, and see plans on the pricing page. Try eesel free.

Frequently Asked Questions

What is the Cloudflare Web Search API?
It is a search endpoint for AI agents that Cloudflare launched in open beta on October 2, 2026. You send a query through AI Gateway, pick one of three providers (Ceramic.ai, Exa, or Linkup), and get back a list of results with a URL, title, and description that you can pass into a model's context. Cloudflare does not run its own index; the providers do.
How much does the Cloudflare Web Search API cost?
Cloudflare web search API pricing is each provider's list price: $0.25 per 1,000 requests for Ceramic.ai, $5.00 for Linkup, and $7.00 for Exa. Paid with AI Gateway credits, there is no per-search markup, but buying credits carries a 5% fee. With your own provider key, the provider bills you directly. I walk through the arithmetic in the same style as my Clef pricing breakdown.
Which provider does the Cloudflare Web Search API use by default?
Ceramic.ai. If you leave out the provider parameter, every request goes to Ceramic, which is also the cheapest option and runs its own index of more than 40 billion pages. That is a sensible default for cost, but test it on your own queries before you trust it for grounding answers.
Does the Cloudflare Web Search API support zero data retention?
It depends on the provider. Cloudflare's providers page lists Ceramic.ai and Linkup as Zero Data Retention: Yes and Exa as No, while the launch changelog says all three support it for requests made through Cloudflare. An Exa engineer said on Hacker News they are looking into the discrepancy. Until the two pages match, treat the providers page as the one to plan around, especially if you handle customer data, as I cover in my hallucination prevention guide.
Can I bring my own Exa or Linkup API key?
Yes. You store the provider key on your AI Gateway under an alias, then pass byokAlias in the request. If you set the alias and it is not configured, the request fails with a 400 instead of quietly billing your Cloudflare credits. That is the same pattern Cloudflare uses for model keys, which I touch on in my OpenAI API keys explainer.
How many results does the Cloudflare Web Search API return?
Up to 10 per request. The limit parameter runs from 1 to 10 and defaults to 10, and the query itself is capped at 1,024 characters. Each result carries a URL and title, plus a description and optional image, favicon, and last-modified date when the provider returns them, which keeps the context window cost predictable.
Is the Cloudflare Web Search API good for customer support agents?
For public facts, yes. For your refund policy, no. A support agent should answer from your own help center and ticket history first, and only reach for the open web when the question is genuinely about the outside world. That is how eesel's AI helpdesk agent works: it reads your knowledge sources first and escalates to your team.

Share this article

Kurnia Kharisma

Article by

Kurnia Kharisma

Kurnia is a software engineer and writer at eesel AI with two years of SEO experience, writing about AI tools, helpdesk software, and customer support. He pairs a developer's understanding of how these products are built with search-driven research into what actually ranks and resonates with the people searching for them.

Related Posts

All posts →
Hand-drawn illustration of a kitesurfer flying a browser window as a kite beside the Cloudflare cloud mark, with a small server stack on the shore
Trending

Cloudflare Kitesurf: the agent browser that trades speed for scale

Cloudflare built a browser for AI agents in twelve weeks, with no Chromium underneath. It uses 3 to 7x less CPU and memory than Chromium and takes 1.7 to 1.8x longer on the clock. Browser Run bills the clock. Here is the architecture, the benchmark read honestly, the compatibility gate, and the arithmetic on who this is actually cheaper for.

Rama AdiRama AdiAug 24, 2026
Town AI pricing hero banner in Town's rust red, an AI assistant handing a person cards for email, calendar and tasks
Trending

Town AI pricing (2026): every plan, credit, and overage rate explained

Town AI pricing runs from a free plan to $199/month for individuals and $59 to $149 per seat for teams. Here is what a credit buys, when overage kicks in, and which plan fits.

KiraKiraOct 6, 2026
Hand-drawn illustration of a shop owner in an apron reading a monthly bill with three line items, next to a coffee mug and a potted plant
Trending

Meta Muse for Small Business pricing: the real monthly bill in 2026

Meta Muse for Small Business pricing is the normal $0, $20 or $100 Muse plan per person. The real bill also covers WhatsApp replies, Business Agent and your apps.

Kurnia KharismaKurnia KharismaOct 1, 2026
Hand-drawn illustration of a person texting a personal AI agent on a phone, next to a pie chart and a short list of cost lines
Trending

Instinct AI pricing: what it costs today and what you really pay

Instinct AI has no published price. Here is what the invite-only agent costs today, what you trade instead, how it plans to make money, and what rivals charge.

Rama AdiRama AdiSep 29, 2026
Tasklet on one side and Manus on the other, split by a green VS divider, in a head-to-head between two credit-based AI agents.
Trending

Tasklet vs Manus: which AI agent actually does the work? (2026)

Tasklet runs always-on automations across your stack; Manus builds a whole artefact from one prompt. Both bill by the credit. Here is how the two AI agents actually differ in 2026.

Kurnia KharismaKurnia KharismaSep 23, 2026
Grok Bot signing into your apps on one side and Zapier Agents built across a 9,000-app workflow grid on the other, split down the middle.
Trending

Grok Bot vs Zapier Agents: which AI agent does the work? (2026)

Grok Bot signs into your apps and drives them; Zapier Agents build on the biggest app-connector graph and bill by the activity. Here is how the two AI agents actually differ in 2026.

Rama AdiRama AdiSep 23, 2026
Grok Bot signing into your apps on one side and Tasklet running in its own cloud sandbox on the other, split by a green divide.
Trending

Grok Bot vs Tasklet: which AI agent actually does the work? (2026)

Grok Bot signs into your apps and drives them; Tasklet runs agents in its own cloud and bills by the credit. Here is how the two AI agents actually differ in 2026.

Rama AdiRama AdiSep 22, 2026
Two people each holding an autonomous AI agent, split by a slate-blue lightning bolt, in a Grok Bot vs Manus head-to-head.
Trending

Grok Bot vs Manus: which AI agent actually does the work? (2026)

Grok Bot signs into your apps and drives them; Manus runs its own cloud and bills by the credit. Here is how the two AI agents actually differ in 2026.

KiraKiraSep 22, 2026
Banner image for the Suno v6 review
Trending

Suno v6 review: I tested the new AI music models

A hands-on Suno v6 review: how v6, v6-wild, and v6-mini actually sound, the licensed-data pivot with Warner and BMG, what early testers say, pricing, and whether it beats v5.5.

KiraKiraSep 11, 2026

Ready to hire your AI teammate?

Set up in minutes. No credit card required.

Get started free