How to choose
Should You Use Built-In LLM Web Search or a Search API?
Built-in LLM web search suits sourced answers; a search API suits retrieval control, local models and SERP fields. Here's how to compare total cost.

I would use built-in LLM search for a model-authored sourced answer, and a separate search API when the application needs explicit retrieval controls, local inference or SERP fields. That is an architectural choice: built-in tools may decide whether to search, while a custom tool needs application code to execute the retrieval and return its results. OpenAI search, function calling.
Short on time?
Here's my take
- Sourced generated answer
- Built-in search tool
- Prefer it when the model’s output, citations and usage terms fit the application.
- Explicit retrieval controls
- Separate search API
- Choose the search/fetch path, source fields and local inference boundary deliberately.
- Budget comparison
- Whole-path cost worksheet
- Count actual searches, extraction, model context and retries in their own units.
Prices verified . Sponsors cannot buy a verdict or a position.
Which path matches the output you need? #
Use built-in search for a sourced model answer; choose a separate retrieval API for explicit result fields, page passages or local-model context. These are different deliverables; a citation does not establish that you received a complete source page or an organic rank position. OpenAI search output, Perplexity Search, SerpentAPI output.
| Decision | Built-in model search | Separate retrieval API |
|---|---|---|
| Main output | Model answer with provider-specific citations/tool records | API rows/content your application supplies to a model |
| Search execution | Model/provider workflow can choose tool use | Application executes selected retrieval calls |
| Local inference | Not the hosted model-integrated path | Can return retrieved context to a local model |
| Cost accounting | Tool calls plus model/search-content tokens | Search/fetch/extras plus chosen inference costs |
| Storage/reuse | Follow tool/provider contract | Still requires provider/content rights |
Sources: OpenAI tool behavior, custom tools, Perplexity Agent, Gemini terms, Brave terms. Specifications verified 2026-11-10.
When would I use built-in search? #
I would start with it when the application needs a sourced answer and the provider’s tool behavior, display rules and data handling fit. The shorter integration path is a reason to inspect it, not evidence that it is faster, more accurate or cheaper. No outcome comparison was performed here.
OpenAI Responses search returns tool actions and citation annotations; the model can skip searching, and visible/clickable citations need to remain in the displayed answer. Its modern web_search and legacy preview tools also have different tariffs. Search guide, pricing.
Claude search exposes controls including max_uses and domain settings. The basic 20250305 tool remains documented, while newer 20260209/20260318 versions add capabilities; an older code sample should not be labeled the latest path. Fetch is another operation, with token costs even where there is no additional fetch fee. Search tool, fetch tool, pricing.
Gemini grounding supplies its own search suggestions/citation requirements and restricts harvesting grounding links for indexes or crawl queues. Perplexity separates raw Search from typed Agent answers, with current Sonar migration requirements. Those contracts should shape the application before provider-rate arithmetic does. Gemini grounding, terms, Perplexity Search, Agent, migration.

When would I use a separate API? #
I would choose a separate API when the application must select retrieval depth/filters, inspect explicit result fields, fetch permitted sources independently or send bounded source context to a local model. Host code must execute the custom search tool and return results; declaring a schema does not itself grant network access. Function calling.
The path becomes application/model → chosen search → optional permitted fetch/rerank → source context → chosen model → answer. I would preserve source identifiers and URLs through that path, cap tool iterations and avoid treating untrusted page content as instructions for the application.
Exa’s search mode, requested results and Contents type/page units differ from Tavily’s Search depth and extraction credits. Brave Search, Parallel and Linkup also have distinct output and billing menus. A separate API gives configuration choices, but the chosen output must still satisfy the application’s own checks. Exa, Tavily, Brave, Parallel, Linkup.
SerpentAPI at apiserpent.com is relevant when explicit Google organic/SERP data is the job. Web rates are $0.60/$0.30/$0.10/$0.05/$0.03 per 1,000 units at Default/Growth/Scale/Enterprise/Enterprise Plus, with the paid tiers reached by deposits of $100/$500/$1,000/$1,250; your best deposit in a calendar month sets the price for that month’s deposits. Quick is one unit and organic-only; Deep counts requested pages. Pricing, API documentation.
Credit you already hold keeps the price you bought it at, purchased credit does not expire, and no public SLA/indemnity was verified. Pricing, docs, FAQ, terms.
How should I compare the total cost? #
My worksheet is search use + extraction/rerank + model input/output/context + retries + hosting, subtracting only an eligible unused allowance. Keep each component’s unit visible and do not assume equal result quality or equal model context across products.
| Documented input, USD verified 2026-11-10 | Unit | What the headline omits |
|---|---|---|
| OpenAI modern search: $10/1,000 | Search calls | Model-priced search-content and other model tokens |
| Claude search: $10/1,000 | Searches | Model tokens; fetch can also add tokens |
| Gemini 3+ grounding: rates in my grounding pricing guide | Executed queries | Model tokens; prompts can cause multiple queries |
| Perplexity raw standard/Fast: $5/$1 per 1,000 | Successful requests | Different from Agent tool-plus-token billing |
| Tavily PAYG: $0.008/credit | Basic one / advanced two credits | Extraction/Research; no assumed free/PAYG stacking |
| Firecrawl ordinary Search: two credits/ten results rounded up | Search results | Page scraping/PDF/extraction adds other units |
Inputs: OpenAI pricing, Claude search, Gemini pricing, Perplexity pricing, Tavily credits, Firecrawl Search.
For 1,000 hypothetical answers with exactly three billable OpenAI modern or Claude searches each, the search fee is 3,000 × $10/1,000 = $30. That is not an all-in answer price: model/search-content tokens and any other operations still need their own inputs. OpenAI pricing, Claude pricing.
Perplexity raw Fast Search is a search_type choice, not its Agent fast effort level. Search permits multiple queries in one successful request but counts rate-limit query units separately; a low request price is not a guaranteed answer cost. Fast Search, Search quickstart, rate limits.
Exa’s first-team grants/purchase-conditioned limits and Firecrawl’s annual-equivalent advertised price also belong in the worksheet. Consumption rates, cash purchase requirements and free allowances should remain separate. Exa billing, Firecrawl plans.

Does MCP replace the search API? #
No. MCP standardizes how servers make tools available to a host, while the underlying search provider still supplies results and charges according to its account/tool rules. A server connection does not make every search operation free or its output suitable for every model. For example, apiserpent.com’s hosted MCP server bills each tool call as the matching REST call, at the same prices. SerpentAPI documentation.
I would inspect the exact tool schema and result shape before treating an MCP tool as an API substitute. A model-generated answer, a tool’s structured result and a visible citation are separate layers; review the search MCP guide for those choices.
What about privacy and data rights? #
Neither path is private by default: local inference does not localize an external search query. Even OpenAI’s external_web_access: false, which OpenAI calls an offline/cache-only mode, still runs search on OpenAI’s service rather than as a local private engine; endpoint/tool-specific data controls still apply. Search behavior, data controls.
A separate API also does not automatically grant rights to retain, train on or redistribute results. Brave has storage/evaluation conditions, Tavily restricts performance disclosure, Parallel bars copying or storing one end customer’s output for others, and Gemini restricts certain grounding-output uses. Brave terms, Tavily terms, Parallel terms, Gemini terms.
Perplexity’s privacy documentation is conditional around zero-data-retention. Its API terms say customer content is not used to train generative AI models, but third-party model providers’ own terms also apply, and I did not complete a legal review. I would review the selected contract before sending confidential prompts rather than infer safety from a provider category. Privacy/security, API terms.
For a custom fetch path, my proposed requirements are approved public URLs, redirect/private-address checks, bounded calls/bytes/tokens and preserved visible sources. Gemini URL context’s supplied-public-URL limits are a different contract from unrestricted crawling. URL context, Gemini quotas.
Which one would I pick? #
For a sourced model answer, I would first inspect the current model-integrated tool and its UI/data obligations. For a local-model application or explicit retrieval fields, I would inspect a separate API and budget the adapter, permitted fetch and inference path together.
I did not establish a universal cheapest or most accurate route. One Google forum discussion about multiple grounding queries is a useful warning about units, not a representative comparison of providers. Forum discussion.
The search API pillar, local LLM guide, Google grounding guide, Perplexity pricing and web search API price comparison cover the next decisions.
FAQ #
Is a separate search API always cheaper? #
No. Compare actual search, extraction, model-context, retry and hosting costs. Different outputs and billing units do not establish equal usable answers. OpenAI pricing.
Can I add web search to a local model? #
Yes, through host-managed retrieval that returns context to the local model. External search providers still receive the queries you send. OpenAI function calling.
If I turn on search, will the model always search? #
No. A model-integrated tool can be available without being invoked for every prompt. Inspect actual tool actions rather than assume a fixed call count. OpenAI web search.
Does MCP replace the search provider? #
No. It exposes tools to a host; the underlying provider, output contract, account and billing remain separate. Perplexity API MCP.
Can I keep search results and reuse them later? #
Not automatically. Storage, redistribution, training and grounded-display rights depend on the selected provider and content contract. Gemini additional terms.
Is OpenAI’s cached-only web search private and offline? #
Offline only in OpenAI’s sense. external_web_access false runs search in an offline/cache-only mode with no live fetching, but the search still runs on OpenAI’s service; it does not make search local or erase applicable data controls. OpenAI web search.
Sources
38 sources, accessed .
Official pricing, docs, changelogs and status pages 37
- OpenAI web search
- OpenAI pricing
- OpenAI function calling
- OpenAI data controls
- Claude web search
- Claude pricing
- Claude web fetch
- Gemini Search grounding guide
- Gemini pricing
- Gemini additional terms
- Gemini rate limits
- Gemini URL context
- Perplexity pricing
- Perplexity Search quickstart
- Perplexity Fast Search
- Perplexity Agent quickstart
- Perplexity Sonar migration
- Perplexity Agent web search
- Perplexity rate limits
- Perplexity privacy and security
- Perplexity API terms
- SerpentAPI pricing
- SerpentAPI FAQ
- SerpentAPI API documentation
- SerpentAPI terms
- Tavily credit documentation
- Tavily terms
- Exa pricing
- Exa billing
- Brave API pricing
- Brave API terms
- Parallel pricing
- Parallel customer terms
- Linkup pricing
- Firecrawl Search
- Firecrawl plans
- Perplexity API MCP


