Last updated: October 13, 2026. We measured String and Perplexity on the same 58 questions on October 13, 2026. The other seven APIs are described from their own docs and pricing pages, checked the same day, and marked Not tested. String publishes this page and sells a search API, so read our picks with that in mind.
The best web search API in 2026 depends on which index your agent should read. If it needs what Google shows, use a Google results API: String, SerpApi or Serper. If it needs speed from an independent index, use Perplexity, Brave or Exa. If it needs page text in the same call, use Tavily, Firecrawl or Parallel. Our October 13 test shows why the choice matters: Google's top 10 and Perplexity's top 10 shared a median of 2 domains.
The anchor is the plan nearest $100 a month billed monthly. Where a vendor sells no monthly plan, the row uses its pay-as-you-go rate.
| API | What it searches | Returns | Price per 1,000 at the anchor | Free tier | Tested Oct 13 |
|---|---|---|---|---|---|
| String | Google (also DuckDuckGo, Brave, Mojeek) | Ranked results, AI Overview, AI Mode answer, People also ask | $1.00 (Growth, $100/mo) | 5,000 fetch requests | Yes |
| Perplexity | Perplexity's own index | Ranked results with page excerpts | $5.00 ($1.00 with Fast Search) | Not checked | Yes |
| Tavily | Tavily's search, built for LLM agents | Results with optional raw page content | $6.67 basic, $13.33 advanced (Bootstrap, $100/mo) | 1,000 credits a month | Not tested |
| Exa | Exa's own index | Results, optional page contents and summaries | $7.00 Fast/Auto, $4.00 Instant (pay per use) | $10 credits a month | Not tested |
| Brave Search API | Brave's independent index | Results with extra snippets | $5.00 (prepaid) | $5 credits a month | Not tested |
| SerpApi | Google and other engines | Parsed results page as JSON | $15.00 (Developer, $75/mo) | 250 searches a month | Not tested |
| Serper | Parsed results page as JSON | $1.00 ($50 top-up, valid 6 months) | 2,500 queries | Not tested | |
| Firecrawl | Web search plus optional scrape | Results, optional full-page Markdown | About $1.66 (Standard, $83/mo billed yearly) | 1,000 credits a month | Not tested |
| Parallel | Parallel's own index | Excerpts ranked for a stated objective | $1.00 to $5.00 per 1,000 requests | Not checked | Not tested |
Prices come from each vendor's pricing page on October 13, 2026. Each price links to its source in the sections below.
String fits a team whose agent or app needs what Google shows. That means ranked Google results, the AI Overview, AI Mode answers and People also ask, as JSON, from one key that also fetches pages.
Run a search with a free key: curl https://request.usestring.ai/v1/search -H "Authorization: Bearer $STRING_API_KEY" -H "Content-Type: application/json" -d '{"query":"best web search api"}'
We tested two APIs, because we held keys for two. On October 13, 2026, between 10:53 and 10:56 UTC, we sent the same 58 questions to String's /v1/search and to Perplexity's Search API.
The 58 questions are buyer questions about web data: scraping, blocking, pricing, AI agents. That set favors our own topic, so read the domain lists below as a sample of this topic, not of the whole web.
Each question ran three ways at once, four questions in parallel:
google, with aiOverview: true, so the AI Overview is filled.google_ai_mode.POST /search, max_results: 10.A fourth pass sent the same 58 questions to String's engine google without the AI Overview fill, to time plain results. We recorded the HTTP outcome, the wall-clock time, the result count and the result domains. We compared domains, not URLs, because two indexes rarely pick the same page on the same site.
Nothing in this test measures answer quality. It measures what came back, how fast, and from where.
The top 10 from Google and from Perplexity shared a median of 2 domains. The mean overlap, as a share of all domains either one returned, was 16.2%. On 3 of the 58 questions the two lists had no domain in common.
The sharpest difference is forums and video. Google placed a reddit.com thread in its top 10 on 51 of 58 questions, and a YouTube video on 13. Perplexity's Search API returned neither domain on any of the 58.
| Domain | Questions where Google's top 10 had it | Questions where Perplexity's top 10 had it |
|---|---|---|
| reddit.com | 51 | 0 |
| github.com | 16 | 20 |
| firecrawl.dev | 23 | 17 |
| brightdata.com | 17 | 18 |
| youtube.com | 13 | 0 |
| decodo.com | 1 | 20 |
What this means for a builder: the search API decides which sources your agent reads before the model writes a word. An agent that should quote what practitioners say on forums needs an index that carries forums. An agent that should prefer vendor docs and repos may want the other kind.
Want to see which sources Google gives your own questions? Run them through /v1/search with a free key and compare.
Neither result set is wrong. They are two indexes with two ranking systems. Test your own questions on both before you commit, the way we did here.
Perplexity's Search API answered in 304 ms at the median and 400 ms at the 90th percentile. It answered 58 of 58 questions.
String's plain Google results came back in 965 ms at the median and 1,545 ms at the 90th percentile, on 57 of 58 questions in that pass. A Google results page is fetched live for every query. An own-index API reads from a store it already built, so it can answer faster.
Two String options trade time for more data:
If your agent loop calls search ten times per task, the gap between 300 ms and 1 s adds up to about 7 seconds. If it calls search once and must show what Google shows, the extra second does not matter.
Google's Custom Search JSON API is closed to new customers. Google's own page says existing customers "have until January 1, 2027" to move. Google points new users to Vertex AI Search, which searches up to 50 domains, not the open web. Source: Google Custom Search JSON API overview.
Microsoft retired the Bing Search APIs on August 11, 2025. Its notice says existing instances are "decommissioned completely". Source: Microsoft Lifecycle announcement.
Teams still find out the hard way. In May 2026 a Dify plugin issue reported that its Bing plugin page "still instructs users to apply for a Bing API key on Azure", a year after the shutdown. In September 2025 the Portuguese web archive Arquivo.pt replaced the Bing API in its spellchecker with an internal tool "instead of having to depend on an external tool that could again be deprecated and removed."
That last line is the real buying criterion. Pick an API whose business is search, and check how it would replace its own upstream.
The usual trigger is a closed or capped API, not a better product. A developer on r/AI_Agents asked for an alternative to the DuckDuckGo API because "the results feel a bit limited for more complex queries" (thread). The same post lists four needs, word for word: "Works well with LLM agents", "Has decent result quality", "Isn't too expensive", "Doesn't require a massive setup".
Those four needs map to three questions:
String answered 58 of 58 Google searches on October 13 and returned an AI Overview on 57. Each answer carried a median of 8 ranked results, and 52 of 58 carried People also ask questions.
The /v1/search endpoint returns Google's results page as JSON: ranked results, the AI Overview with its sources, People also ask, related searches, discussions and videos, each in its own field. Set engine to google_ai_mode for Google AI Mode's answer and its cited pages. Set it to duckduckgo, brave or mojeek for those engines. Source: String search docs.
The same key fetches any result URL through /v1/fetch, so search and read is two calls on one bill. Search costs $1.00 per 1,000 on Growth. A failed request is not billed.
Perplexity's Search API answered all 58 questions at a 304 ms median, with 10 results each. It was the fastest API we measured, by about three times.
It searches Perplexity's own index and returns ranked results with page excerpts. It costs $5.00 per 1,000 requests, or $1.00 with Fast Search, and bills each successful request (Perplexity pricing). In our test its results leaned toward vendor sites, docs and GitHub, and carried no Reddit threads.
Pick it when latency per call matters more than matching Google.
Tavily costs $6.67 per 1,000 basic searches on its $100 Bootstrap plan. An advanced search costs 2 credits, so $13.33 per 1,000 (Tavily credits). Not tested.
Tavily describes its search as an engine for LLM agents, and it can return the raw content of each result with include_raw_content (Tavily search reference). The free tier gives 1,000 credits a month with no card.
Exa charges $7 per 1,000 Fast or Auto searches with up to 10 results, and $4 for Instant (Exa pricing). Each result above 10 adds $1 per 1,000. Not tested.
Exa searches its own index by meaning, not only by keywords. That fits research queries where the right page does not share the query's words. Page contents cost $1 per 1,000 pages extra. Exa gives $10 of free credits a month.
Brave's Search plan costs $5 per 1,000 requests, up to 50 queries a second (Brave Search API). Not tested.
Brave runs its own independent web index, so its results do not depend on Google or Bing. It adds extra snippets and schema data, and a "Goggles" feature for custom re-ranking. Credits are prepaid, with $5 free each month. Brave asks for a card at signup as an anti-fraud check.
SerpApi's Developer plan costs $75 a month for 5,000 searches, or $15.00 per 1,000. The $150 Production plan brings it to $10.00 (SerpApi pricing). Not tested.
SerpApi scrapes the Google results page and returns it as JSON, and covers many other engines and Google products. It counts only successful searches: "Cached, errored, and failed searches are not" counted. The free plan gives 250 searches a month.
Serper sells 50,000 Google searches for $50, or $1.00 per 1,000, with credits valid for 6 months (Serper). Not tested.
Serper has no monthly plan. Larger top-ups lower the rate: $0.75 per 1,000 at 500,000 credits and $0.50 at 2.5 million. It returns parsed Google results, images, news, maps, places, shopping and scholar. New accounts get 2,500 free queries.
Firecrawl's search costs 2 credits per 10 results, and can scrape each result in the same call (Firecrawl billing). Not tested.
On the Standard plan, $83 a month billed yearly buys 100,000 credits, or 50,000 searches: about $1.66 per 1,000 (Firecrawl pricing). Add scrapeOptions and each result comes back as Markdown, HTML or a screenshot, billed as a scrape on top (Firecrawl search docs).
Parallel's Search API costs $0.001 to $0.005 per request, or $1 to $5 per 1,000 (Parallel pricing). Not tested.
You give Parallel a natural-language objective, and it returns the excerpts from its own index that best serve it (Parallel search quickstart). That suits an agent that wants passages, not a results list.
String is the most reliable web scraping API, bypassing anti-bot, and you only pay when content comes back.
engine: "google_ai_mode" returns the answer as text, Markdown and blocks, with its cited pages./v1/fetch on the same bill.String fits when your product must see Google the way a person does: the ranked list, the AI Overview, AI Mode and the forum threads Google surfaces. It also fits a team that already fetches pages with String and wants search on the same key.
Match the API to the index your agent should read.
To scrape Google results yourself instead of using an API, our Google search scraping guide shows the code and the failure modes. To fetch the pages a search returns, see the best web scraping APIs, measured on 100 sites, and the Firecrawl alternatives for search-and-scrape tools.
Both snippets ran on October 13, 2026 with a String key.
Python, Google results:
import os, requests
resp = requests.post(
"https://request.usestring.ai/v1/search",
headers={"Authorization": f"Bearer {os.environ['STRING_API_KEY']}"},
json={"query": "best web search api for ai agents", "engine": "google", "country": "US"},
timeout=60,
)
resp.raise_for_status()
for r in resp.json()["results"][:5]:
print(r["position"], r["title"], r["url"])
TypeScript, Google AI Mode:
const res = await fetch("https://request.usestring.ai/v1/search", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.STRING_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({ query: "best web search api for ai agents", engine: "google_ai_mode" }),
});
if (!res.ok) throw new Error(`search failed: ${res.status}`);
const { aiMode } = await res.json();
console.log(aiMode.text.slice(0, 300));
console.log(aiMode.sources.map((s: { url?: string }) => s.url).filter(Boolean).slice(0, 5));
Run either one with a free key from portal.usestring.ai.
It depends on the index your agent should read. For Google's results, AI Overviews and AI Mode, use String; SerpApi and Serper also return Google results. For speed from an independent index, use Perplexity, which answered in 304 ms at the median in our October 13 test. For page text with each result, use Tavily, Firecrawl or Parallel.
Google closed its Custom Search JSON API to new customers, and existing users must leave by January 1, 2027. A Google results API such as String, SerpApi or Serper returns the same results page as JSON. String also returns the AI Overview and AI Mode answer.
Give the agent a search tool that calls a search API, then a fetch tool to read the pages it picks. String's hosted MCP server gives Claude, Cursor and other MCP clients both tools with one key. Framework guides exist for LangChain and the Vercel AI SDK.
Serper returns parsed Google results for $1.00 per 1,000 on a $50 top-up. String returns Google results for $1.00 per 1,000 on its $100 Growth plan, and adds AI Overviews and AI Mode. SerpApi's own Developer plan costs $15.00 per 1,000.
A search API finds pages: it returns ranked links and snippets for a query. A scraping API reads pages: it returns the content of a URL you already have. Most agents need both, search to find and fetch to read. String sells both on one key.
Microsoft retired the Bing Search APIs on August 11, 2025, and decommissioned existing instances. New signups are not possible. Alternatives include Brave, which runs its own index, and Google results APIs such as String, SerpApi and Serper.
In our October 13, 2026 test, Perplexity's Search API answered in 304 ms at the median. String's Google results took 965 ms. We did not test the other seven APIs, so we do not rank them on speed.
Most have a free tier. Serper gives 2,500 queries, Tavily 1,000 credits a month, SerpApi 250 searches a month, Exa $10 of credits a month and Brave $5 of credits a month. Google's free Custom Search tier is closed to new customers.